Гид по технологиям

Как сменить структуру постоянных ссылок в WordPress на Ubuntu

• 4 min read • WordPress • Обновлено 28 Nov 2025
Сменить структуру ссылок в WordPress на Ubuntu
Сменить структуру ссылок в WordPress на Ubuntu

Кратко: установите и настройте плагин Permalinks Migration в админке WordPress, затем включите mod_rewrite и разрешите переопределение конфигурации Apache (AllowOverride). Проверьте наличие и содержимое .htaccess и перезапустите Apache. Если есть ошибки — проверьте логи и права на запись в корне сайта.

Зачем менять структуру постоянных ссылок

Читабельные URL помогают пользователям и поисковым системам. По умолчанию WordPress использует формат ?p=123 — он неинформативен и плохо влияет на UX и некоторые SEO-метрики. Переход на человекопонятные пермалинки (например: /nazvanie-posta-123.html) требует корректной перенаправляющей логики, чтобы старые ссылки не возвращали 404.

Короткая терминология

  • Permalink — постоянная ссылка на запись.
  • 301 — постоянное перенаправление (HTTP 301 Moved Permanently).
  • mod_rewrite — модуль Apache для правил переадресации и переписывания URL.

Подготовка в WordPress (плагин Permalinks Migration)

  1. Установите и активируйте плагин Permalinks Migration.
  2. В админке перейдите: Панель администратора → Параметры → PermalinksMigration и укажите старую структуру ссылок. Если у вас был формат по умолчанию, укажите /%post_id%/.
  3. Перейдите: Панель администратора → Параметры → Постоянные ссылки и выберите новую структуру, например /%postname%-%post_id%.html/ или любую другую, которая вам подходит.

Важно: пока Apache не настроен на переписывание URL, старые записи будут возвращать 404 — это нормальная стадия до настройки сервера.

Настройка Apache на Ubuntu (включение mod_rewrite и AllowOverride)

Следующие шаги выполняются в терминале под пользователем с правами sudo:

  1. Поиск модуля mod_rewrite (опционально):
sudo locate mod_rewrite.so

Обычно файл находится в /usr/lib/apache2/modules.

  1. Вариант A — включить модуль стандартным способом (рекомендуется на Ubuntu):
sudo a2enmod rewrite
  1. Вариант B — если вы предпочитаете ручную загрузку модуля, можно создать или отредактировать файл:
cd /etc/apache2/mods-enabled
sudo touch rewrite.load
sudo gedit rewrite.load

Вставьте в файл строку:

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
  1. Разрешение перезаписи (AllowOverride). Откройте конфигурацию сайта. На современных системах это может быть /etc/apache2/apache2.conf или файл в /etc/apache2/sites-available/ (например 000-default.conf или default). Найдите секцию для вашего каталога (обычно /var/www/ или DocumentRoot). Если вы видите строки вроде:
Options Indexes FollowSymLinks MultiViews
AllowOverride None

измените AllowOverride None на:

AllowOverride all
  1. Перезапустите Apache:
sudo systemctl restart apache2
# или, на старых системах
sudo /etc/init.d/apache2 restart

Важно: изменения могут быть в разных файлах конфигурации в зависимости от версии Ubuntu и структуры виртуальных хостов. Проверьте, что вы правите конфиг, который реально используется сервером.

Проверьте файл .htaccess

WordPress обычно записывает правила в файл .htaccess в корне сайта. Убедитесь, что этот файл существует и доступен для записи (хотя бы временно). Пример стандартного содержимого .htaccess для WordPress:

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

Если файла нет, создайте его и вставьте правила выше. Проверьте права доступа (владелец и режим), например web-server: www-data.

Тесты и критерии приёмки

  • Тест 1 — старый URL должен возвращать 301 и вести на новый URL:
curl -I https://example.com/?p=123

Ожидаемо: в ответе HTTP-статус 301 и заголовок Location с новым адресом.

  • Тест 2 — откройте старую ссылку в браузере — должна произойти перенаправление без 404.

  • Тест 3 — проверьте логи Apache (error.log и access.log) для выявления ошибок переписывания.

Критерии приёмки

  • Все ранее опубликованные записи не возвращают 404 и корректно перенаправляются на новую структуру (301).
  • .htaccess содержит правила WordPress и сервер использует их (AllowOverride разрешён).

Отладка: что делать, если не работает

  1. Убедитесь, что mod_rewrite включён: выполните sudo a2enmod rewrite и перезапустите Apache.
  2. Проверьте, что вы редактируете тот файл конфигурации, который активен для вашего виртуального хоста.
  3. Проверьте права .htaccess: владелец должен быть пользователь, под которым работает Apache (обычно www-data), и файл должен быть читаем.
  4. Просмотрите логи:
sudo tail -n 200 /var/log/apache2/error.log
sudo tail -n 200 /var/log/apache2/access.log
  1. Если плагин Permalinks Migration не создаёт перенаправления — попробуйте временно отключить другие плагины, которые могут вмешиваться в перезапись URL.

  2. Альтернатива: если плагин продолжает давать сбой, можно реализовать правила перенаправления вручную через .htaccess, но это требует знания регулярных выражений и структуры старых/новых URL.

Быстрый чек-лист для администратора

  • Резервная копия файлов сайта и базы данных.
  • Установлен и активирован Permalinks Migration.
  • Указана старая структура ссылок в настройках плагина.
  • Изменена новая структура в Настройки → Постоянные ссылки.
  • Включён mod_rewrite (a2enmod rewrite).
  • AllowOverride изменён на all для нужного каталога.
  • .htaccess присутствует и содержит правила WordPress.
  • Apache перезапущен и перенаправления работают (тест curl).

Резервный план и откат

Если что-то пойдёт не так:

  1. Верните прежнюю структуру в админке WordPress.
  2. Восстановите из резервной копии файлы конфигурации Apache и .htaccess.
  3. Верните права и владельца файлов, если меняли.
  4. Отключите новый плагин и проверьте поведение сайта.

Когда не стоит менять структуру

  • Если сайт имеет тысячи внешних ссылок и нет возможности правильно настроить перенаправления — смена может сильно повредить трафику.
  • Если вы не можете обеспечить корректные 301-редиректы для старых URL.

Короткое резюме

Переход на новую структуру постоянных ссылок в WordPress на Ubuntu — это сочетание настроек в админке (Permalinks Migration + новая схема) и конфигурации Apache (включённый mod_rewrite и AllowOverride all). Проведите тесты, убедитесь в наличии .htaccess с правильными правилами и имейте резервную копию перед изменениями.

Если после всех шагов остаются ошибки — пришлите выводы curl и последние строки из логов Apache, и я помогу с диагностикой.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро