Expression régulière - expression régulière nginx, comment faire correspondre ne se terminant pas par / et ne se terminant pas par .xml .html .htm
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 17:25:48
0
2
889

Demande

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;
}

Essayez-le

Ma propre méthode d'écriture, mais qui a échoué :

rewrite ([\/]|.xml|.html?)$ $uri/ permanent;

Posez une question

1)如何才可以实现不以.xml .html /结尾的才重写的正则。
2)如何才可以在正则表达式[]中排除完整的一段单词?

Supplément

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 ?

过去多啦不再A梦
过去多啦不再A梦

répondre à tous(2)
洪涛

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal