Как сделать массовый 301 редирект с /%category%/%postname%.html на /%postname%.html в WordPress?

Ссылка скопирована
1 ответ

Как сделать массовый редирект 301 с /%category%/%postname%.html на /%postname%.html в Wordpress?

Через плагины не получается. В гугле готовых решений не нашёл.

Дополнительные вопросы

Не делай этого если не хочешь поиметь проблем. Лучше убери ненужный аппендикс ".html".

Ответы:

Через RewriteRule в .htaccess если у тебя Апач. Подобный функционал есть и в nginx

RewriteEngine on RewriteRule ^category/(.*).html$ /$1.html [L,R=301]

RewriteEngine on RewriteRule ^category/(.*).html$ /$1.html [L,R=301]

  • файл .htaccess у меня есть. А что туда нужно прописать?
  • df009s, обновил ответ, смотри

Как сделать массовый 301 редирект с /%category%/%postname%.html на /%postname%.html в Wordpress?

Lorem Ipsum @GeorgeGeorge Студент Мне когда-то давно помогал плагин - https://ru.wordpress.org/plugins/remove-taxonomy-b....

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Сергей Миронов Ответ

Массовый редирект с /%category%/%postname%.html на /%postname%.html технически сделать можно, но это рискованная структура. Если у двух записей одинаковый slug в разных рубриках, после удаления категории из URL они начнут конфликтовать. Перед редиректом нужно проверить уникальность post_name.

Для Apache общий вариант правила:

RewriteEngine On
RewriteRule ^[^/]+/([^/]+).html$ /$1.html [R=301,L]

RewriteEngine On RewriteRule ^[^/]+/([^/]+).html$ /$1.html [R=301,L]

Если новая структура без .html:

RewriteRule ^[^/]+/([^/]+).html$ /$1/ [R=301,L]

RewriteRule ^[^/]+/([^/]+).html$ /$1/ [R=301,L]

Но это правило работает только для структуры с одной категорией в URL. Если категории вложенные, нужно другое правило:

RewriteRule ^(.+)/([^/]+).html$ /$2.html [R=301,L]

RewriteRule ^(.+)/([^/]+).html$ /$2.html [R=301,L]

Для nginx:

rewrite ^/.+/([^/]+).html$ /$1.html permanent;

rewrite ^/.+/([^/]+).html$ /$1.html permanent;

Перед включением 301 я бы сделал так:

  1. Выгрузить все старые URL и новые URL.
  2. Проверить дубли slug.
  3. Сначала поставить 302 и проверить выборочно.
  4. Проверить canonical и sitemap.
  5. Только потом менять на 301.

Если сайт на WordPress, часто безопаснее делать редиректы через PHP, потому что можно найти запись по slug и убедиться, что она существует. Но для большого сайта это может быть тяжелее, чем правило сервера.

Итог: правило возможно, но сначала проверьте дубли. И подумайте, не лучше ли убрать только .html, оставив категорию, если текущая структура уже проиндексирована и работает.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно