Je suis sûr que cela a déjà été demandé, mais je ne trouve pas de solution qui fonctionne.
Un site Web a changé de service CMS, mais a le même domaine, comment configurer une réécriture nginx pour une seule page?
Par exemple.
http://sitedomain.co.uk/content/unique-page-name
http://sitedomain.co.uk/new-name/unique-page-name
Veuillez noter , je ne veux pas que tout dans la page de contenu soit redirigé, mais littéralement juste l'url mentionnée ci-dessus. J'ai environ 9 redirections à configurer, dont aucune ne correspond à un modèle.
Merci!
Edit: J'ai trouvé cette solution, qui semble fonctionner, sauf pour le fait qu'elle redirige sans barre oblique:
if ( $request_filename ~ content/unique-page-name/ ) {
rewrite ^ http://sitedomain.co.uk/new-name/unique-page-name/? permanent;
}
Mais cela redirige vers:
http://sitedomain.co.uknew-name/unique-page-name/
Citation directe de Pièges et erreurs courantes: Taxing Rewrites :
En utilisant la directive return, nous pouvons complètement éviter l'évaluation de l'expression régulière.
Veuillez utiliser return
au lieu de rewrite
pour les redirections permanentes. Voici mon approche de ce cas d'utilisation ...
location = /content/unique-page-name {
return 301 /new-name/unique-page-name;
}
Idéalement, vous ne devriez pas utiliser d'instructions if si vous pouvez l'éviter. Quelque chose comme ça pourrait fonctionner (non testé).
location ~ /content/(.*)$ {
rewrite ^ /new-name/$1?$args permanent;
}
J'ai utilisé la solution suivante:
rewrite ^(/content/unique-page-name)(.*)$ http://sitedomain.co.uk/new-name/unique-page-name/$2 permanent;
Fonctionne un régal.
Pour moi, cela a fonctionné sans le signe égal comme ceci:
location /old-url {
return 301 /new-url;
}