不以指定字符串开头的正则表达式

更新于2015-03-10 20:09:18 | 438次浏览
摘要 : nginx服务器配置不以指定字符串开头的正则表达式,排队相应网站路径。

最近想用thinkphp框架做一个项目,服务器是nginx,需要配置服务器将网站所有请求重写到入口文件index.php,配置如下:

rewrite ^(.*)$ /index.php?s=$1;

测试网站,没发现什么问题,但今天写网站前端用到了fontawesome字体文件,字体怎么也显示不出来,后来发现,字体文件根本没有加载,直接在浏览器打开fontawesome-webfont.eot文件,没有提示下载,而是打开了网站首页,检查服务器配置后,怀疑是字体文件的路径也被重写了。

服务器重写配置使用的是正则表达式,现在的要求是重写配置排除字体所在路径,也就是/Public开头的路径,不以指定字符串(Public)开头的正则还真没写过,想了想也写不出来,在网上搜索半天也没有成功的,只能自己研究正则规则,发现?!可以排除字符串,于是尝试将重写配置改成:

rewrite ^((?!/Public|/Uploads).*)$ /index.php?s=$1;

字体终于可以显示了。

推荐文章