Постоянные ссылки в WordPress: инструкция без лишнего
Через десять минут адреса записей вместо example.com/?p=123 станут читаемыми: example.com/nazvanie-zapisi/. Что выбрать в настройках WordPress 6.x, что проверить на сервере и что делать, если все страницы отдают 404.

Через десять минут адреса записей на вашем сайте перестанут выглядеть как example.com/?p=123 и станут читаемыми: example.com/nazvanie-zapisi/. Для этого нужно выбрать один пункт в настройках и убедиться, что сервер понимает такие адреса. Инструкция написана для WordPress 6.x. Если сайт уже работает и проиндексирован, сначала прочитайте предупреждение в шаге 2.
Что нужно до начала
- WordPress 6.x и учётная запись администратора.
- Знание, на каком сервере работает сайт: Apache или Nginx. Это указано в панели хостинга или в письме с доступами. LiteSpeed читает .htaccess так же, как Apache.
- Доступ к файлам сайта по SFTP или через файловый менеджер хостинга. Он нужен, только если WordPress не сможет записать .htaccess сам.
- Для работающего сайта: резервная копия и отдельная копия файла .htaccess.
Шаги
Откройте в админке «Настройки → Постоянные ссылки». Здесь задаётся структура адресов для всех записей сайта. Проверка: на странице виден список вариантов и поле «Произвольная структура».
Выберите «Название записи». Для блога, магазина и сайта-визитки это рабочий вариант: адрес короткий и без даты. Остальные варианты разобраны в таблице ниже. На действующем сайте смена структуры меняет адрес каждой записи, и старые адреса могут начать отдавать 404. Проверка: в поле произвольной структуры появилось
/%postname%/.Нажмите «Сохранить изменения». WordPress пересоберёт правила маршрутизации и попробует записать их в .htaccess. Проверка: вверху появилось уведомление об обновлении структуры, а под формой нет блока с правилами mod_rewrite. Если блок есть, выполните шаг 4 вручную.
Проверьте правила сервера. На Apache в корне сайта, рядом с wp-config.php, должен лежать .htaccess с блоком из раздела ниже. На Nginx в конфиге сайта нужна директива try_files из того же раздела. Проверка: на Apache файл содержит блок между строками BEGIN WordPress и END WordPress. На Nginx команда
nginx -tпишет, что синтаксис в порядке.Откройте любую запись по новому адресу, затем страницу рубрики и главную. Проверка: в браузере открывается содержимое, а не страница «404 Not Found».
Какую структуру выбрать
| Вариант в настройках | Вид адреса | Когда подходит |
|---|---|---|
| Простые (Plain) | example.com/?p=123 | Для проверки на новом сайте. Для публичного сайта неудобно: адрес ничего не говорит читателю |
| День и название (Day and name) | example.com/год/месяц/день/nazvanie/ | Новостные сайты, где дата в адресе важна |
| Месяц и название (Month and name) | example.com/год/месяц/nazvanie/ | Блоги с регулярными публикациями |
| Числовые (Numeric) | example.com/archives/123 | Когда заголовки меняются часто, а адрес должен остаться прежним |
| Название записи (Post name) | example.com/nazvanie-zapisi/ | Большинство сайтов |
| Произвольная структура (Custom structure) | например, /%category%/%postname%/ | Когда рубрика должна быть в адресе |
Названия пунктов в русской локализации могут чуть отличаться от тех, что в таблице. Ориентируйтесь на вид адреса.
Адрес записи живёт дольше темы оформления, плагинов и редакторов. Выбирайте структуру один раз и такую, которую не придётся менять.
Слаг (slug) — часть адреса, которую WordPress берёт из заголовка записи. В адресе /moya-statya/ слагом служит moya-statya. Его можно поправить вручную в боковой панели редактора записи. mod_rewrite — модуль Apache, который отправляет запросы к несуществующим файлам в index.php, где WordPress сам решает, какую страницу показать.
Правила для сервера
Apache: файл .htaccess
Это стандартный блок, который WordPress 6.x записывает сам. Если в файле есть правила от кеш-плагинов или защитных плагинов, не удаляйте их. Заменяйте только то, что лежит между маркерами.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Nginx: конфиг сайта
Замените этим блоком существующий location / внутри server вашего сайта. После правки проверьте конфигурацию и перезагрузите Nginx.
location / {
# Если такого файла или папки нет, запрос уходит в WordPress
try_files $uri $uri/ /index.php?$args;
}
sudo nginx -t
sudo systemctl reload nginx
WP-CLI: то же без админки
Выполняйте из папки сайта. Ключ --hard дополнительно обновляет .htaccess и работает только на Apache.
wp rewrite structure '/%postname%/' --hard
wp option get permalink_structure
Вторая команда должна вывести /%postname%/.
Если не получилось
Главная открывается, все остальные страницы дают «404 Not Found». На Nginx в location нет try_files. На Apache сервер игнорирует .htaccess или в нём выключен mod_rewrite. Добавьте директиву из раздела выше или попросите поддержку хостинга проверить mod_rewrite и параметр AllowOverride.
Под формой появился блок с правилами и пояснением, что .htaccess недоступен для записи. WordPress не смог изменить файл. Скопируйте правила из блока в .htaccess вручную. Права 777 не ставьте: хватит прав, при которых файл записывается от имени пользователя сайта.
Записи открываются, а рубрики, страницы или записи собственных типов дают 404. Откройте «Постоянные ссылки» и нажмите «Сохранить изменения» без правок. Правила пересоберутся, и новые типы записей, добавленные плагином, попадут в них.
В адресе вместо кириллицы набор вроде %D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82. Это обычное кодирование русских букв в URL. Если нужен латинский адрес, отредактируйте слаг в записи.
Старые ссылки из поиска и чужих сайтов ведут на 404. Структура изменилась, а редиректов нет. Настройка редиректов 301 — отдельная тема, здесь не разбираем.
Что делать дальше
Сбросьте кеш страниц и кеш CDN, если они подключены: в них могли остаться старые адреса. Через неделю просмотрите журнал 404 на сервере и найдите адреса, на которые ещё ходят по старым ссылкам. Для них и нужны редиректы 301. Команды WP-CLI описаны в документации по rewrite structure.
Дефектный акт по фото: Осмотр по фотографиям: классификация дефектов, ссылки на нормы, требования к устранению. Готовый акт в Word.
Спросить за 80 ₽Источники: WordPress.org: Customize Permalinks, WP-CLI: wp rewrite structure
Частые вопросы
Какую структуру постоянных ссылок выбрать для нового сайта?
Что будет со старыми ссылками, если сменить структуру на работающем сайте?
У меня не WordPress 6.x. Инструкция подойдёт?
Я сохранил настройки, а везде 404. Что проверить первым делом?
Что учесть при смене структуры на боевом сайте?
Стоит ли оставлять дату в адресе записи?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.