Это код .htaccess для постоянных ссылок в WordPress. Я не понимаю, как это работает. Может кто-нибудь объяснить?
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Я googled и узнал, что часть -f
и -d
означает, что настоящие каталоги и файлы имеют более высокий приоритет.
Но что тогда ^index\.php$ - [L]
и RewriteRule . /index.php [L]
?
Как WordPress обрабатывает категории, теги, страницы и т.д. только с этим?
Это происходит внутри? Если это так, мне интересно узнать, как это сделать в PHP.
Спасибо
^index\.php$ - [L]
предотвращает переписывание запросов index.php
во избежание ненужной проверки файловой системы. Если запрос имеет значение index.php
, директива ничего не делает -
и прекращает обработку правил [L]
.
Этот блок является единственным правилом, и он говорит, что если он не является реальным файлом, а не реальным каталогом, перенаправляйте запрос на index.php
.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
index.php сам интерпретирует URL-адрес, запрошенный клиентом (PHP может видеть запрошенный URL-адрес с помощью $_SERVER['REQUEST_URI']
), и он вызывает правильный код для рендеринга страницы, запрошенной пользователем.