Что означает это правило перезаписи? - PullRequest
7 голосов
/ 15 января 2010

Я устанавливаю phpancake, там есть папка вот такая вот

application/
install/
library/
public/
sql_schema/
install.html
install.php

Что означает это правило?

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /vote/public/index.php [NC,L]

Ответы [ 3 ]

11 голосов
/ 15 января 2010

Перезапись состоит из двух частей. Первый указывает, что если запрошенное имя файла является обычным файлом с размером больше 0 (-s), символической ссылкой (-l) или каталогом (-d), переписать в никуда, например. не предпринимать никаких действий [NC,L] означает, что правило не учитывает регистр, и последнее правило, которому соответствуют эти условия.

Все остальные запросы направляются на /vote/public/index.php.

Целью этого переписывания является то, что фактический, существующий файл может быть получен с сервера без помех. Без первого правила каждый запрос к файлу (файлы css и js, изображения и т. Д.) Шел бы на index.php, что могло бы очень сильно испортить ситуацию.

Обычно это написано в одной декларации. Вы можете отменить условия, а затем вывести также [OR] государственных деятелей:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /vote/public/index.php [NC,L]

Это эквивалентно исходному утверждению.

0 голосов
/ 15 января 2010

Первое правило будет проходить через все запросы, которые могут быть сопоставлены с обычным файлом с размером больше нуля (-s), символической ссылкой (-l) или каталогом (-d). Каждый второй запрос извлекается вторым правилом и переписывается в / voice / public / index.php .

0 голосов
/ 15 января 2010

Это в основном стандартные перезаписи, которые проверяют, существует ли запрошенный файл (или каталог, или символическая ссылка) на диске, в этом случае файл / каталог / и т. Д. следует использовать.

Все остальные совпадения должны идти в /votes/public/index.php

...