Я уверен, что об этом уже спрашивали, но я не могу найти подходящего решения.
Веб-сайт переключил службы 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;
}