Чего добиваются строки 2 и 3 в этом файле .htaccess? - PullRequest
0 голосов
/ 13 марта 2012

Эта конфигурация используется для перезаписи URL-адреса в подкаталог с целью управления версиями, а также для помещения всей строки запроса в одну переменную GET, называемую «запрос», чтобы убрать вопросительный знак из URL-адреса.

RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]
RewriteRule (www/.*)$ 2.0/public/$1 [L]
RewriteRule ^(.*+)$ 2.0/public/index.php?request=$1 [L]
DirectoryIndex index.php

Я исправил это вместе, и каким-то чудом это работает для моих целей, но я все еще не уверен на 100%, почему.Мне нужно, чтобы все эти строки работали правильно.В частности, мне нужна помощь со строками 2 и 3.

Я понимаю, что флаг [L] прекращает обработку перезаписи текущего запроса, а затем создает новый запрос, который должен быть обработан снова в соответствии с правилами(так что это, вероятно, объясняет строку 2).Какова цель строки 3?

Ответы [ 2 ]

0 голосов
/ 13 марта 2012

Строка 2 сначала проверяет, является ли это запросом на перенаправление с использованием ENV: REDIRECT_STATUS, а если это запрос на перенаправление, то немедленно завершает обработку в строке 3.

Возможно, вы захотите проверить Переписать шпаргалку , чтобы понять другие функции mod_rewrite.

0 голосов
/ 13 марта 2012

Давайте сначала нумеруем ваши строки, потому что неясно, на что вы ссылаетесь:

1. RewriteEngine On
2. RewriteCond %{ENV:REDIRECT_STATUS} 200
3. RewriteRule .* - [L]
4. RewriteRule (www/.*)$ 2.0/public/$1 [L]
5. RewriteRule ^(.*+)$ 2.0/public/index.php?request=$1 [L]
6. DirectoryIndex index.php

Теперь давайте попробуем объяснить, что означает каждая строка:

  1. Turnпри перезаписи URL.
  2. Если запрошенный файл был найден
  3. ..., просто верните его и остановите.
  4. В противном случае, если URL начинается с "www /",затем перенаправьте в подпапку «2.0 / public /» и добавьте всю строку запроса.
  5. В противном случае, если URL имеет хотя бы 1 символ после имени домена, тогда перенаправьте в «2.0 / public / index.php?request = "и добавить всю строку запроса в качестве параметра.
  6. Указывает обработчик по умолчанию.
...