You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求协助:将Apache .htaccess重写规则转换为Nginx规则(配置失效)

解决Nginx URL重写规则不生效的问题

我来帮你梳理下配置里的问题,调整后就能正常工作了:

问题分析

你的配置有两个关键问题导致重写失效:

  1. HTML转义字符错误:Nginx配置中不需要用&,直接使用&来分隔URL参数即可,&是HTML里的转义写法,Nginx不识别这个。
  2. rewrite指令选择错误:你用了break,它会终止当前location内的后续规则,但不会触发Nginx重新匹配其他location。如果你的index.php是由专门处理PHP的location(比如location ~ \.php$)来处理的,break会导致重写后的请求无法被PHP解析,最终返回404。

修正后的配置

把你的location块改成下面这样:

location /video {
    # 匹配 /video/xxx/yyy/ 格式的URL
    rewrite ^/video/([^/]+)/([^/]+)/$ /index.php?page=details&title=$1&id=$2 last;
    # 匹配 /video/xxx.html 格式的URL
    rewrite ^/video/([^/]+)\.html$ /index.php?page=result&q=$1 last;
}

额外优化说明

  • 我把[^/]*换成了[^/]+,这样可以避免匹配空字符串(比如video///这种无效URL),如果要完全和原Apache规则兼容,也可以换回[^/]*。
  • 如果你想简化正则,可以利用当前location的前缀匹配,把正则开头的/video/改成/,效果是一样的:
    location /video {
        rewrite ^/([^/]+)/([^/]+)/$ /index.php?page=details&title=$1&id=$2 last;
        rewrite ^/([^/]+)\.html$ /index.php?page=result&q=$1 last;
    }
    

验证配置

修改完配置后,记得重启Nginx使配置生效:

sudo systemctl restart nginx

内容的提问来源于stack exchange,提问作者Ananya Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:59:06