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

如何在Nginx中将index.php?arg=test重写为/index/test/

Nginx URL重写配置方案

要实现把index.php?arg=test重定向为地址栏显示/index/test/,以及多参数index.php?arg=test&arg2=test2&arg3=test3重写为/index/test/test2/test3/,需要分外部地址重定向和内部请求转发两部分配置,以下是完整的修改后的配置:

server {
    # 你的server基础配置(如listen、server_name等)
    
    # 1. 外部重定向:将旧的带参数URL跳转到美观的路径式URL
    # 单个参数:index.php?arg=xxx → /index/xxx/
    if ($request_uri ~* ^/index\.php\?arg=([^&]+)$) {
        return 301 /index/$1/;
    }
    # 三个参数:index.php?arg=xxx&arg2=yyy&arg3=zzz → /index/xxx/yyy/zzz/
    if ($request_uri ~* ^/index\.php\?arg=([^&]+)&arg2=([^&]+)&arg3=([^&]+)$) {
        return 301 /index/$1/$2/$3/;
    }

    # 2. 补全末尾斜杠:避免用户访问不带斜杠的路径出现异常
    rewrite ^/index/([^/]+)$ /index/$1/ permanent;
    rewrite ^/index/([^/]+)/([^/]+)/([^/]+)$ /index/$1/$2/$3/ permanent;

    # 3. 内部转发:将美观的路径式URL转发到index.php处理
    # 匹配单个参数的路径:/index/xxx/
    location ~ ^/index/([^/]+)/$ {
        try_files $uri $uri/ /index.php?arg=$1;
    }
    # 匹配三个参数的路径:/index/xxx/yyy/zzz/
    location ~ ^/index/([^/]+)/([^/]+)/([^/]+)/$ {
        try_files $uri $uri/ /index.php?arg=$1&arg2=$2&arg3=$3;
    }

    # 你原有的根路径处理配置
    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    # 你原有的PHP处理配置
    location ~ \.php$ {
        try_files $uri =404;
        include /etc/nginx/fastcgi.conf;
        fastcgi_pass unix:/run/php/php-fpm.sock;
        fastcgi_index index.php;
    }
}

关键说明

  • 外部重定向:通过if结合正则匹配旧URL格式,用return 301做永久重定向(利于SEO),正则捕获组$1、$2负责提取参数值,拼接成新路径。
  • 补全斜杠:确保用户访问/index/test时自动跳转到/index/test/,避免路径不一致导致的重复内容或404问题。
  • 内部转发:用正则匹配新的路径式URL,将路径片段重新转为index.php的查询参数,后端PHP程序依然可以通过$_GET['arg']、$_GET['arg2']获取参数值,无需修改业务代码。

注意事项

  1. 修改配置后,先执行sudo nginx -t检查语法是否正确,无误后执行sudo nginx -s reload使配置生效。
  2. 测试时请清除浏览器缓存(301重定向会被浏览器永久缓存),或使用隐私窗口测试。
  3. 如果需要支持更多参数,可扩展对应的正则规则和转发配置,比如四个参数就新增对应的location块和重定向规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:05:13