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

Apache的htaccess重写规则如何转换为Nginx可用的rewrite指令?

问题原因

你遇到的404错误是因为Nginx rewrite规则未添加正确的flag标记,重写后的请求没有被转发到PHP处理逻辑,而是直接执行了try_files判断静态文件是否存在,自然找不到/123abc对应的实体文件。

修正方案

1. 修改location /块的rewrite规则

添加last标记,让重写后的请求重新匹配location规则,命中PHP处理块:

location / {
    # last标记作用:重写完成后终止当前location后续逻辑,重新匹配location规则
    rewrite ^/([0-9a-f]{6})/?$ /index.php?t=$1 last;
    try_files $uri $uri/ =404;
}

2. 补全PHP参数传递配置(可选,保险起见可添加)

确认查询参数能正确传递给PHP解释器,在PHP location块的include语句后额外添加一行参数配置:

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include /etc/nginx/fastcgi_params;
    # 确保查询参数正常传递
    fastcgi_param QUERY_STRING $query_string;
}

生效操作

  • 配置修改完成后,执行nginx -t测试配置语法合法性
  • 确认返回syntax is ok、test is successful后,执行nginx -s reload重载配置即可生效

重载后访问/123abc就能和原路径/index.php?t=123abc一样正常加载页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:39:02