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 puis-je configurer une réécriture nginx pour une seule page?
Par exemple
Vieille page
http://sitedomain.co.uk/content/unique-page-name
Nouvelle page
http://sitedomain.co.uk/new-name/unique-page-name
Veuillez noter que je ne souhaite pas que tout ce qui se trouve dans la page de contenu soit redirigé, mais uniquement l'adresse URL mentionnée ci-dessus. J'ai environ 9 redirections à mettre en place, qui ne rentrent pas dans un modèle.
Merci!
Edit: J'ai trouvé cette solution qui semble fonctionner, à part le fait qu'elle redirige sans slash:
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/
if
déclarations dans nginx est mauvais? Cette pratique serait-elle encore meilleure que l’utilisation de la méthode de réécriture?if
de la directive de retour est parfaitement acceptable. Voir wiki.nginx.org/IfIsEvil . Oui, IMO, c'est mieux que d'utiliser la réécriture.Idéalement, vous ne devriez pas utiliser if si vous pouvez l'éviter. Quelque chose comme cela pourrait fonctionner (non testé).
la source
J'ai utilisé la solution suivante:
Fonctionne un régal.
la source
Pour moi cela a fonctionné sans le signe égal comme ceci:
la source
rewrite
. Voir la réponse de SteveEdison.