正则表达式 - nginx 正则,如何匹配不以/结尾且不以.xml .html .htm结尾
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 17:25:48
0
2
872

需求

需要一个正则表达式,在 nginx 中使用。
如果$uri 不是以/结尾且不以.xml 、.html、.htm 结尾的,才 permanent 到$uri/。

location @rewrite {
    rewrite [^\/]$ $uri/ permanent;
    rewrite . /index.php?s=$uri&$args last;
}

尝试

我自己的写法,但是失败:

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

提问

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

补充

我使用了这一句,貌似暂时没有发现问题。

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

疑问,方括号[]中的不是 a-zA-Z0-9 吗,也可以写完整的匹配字符串?

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

全部回复(2)
洪涛

你需要的是 支持 并、交、差 的正则表达式引擎:http://nfabo.cn/p/?p=1280
在nginx中,只能用否定反向环视: .*(?<!.xml|.html|.htm|/)$

巴扎黑

你可以先把这些.html,.htm,.xml结尾的文件rewrite到他们原来的目录,
剩余的在应用你的重写规则就达到了你的这个目的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!