从Apache转NGINX后,如何实现指定URL重写?
Nginx重写规则修复方案
你原来的Nginx配置有两个核心问题,导致规则不生效:
location = /script/是精确匹配,只会命中/script/这个路径,完全匹配不上/script/example-242这种带后缀的URL- rewrite的正则缺少开头的斜杠
/,Nginx的请求URI是包含开头斜杠的,正则必须对应上
下面给你两种可用的正确配置:
方案一:直接在server块中添加规则
把这条规则放在你的server配置块里(和location同级):
rewrite ^/script/(.*)-([0-9]+)$ /test/script.php?title=$1&id=$2 last;
方案二:用location前缀匹配
如果需要对/script/开头的请求统一处理,用这个配置:
location ^~ /script/ { rewrite ^/script/(.*)-([0-9]+)$ /test/script.php?title=$1&id=$2 last; }
注意事项
- 配置修改后,执行
nginx -s reload重启Nginx使规则生效 - 正则里的
$1会捕获example,$2捕获242,和你原来Apache的规则效果完全一致
内容的提问来源于stack exchange,提问作者xyba
相关产品推荐
相关产品推荐

