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ć