htaccess исключая 1 папку из перезаписывающих - PullRequest
0 голосов
/ 12 февраля 2012

В зависимости от моего значения 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 не начинается с /, но я могу ошибаться).

Спасибо.

1 Ответ

0 голосов
/ 12 февраля 2012

Вместо этого условия:

RewriteCond %{REQUEST_URI} !^administration [NC]

имеют это условие:

RewriteCond %{REQUEST_URI} !^/+administration [NC]

Помните, что %{REQUEST_URI} всегда начинается с косой черты и может иметь несколько косых черт, если введено следующеепуть в браузере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...