recherche

Maison  >  Questions et réponses  >  le corps du texte

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

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梦2818 Il y a quelques jours936

répondre à tous(2)je répondrai

  • PHP中文网

    PHP中文网2017-05-16 17:27:48

    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|/)$

    répondre
    0
  • 巴扎黑

    巴扎黑2017-05-16 17:27:48

    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.

    répondre
    0
  • Annulerrépondre