Общие сведения о перенаправлениях WordPress
Как Wordpress перенаправляет доступ к содержимому базы данных с URL-адресов?
Wordpress включает на каждом хостинге код переписывания URL в файле .htaccess, который заменяет динамический URL статическим URL, когда веб-мастер/блогер выбрал этот параметр. Этим занимается сервер, но он делает больше.
Код .htaccess
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
Вот что он в деталях означает...
# BEGIN WordPress
# END WordPress
Простые комментарии, сообщающие о начале и конце кода переписывания URL.
<IfModule mod_rewrite.c> </IfModule>
Условное выражение: код, включенный между этими двумя тегами, выполняется только в том случае, если URL-адрес rewritting разрешен хостером и в этом случае должен быть доступен модуль mod_rewrite .
RewriteEngine On
Включает механизм переписывания URL-адресов.
RewriteBase /
Явно указывает, что корень сайта - «/», чего по умолчанию для большинства Unix-хостингов нет: основой сайта является расположение файлов, что-то вроде/home/user/www/.
Эта директива вводит различие между PHP и сервером: для PHP корень остается расположением каталога и для знания корня сайта необходимо использовать PHP-переменные (для удобного приложения см. скрипт Bioloid).
Поскольку база определяется таким образом, на страницах можно использовать относительные адреса, например/mapage.html.
RewriteCond %{REQUEST_FILENAME} !-f
Предложение относительно последующей директивы.
Она запрещает автоматическое перенаправление на index.php, что происходит по умолчанию, когда URL соответствует фактическому файлу.
REQUEST_FILENAME - переменная Apache, представляющая фактический путь в файловой системе на сервере.
% {} этот код - способ назначения переменной Apache.
! этот символ формирует отрицание следующего фильтра.
-f уточняет, что это файл, и! -f указывает, что это не должен быть файл.
-d уточняет, что это каталог и! -d наоборот.
Поэтому условие исключает URL, соответствующие фактическому файлу на сайте, в то время как:
RewriteCond %{REQUEST_FILENAME} !-d
исключает подкаталоги.
RewriteRule . /index.php [L]
Команда RewriteRule запрашивает замену регулярного выражения, в данном случае точки, на адрес/index.php (если только это не фактический файл или каталог).
Точка, представляющая любой символ или последовательность символов, любой URL перенаправляется на index.php.
[] добавляет правило для сервера.
L означает Last, правило применяется последним.
Таким образом, полное правило перенаправляет все URL-адреса на/index.php, если они не соответствуют фактическим файлам или каталогам.
Новое правило
Последняя версия ntaccess-файла содержит дополнительное правило:
RewriteRule ^index\.php$ - [L]Это не позволяет/и/index.php для подкаталога рассматриваться как один и тот же URL и ускоряет скрипты.
Объяснение функционирования
По умолчанию все доступа перенаправляются на index.php, когда это не реальные файлы. Но index.php на самом деле не страница, это скрипт, который ищет статьи в базе данных.
URL-адреса страницы или файла, которые находятся на сайте, но не управляются WordPress, например document.html или archive.zip или image.jpg, обслуживаются напрямую.
При выборе динамических URL-адресов https://www.iqlevsha.ru/index.php?p=n фигуры сценарий ищет в базе данных запись, соответствующую идентификатору параметра, и составляет страницу с шаблоном.
Рекомендуется выбрать статические URL-адреса из ключевых слов с добавленным идентификатором. Это делается в вариантах в разделе permalian, с чем-то вроде:
/%postname%-%post_id%
Значимые URL-адреса типа https://www.iqlevsha.ru/mon-article-12345 также перенаправляются на index.php.
Но часть «mon-article-12345» встречается в базе данных, которая записывает URL-адреса при создании билета (и построена из названия), а затем программное обеспечение берет соответствующий контент для составления страницы.
Страница 404
Управляется она и с помощью программного обеспечения: если скрипт index.php не находит запрашиваемый URL, он загружает специальную страницу, 404.php, которая прилагается к теме .
Если ты хочешь улучшить управление ошибками URL со стороны интернет-пользователей, лучше изменить файл 404.php, а не .htaccess.
Смотри, например, статью: Умная страница 404 .
Внешние связи
- Документация Apache.
- Плагин перенаправления для WordPress. Он перенаправляет ваши страницы на один или другой сайт без редактирования .htaccess.