Исправляем структуру URL WordPress в nginx

Примерно полгода назад структура URL на моём блоге была следующая: /archives/%post_id%, то есть, никакого ЧПУ.

Для этого у меня был один аргумент — легко запоминать URL, он был коротким и удобным. Но в этом случае был один огромный минус — скинув эту ссылку по почте или через скайп, трудно было понять, какой контент спрятан за ней.

Было принято решение перейти к нормальным ЧПУ, а именно к формату /%postname%/.

Но вот незадача — старые страницы уже успели попасть в индекс поисковых систем. Более того, на комментируемых мною сайтах оставались старые ссылки.

Время от времени в лог моего веб-сервера падали сообщения, что был запрошен несуществующий URL и я просто ручками прописывал редиректы в nginx, типа таких:

location /archives/503 {rewrite ^ http://gruz0.ru/otkaz-ot-sotsial-nyih-setey/ permanent;}

В скором времени количество таких правил выросло, раздулся конфиг моего веб-сервера.

Решение проблемы

Буквально сегодня пришла в голову отличная идея, которую сразу же реализовал.

Вы, вероятно, знаете, что в WordPress для всех постов имеется короткая запись, вида site.ru/?p=ID, вот этим я и решил воспользоваться, чтобы наиболее просто и быстро перенаправить все старые ссылки на новые.

Вот строка для nginx, вставляется в группу server вашего домена:

location ~ /archives/([0-9]+) { return 301 http://gruz0.ru/?p=$1 permanent; }

Теперь все запросы вида /archives/xxx, где вместо «xxx» ID моих записей, попросту перенаправляются на короткие ссылки моего сайта. А те, в свою очередь, передают 301 статус со ссылкой на нормальный ЧПУ.

Проблема решена без кровопролития :-)

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Добавить комментарий

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

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: