Nécessite une expression régulière, utilisée dans nginx.
Si $uri ne se termine pas par / et ne se termine pas par .xml, .html ou .htm, il sera permanent pour $uri/.
location @rewrite {
rewrite [^\/]$ $uri/ permanent;
rewrite . /index.php?s=$uri&$args last;
}
Ma propre méthode d'écriture, mais qui a échoué :
rewrite ([\/]|.xml|.html?)$ $uri/ permanent;
1)如何才可以实现不以.xml .html /结尾的才重写的正则。
2)如何才可以在正则表达式[]中排除完整的一段单词?
J'ai utilisé cette phrase et il semble que je n'ai trouvé aucun problème pour le moment.
rewrite [^\/|\.xml|\.html?]$ $uri/ permanent;
Question, a-zA-Z0-9 n'est-il pas entre crochets [] ? Pouvez-vous également écrire une chaîne correspondante complète ?
Ce dont vous avez besoin est un moteur d'expression régulière qui prend en charge l'union, l'intersection et la différence : http://nfabo.cn/p/?p=1280
Dans nginx, vous ne pouvez utiliser la négation que pour inverser le regard :
.*(?<!.xml|.html|.htm|/)$
Vous pouvez d'abord réécrire ces fichiers se terminant par .html, .htm et .xml dans leurs répertoires d'origine,
Le reste est réalisé en appliquant vos règles de réécriture.