Общие сведения о перенаправлениях 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 .

Внешние связи