Memerlukan ungkapan biasa, digunakan dalam nginx.
Jika $uri tidak berakhir dengan / dan tidak berakhir dengan .xml, .html atau .htm, ia akan kekal kepada $uri/.
location @rewrite {
rewrite [^\/]$ $uri/ permanent;
rewrite . /index.php?s=$uri&$args last;
}
Kaedah penulisan saya sendiri, tetapi gagal:
rewrite ([\/]|.xml|.html?)$ $uri/ permanent;
1)如何才可以实现不以.xml .html /结尾的才重写的正则。
2)如何才可以在正则表达式[]中排除完整的一段单词?
Saya menggunakan ayat ini dan nampaknya saya tidak menemui sebarang masalah buat masa ini.
rewrite [^\/|\.xml|\.html?]$ $uri/ permanent;
Soalan, bukankah a-zA-Z0-9 dalam kurungan segi empat sama [] Bolehkah anda juga menulis rentetan padanan yang lengkap?
Apa yang anda perlukan ialah enjin ekspresi biasa yang menyokong kesatuan, persimpangan dan perbezaan: http://nfabo.cn/p/?p=1280
Dalam nginx, anda hanya boleh menggunakan penolakan untuk melihat sekeliling:
.*(?<!.xml|.html|.htm|/)$
Anda boleh menulis semula fail ini yang berakhir dengan .html, .htm dan .xml ke direktori asalnya dahulu,
Selebihnya dicapai dengan menggunakan peraturan penulisan semula anda.