2013-12-02 5 views
0

Я просто начинающий, пытающийся узнать о HTACCESS, но, похоже, ничего не нашел в Google, который объяснит, что означает этот код ниже. Я знаю это для создания довольно URL-адресов, но что такое длинное описание. Пожалуйста, кто-нибудь может помочь мне в этом объяснить профессионалы или эксперты. Благодаря!Что говорит этот код в HTACCESS

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

ответ

2

Давайте посмотрим на него построчно

<IfModule mod_rewrite.c> 

Это говорит о том, что все, что между тегами должны быть прочитаны только в том случае, если и только если установлен mod_rewrite и включен на целевом сервере.

RewriteEngine On 

Включает RewriteEngine. Без него никакие RewriteRules не вступают в силу. (docs)

RewriteBase/

RewriteBase используется при перенаправлении запроса. Насколько мне известно, никогда не помешает установить его, хотя иногда это происходит автоматически. (docs)

RewriteRule ^index\.php$ - [L] 

Это первый RewriteRule. Если запрос сделан http://example.com/index.php (с строкой запроса или без нее), URL-адрес не будет перезаписан. Значение [L] означает, что если это правило соответствует, это последнее правило, которое будет соответствовать во время этого «прохода» через файл. Поскольку URL не переписывается, дальнейшие «проходы» через файл .htaccess не выполняются.

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

Если предыдущее правило не совпало, оно будет пытаться соответствовать этому правилу. Это правило соответствует любому URL-адресу не менее 1 символа. Запрос http://example.com не соответствует этому правилу. Если первая часть RewriteRule будет соответствовать, она проверит условия. Первое условие проверяет, является ли запрашиваемый файл (%{REQUEST_FILENAME}) не существующим файлом (!-f). -f означает «это существующий файл», и префикс ! отрицает это. Второе условие аналогично, но проверяет, не является ли запрошенный файл не существующим каталогом. Если оба условия верны, запрос будет внутренне переписан на index.php. Флаг [L] остановит переписывание для этого прохода, а во время следующего прохода первое правило будет совпадать и полностью прекратит переписывание.

См. the documentation для получения дополнительной информации о том, что возможно с RewriteCond и RewriteRule.

+0

Отличное, очень четкое объяснение. Спасибо за ссылки ссылки тоже. Ура! – Johny