Это код .htaccess в WordPress. Может кто-нибудь объяснить, как это работает?

32

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

Спасибо

Теги:
.htaccess

1 ответ

48
Лучший ответ

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

  • 0
    Я заметил, что WordPress перенаправляет domain.com/index.php на domain.com. Если бы я хотел сделать что-то подобное в PHP, я должен просто использовать функцию заголовка? Мне интересно, есть ли лучший способ (дружественный поисковик? Более эффективный?) Сделать это.
  • 0
    Я не вижу причин, по которым перенаправление 301 из функции заголовка не подходит. Вы можете настроить параметры mod_rewrite для быстрого перенаправления 301 в теории, но в любом случае это не будет иметь большого значения.
Показать ещё 8 комментариев
Сообщество Overcoder
Наверх
Меню