Назад | Перейти на главную страницу

Nginx перенаправляет один путь на другой

Я уверен, что об этом уже спрашивали, но я не могу найти подходящего решения.

Веб-сайт переключил службы CMS, но имеет тот же домен, как мне настроить перезапись nginx для одной страницы?

Например.

Старая страница

http://sitedomain.co.uk/content/unique-page-name

Новая страница

http://sitedomain.co.uk/new-name/unique-page-name

пожалуйста, обратите внимание, Я не хочу, чтобы перенаправлялось все на странице содержимого, а буквально только указанный выше URL. Мне нужно настроить около 9 редиректов, ни один из них не вписывается в шаблон.

Спасибо!

Изменить: я нашел это решение, которое, похоже, работает, за исключением того факта, что оно перенаправляет без косой черты:

if ( $request_filename ~ content/unique-page-name/ ) {
   rewrite ^ http://sitedomain.co.uk/new-name/unique-page-name/? permanent;
}

Но это перенаправляет на:

http://sitedomain.co.uknew-name/unique-page-name/

Прямая цитата из Подводные камни и распространенные ошибки: налогообложение переписчиков:

Используя директиву return, мы можем полностью избежать вычисления регулярного выражения.

Пожалуйста, используйте return вместо того rewrite для постоянных перенаправлений. Вот мой подход к этому варианту использования ...

location = /content/unique-page-name {
  return 301 /new-name/unique-page-name;
}

В идеале вы не должны использовать операторы if, если можете этого избежать. Что-то вроде этого могло работать (непроверено).

location ~ /content/(.*)$ {
    rewrite ^ /new-name/$1?$args permanent;
} 

Я использовал следующее решение:

rewrite ^(/content/unique-page-name)(.*)$   http://sitedomain.co.uk/new-name/unique-page-name/$2 permanent;

Работает удовольствие.

Для меня это работало без знака равенства вот так:

location /old-url {
  return 301 /new-url;
}