Переписывание URL без изменения .htaccess- как WordPress это делает?

#apache #wordpress #.htaccess #mod-rewrite #url-rewriting

#apache #wordpress #.htaccess #мод-перезапись #url-переписывание

Вопрос:

Когда я устанавливаю для параметра адреса (URL) моего сайта WordPress значение = http://www.example.com , сайт перенаправляет всех пользователей для доступа к сайту С префиксом ‘www.’:

(напримерhttp://example.com /… будет перенаправлено наhttp://www.example.com /…)

Когда я проверяю файл .htaccess, нет правила для обработки отсутствующего ‘www’. Как WordPress это делает?

Файл WordPress .htacess:

 # BEGIN 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>

# END WordPress
  

Ответ №1:

The canonical.php именно в файле в папке wp-includes вашей установки WordPress происходит это особое волшебство — есть вызов wp_redirect, который отправляет заголовок 301: Moved Permanently с каноническим URL.

Черт возьми, это в значительной степени не связано с механизмом перезаписи / перенаправления в wp-includes/rewrite.php , который обрабатывает генерацию файла .htaccess и сохранение правил перезаписи структуры постоянных ссылок в опции WordPress (имя опции ‘redirect_rules’ в wp_options).