Перенаправление со структуры категория/имя поста только имя поста в WordPress

Содержание:

Раньше всегда рекомендовалось использовать название рубрики для структуры постоянных ссылок WordPress (типа ...../wordpress/perenapravlenie-strukturyi-kategoriya/). Считалось что, когда пользователь видит полный адрес страницы, ему проще сориентироваться. Кроме того поисковики подсвечивают ключевые слова в URL ... Но в итоге такой адрес страницы стал создавать проблемы и я решил сменить /%category%/%postname%/  на /%postname%/

Так как до этого использовалась структура /%category%/%postname%/, было иногда трудно перенести пост из одной категории в другую после публикации, так как URL опубликованного поста имел название категории. Кроме того, в случае если пост принадлежал нескольким категориям, то название категории всегда выбиралось в алфавитном порядке в URL, а не из личных предпочтений автора.

Я решил изменить структуру на % postname %  .

настройка структуры постоянных ссылок WordPress

Итак не долго думая изменил настройки постоянных ссылок, но оказалось что сам WordPress не позаботился о редиректах на новые URL. В результате массовые ошибки 404 наших старых URL-адресов. А на сайт стоит множество ссылок!

к содержанию ↑

Вариант 1

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

redirect permanent /blog/general/goodbye-ie6-join-countdown-to-history/ http://site.ru/goodbye-ie6-join-countdown-to-history/

Если постов 100, то и строчек таких должно быть 100!

Вариант 2

Популярные плагины.

Я поставил плагин “Redirection”.

Выберите следующие параметры :
а) " Перенаправление URL " путем сопоставления " только URL "
б) URL Источник: /blog/general/(.* )
с) Целевой URL : / $ 1
d ) Регулярное выражение ( регулярное выражение ) : [ ✔ ] ( Это важная часть в противном случае регулярные выражения работать не будут )

Понятно, что название категорий подставляете свои.

Внимание! Если есть вложенные категории, то для них надо прописывать отдельные правила!

Я сделал только один экземпляр для каждой категории, и все наши старые ссылки были перенаправлены на наши новые ссылки. В общем-то проблема решена.

Но мне не нравится устанавливать так много плагинов ... ? И  чтобы избежать битых ссылок теперь мне пришлось бы держать этот плагин всегда включённым.

к содержанию ↑

Вариант 3

Всё-таки я решил это сделать через .htaccess , потратил примерно 3 часа, много гуглил, в конечном счете пришёл к удовлетворительному решению .

Достаточно поставить этот код в файле .htaccess:

RewriteRule ^blog/general/(.*) http://domain.com/$1 [R=301,L]

или вот так:

RewriteRule ^blog/general/(.*) index.\php/$1 [R=301,L]

сразу после (важно!):

# BEGIN WordPress

RewriteEngine On
RewriteBase /

Всё отлично сработало!

Оставьте ответ

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