.htaccess RewriteRule: перенаправляет http на https всегда (работает нормально), но 1 исключение все еще необходимо ... - PullRequest
0 голосов
/ 19 января 2012

Похоже,

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

отлично работает и перенаправляет все запросы http на страницы https. В результате

http://mydomain.com/?p=abc
http://mydomain.com/?q=de
http://mydomain.com/?z=123
http://mydomain.com/

перейти к https://

https://mydomain.com/?p=abc
https://mydomain.com/?q=de
https://mydomain.com/?z=123
https://mydomain.com/

соответственно.

Как сохранить http://mydomain.com/ без перенаправления на https? Критерии: если нет параметров (no? P, no? Q, no? Z и т. Д.), Оставайтесь на http.

Спасибо

Ответы [ 2 ]

1 голос
/ 19 января 2012

Если вы хотите остаться по HTTP, когда строка запроса пуста, используйте приведенное ниже решение № 1.

Если вы хотите сохранить HTTP только при наличии параметров p, q или z, закомментируйтеРешение № 1 и раскомментируйте решение № 2.

RewriteCond %{HTTPS} off
#1 if query string is not empty
RewriteCond %{QUERY_STRING} !^$
#2 only if p or q or z params are not present
#RewriteCond %{QUERY_STRING} !(^|&)(p|q|z)= [NC]
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
0 голосов
/ 19 января 2012

Используйте этот код для ваших условий:

RewriteCond %{HTTPS} off
RewriteCond %{QUERY_STRING} !^$
RewriteCond %{REQUEST_URI} !^/*$
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
...