nginx rewrite伪静态后产生的错误连接

###背景 网站采用PHP作为后端开发语言,采用Thinkphp做为核心开发框架。php

###问题html

//通常的URL生成方式为
U('xxx/xxx',[a=>b]);

//目前网站中存在这种写法
U('xxx/xxx').'&a=b';

/*
上面不规范写法在伪静态前与伪静态后生成的URL对比
伪静态前:/index.php?mod=xxx&act=xxx&a=b   能够正常访问
伪静态后:/xxx/xxx.html&a=b    404
*/

若是去花时间修复这种不规范的写法,不只费时费力,并且后期也不免出现这种不规范的写法。nginx

因此考虑使用nginx rewrite模块重写为正确的URL后端

###解决方法框架

#为第一次出现伪静态后缀的URL添加?
rewrite ^(.*?)\.(html|php)[^\?](.*)$ $1.$2?$3 last;
相关文章
相关标签/搜索