![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 104 Pomógł: 3 Dołączył: 13.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Czy ktos wie, czemu po zastosowaniu takiej reguly w mod-rewrite
Kod RewriteCond %{HTTPS} ^on$ RewriteRule ^([a-z]+)$ http://%{HTTP_HOST}/$1.php [R] i wpisaniu w przegladarce np : https://domena/index przekierowuje mnie na http://domena/index.php zamiast http://domena/index Dla mnie jest to co najmniej dziwne |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 790 Pomógł: 7 Dołączył: 6.02.2003 Skąd: Polska Ostrzeżenie: (0%) ![]() ![]() |
rotfl
Bo mu tak kazałeś. $1.php masz w regule. jak dasz samo $1 to będzie dobrze. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 104 Pomógł: 3 Dołączył: 13.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Nie pisz proszę głupot jeżeli nie jesteś pewny, bo inny to też czytają.
$1.php określa do czego apache ma się odwoływać a nie, co pokazywać w pasku adresowym. Podałem wyraźnie, że problem polega z przejściem z https na http. Pozdrawiam |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Ale kolega ma rację. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
RewriteRule ^([a-z]+)$ http://%{HTTP_HOST}/$1.php [R] |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 104 Pomógł: 3 Dołączył: 13.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Oj, kolega chyba nie ma racji.
Jak w takim razie mod-rewrite bedzie wiedzialo do jakiego pliku sie odniesc ? Odsylam do podstaw |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
To już nie sprawa mod_rewrite, tylko przeglądarki, bo dajesz flagę [R], która nakazuje przeglądarce przejście pod nowy adres. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
To tak samo, jakbyś dał:
Spróbuj najpierw, a nie uczysz się pływać na sucho. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) IPB kisi adres, tu powinno być przekierowanie via PHP Ten post edytował erix 3.12.2008, 23:16:18 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 104 Pomógł: 3 Dołączył: 13.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Kolejny madry bez retorycznej odpowiedzi. Tym razem zawodowy ratownik.
To, ze robi, przekierowanie, to ja doskonale wiem. Zalozmy taki scenariusz. Jestem na formularzu z adresem: Kod https://domena/forma/pl teraz klikam na link: "/strona" I po sprawdzeniu innej reguly, ktora nakazuje wszystkim stronom nie spelnaiajacym warunku (forma/pl) przekeirowanie na http, zostane przekierowany na Kod http://domena/strona.php I teraz, jezeli jeszcze raz klikne na ten sam link "/strona" regula zadziala i pojawi sie w pasku adresowym: Kod http://domena/strona Czyl regula dziala, ale problem pojawia sie tylko w przejsciu z https na http Prosilbym, jezeli nie wiecie co z tym zrobic, to nie odpowiadajcie, bo naprawde szkoda czasu. Pozdrawiam Ten post edytował redman2 4.12.2008, 09:47:12 |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Kolejny madry bez retorycznej odpowiedzi. Tym razem zawodowy ratownik. A Ty zamotałeś pytanie. Jakoś i ~Seaquest zrozumiał problem tak samo, jak ja. Cytat Czyl regula dziala, ale problem pojawia sie tylko w przejsciu z https na http Sory, ale jakoś do tej pory nie mogę się dowiedzieć, w czym masz problem. Piszesz problem, ale JAKI, to już nie: Cytat ale problem pojawia sie tylko w przejsciu z https na http Czyli nie przekierowywuje? Czy przekierowywuje, ale mod_rewrite olewa inne regułki? Pisz konkretnie, to szybciej coś poradzimy. Najlepiej wklej wszystkie regułki przepisywania. |
|
|
![]()
Post
#9
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Eh?
1. Podajesz jedna z wielu regulek i tylko na jej podstawie mamy wiedziec co zle zrobiles? 2. Nadal nei rozumiem co chcesz osiagnac 3. Z tego co widze Kod RewriteCond %{HTTPS} ^on$ RewriteRule ^([a-z]+)$ http://%{HTTP_HOST}/$1.php [R] robisz redirecta z httpS do samego http. 4. RTFM Cytat 'redirect|R [=code]' (force redirect) Prefix Substitution with http://thishost[:thisport]/ (which makes the new URL a URI) to force a external redirection. If no code is given, a HTTP response of 302 (MOVED TEMPORARILY) will be returned. If you want to use other response codes, simply specify the appropriate number or use one of the following symbolic names: temp (default), permanent, seeother. Use this for rules to canonicalize the URL and return it to the client - to translate ``/~'' into ``/u/'', or to always append a slash to /u/user, etc. Note: When you use this flag, make sure that the substitution field is a valid URL! Otherwise, you will be redirecting to an invalid location. Remember that this flag on its own will only prepend http://thishost[:thisport]/ to the URL, and rewriting will continue. Usually, you will want to stop rewriting at this point, and redirect immediately. To stop rewriting, you should add the 'L' flag. While this is typically used for redirects, any valid status code can be given here. If the status code is outside the redirect range (300-399), then the Substitution string is dropped and rewriting is stopped as if the L flag was used. wykona ci: header( "Location: ....php" ) => czyli wykona kolejny request do web serwera => czyli zmieni URL w przegladarce a Kod RewriteRule ^([a-z]+)$ http://%{HTTP_HOST}/$1.php [R] oznacza przeciez: dopisz ".php" do request urla i przenies sie na http bez "S" |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 104 Pomógł: 3 Dołączył: 13.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Troszkę nie do końca. Dobra, spróbuję z innej beczki.
Mam serwis, w którym występują takie reguły mod-rewrite (na przykladzie) Kod http:// domena/nazwa.php?query => http://domena/nazwa?query http://domena/nazwa_nazwa2.php => http://domena/nazwa/nazwa2?query http://domena/nazwa_nazwa2_nazwa3.php => http://domena/nazwa/nazwa2/nazwa3?query Dla kilku "nazw" muszę zastosować zabezpieczenie https, np: Kod http://domena/form_pl.php => https://domena/form/pl Rozwiązałem to w następujący sposób: Kod RewriteCond %{HTTPS} !^on$ RewriteCond %{REQUEST_URI} ^/(form|kontakt|rejestruj|haslo|admin) [NC] RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301] RewriteRule ^([a-z]+)/?$ /$1.php [L,QSA] RewriteRule ^([a-z]+)/+([a-z0-9]+)/?$ /$1_$2.php [L,QSA] RewriteRule ^([a-z]+)/+([a-z0-9]+)/+([a-z]+)/?$ /$1_$2_$3.php [L,QSA] Problem pojawia się przy powrocie z zabezpieczonych stron do stron niezabezpieczonych : Kod RewriteCond %{HTTPS} !^on$ RewriteCond %{REQUEST_URI} ^/(form|kontakt|rejestruj|haslo|admin) [NC] RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] RewriteCond %{HTTPS} ^on$ RewriteCond %{REQUEST_URI} !^/(form|kontakt|rejestruj|haslo|admin) [NC] RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L] RewriteRule ^([a-z]+)/?$ /$1.php [L,QSA] RewriteRule ^([a-z]+)/?$ /$1.php [L,QSA] RewriteRule ^([a-z]+)/+([a-z0-9]+)/?$ /$1_$2.php [L,QSA] RewriteRule ^([a-z]+)/+([a-z0-9]+)/+([a-z]+)/?$ /$1_$2_$3.php [L,QSA] Przejście to wykonuje się poprawnie, ale z kolei występuje błąd weryfikacji certyfikatu. I tak np. Firefox, dla zabezpieczonych stron robi przekierowanie na https, ale nie weryfikuje tego poprawnie, pokazując bląd: Ta witryna nie dostarcza informacji na temat swej tożsamości a IE z kolei nie wyświetla żadnego błędu a tym bardziej kłódki. I co z tym zrobić (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 26.08.2025 - 10:06 |