Это код .htaccess в WordPress. Может кто-нибудь объяснить, как это работает? - PullRequest
39 голосов
/ 21 февраля 2011

Это код .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>

Я гуглил и обнаружил, что -f и -d part означают, что реальные каталоги и файлы имеют более высокий приоритет.

Но тогда что же такое ^index\.php$ - [L] и RewriteRule . /index.php [L]?

Как WordPress обрабатывает категории, теги, страницы и т. Д. Только с этим?

Это происходит внутри? Если это так, мне интересно узнать, как это сделать на PHP.

Спасибо

1 Ответ

54 голосов
/ 21 февраля 2011

^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']), и вызывает правильныйкод для отображения страницы, запрошенной пользователем.

...