2010-09-17 4 views
1

Что делает эта строка в .htaccess, и когда мне это нужно?переписать правило в .htaccess: что он делает

RewriteRule !.(js|css|ico|gif|jpg|png)$ index.php 

Я работаю с Зенд, и я заметил, .htaccess, порожденную Зенд не имеет это правило, но я видел учебник, который имеет его без объяснения причин.

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

ответ

4

Это RewriteRule перенаправлять каждый запрос кроме запросов для этих типов файлов (JS, CSS, иконки, GIF/JPG/PNG графика) до index.php.

Это так, что запросы на статические ресурсы не получают обработаны index.php (который, как правило, хорошая вещь, потому что, начиная экземпляр PHP дорого.)

Это, однако, уже обрабатываются в блоке кода ниже. Эта часть:

RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 

Исключает Перенаправление на index.php для файлов, которые физически существуют (-s); символические ссылки (-); и существующие справочники (-d).

Если вы используете второй блок, который вы цитируете (тот, который был создан Zend), все в порядке.

Reference in the Apache manual

1

Правило:

RewriteRule !.(js|css|ico|gif|jpg|png)$ index.php 

в основном говорит: «Если запрос не заканчивается ($) с .js/CSS/ICO/GIV/JPG/PNG переадресовать его индексировать (!) .php».

Вам понадобится это правило, чтобы избежать отправки изображений/таблиц стилей и js-скриптов, передаваемых в index.php.

Смежные вопросы