В зависимости от моего значения IS_HTTP, я решаю после кода ниже, должен ли URL быть https или http.
Я хочу всегда http (перенаправленный из https) для http://mydomain.com
(имеет пустое значение QUERY_STRING), http://mydomain.com/?q=home
, http://mydomain.com/?qq=home
.
И приведенный ниже код отлично работает для таких URL, он устанавливает IS_HTTP в 1. Все идеально. Но я также хочу, чтобы URL-адреса для папки администрирования всегда были httpS, поэтому я хочу исключить такие URL-адреса из этого блока.
Вот почему я добавил вторую строку в приведенный ниже код, но это не мешает таким URL-адресам применять RewriteRule ^ - [E=IS_HTTP:1]
. Почему?
#determine if page is supposed to be http
RewriteCond %{REQUEST_URI} !^administration [NC]
#if it has q=home or qq=home in querystring
RewriteCond %{QUERY_STRING} (^|&)(q=home|qq=home)(&|$) [NC,OR]
#or if query string is empty
RewriteCond %{QUERY_STRING} ^$
#set env var to 1
RewriteRule ^ - [E=IS_HTTP:1]
Опять же, я хочу, чтобы https://mydomain.com/administration/index.php
и все другие файлы из папки / администрирования были остановлены до RewriteRule ^ - [E=IS_HTTP:1]
Почему приведенный выше код НЕ останавливает их?
Вторая строка, которую я пробовал, была:
RewriteCond %{REQUEST_URI} !^administration [NC]
RewriteCond %{REQUEST_URI} !^/administration [NC]
но ни один из них не работает. (Я считаю, что / здесь не нужно, поскольку REQUEST_URI не начинается с /, но я могу ошибаться).
Спасибо.