NGINX
#nginx#rewrite#301#migration#redirect#seo

Nginx: 301 rewrite при смене структуры URL (миграция)

Постоянный редирект старой ветки URL на новую (например /old-category/ на /blog/). Директива rewrite с флагом permanent по документации ngx_http_rewrite_module.

Как использовать

  1. Разместить правило в server {} или в нужном location. Заменить old-category и /blog/ на свои пути.
  2. После изменений: nginx -t && systemctl reload nginx. Проверка: curl -I https://site.ru/old-category/page/ — ожидаем 301 и Location на новый URL.

При миграции сайта или смене CMS старая структура URL часто меняется (например, было /category/, стало /blog/). Чтобы не терять трафик и передавать ссылочный вес, старые адреса должны отдавать 301 Moved Permanently с заголовком Location на новый URL. Официальная документация: ngx_http_rewrite_module.

Одна ветка на другую

Редирект всего поддерева /old-category/ на /blog/ с сохранением пути после префикса:

rewrite ^/old-category/(.*)$ /blog/$1/ permanent;
  • ^/old-category/(.*)$ — совпадает с путём вида /old-category/любое/; (.*) захватывает «хвост».
  • /blog/$1/ — целевой URL; $1 подставляется захваченной частью.
  • permanent — код ответа 301; для временного редиректа используется redirect (302).

Несколько правил

При разных префиксах задайте отдельный rewrite для каждого:

rewrite ^/old-category/(.*)$ /blog/$1/ permanent;
rewrite ^/tag/(.*)$ /blog/tag/$1/ permanent;

Порядок важен: nginx обрабатывает правила последовательно. Правила rewrite лучше размещать в server {} или в общем location / {}.

Подробнее: Миграция с WordPress на Bitrix без потери SEO.