如何在Nginx中将指定目录下所有请求重定向到index并传递请求参数?
Nginx指定目录请求重定向配置方案
适配需求的配置修改
你可以直接修改现有的location块配置,以下是两种常见场景的写法:
场景1:匹配/link开头的所有请求(对应你示例的路径规则)
location ^~ /link { # 内部转发,用户浏览器地址栏不变,传递/link后的路径作为search参数 rewrite ^/link/(.*)$ /link/index.php?search=$1 last; # 需保留原始请求自带的其他查询参数时,替换为下面这条 # rewrite ^/link/(.*)$ /link/index.php?search=$1&$args last; # 如果你需要做公开跳转(地址栏显示index.php路径),替换rewrite为以下二选一 # rewrite ^/link/(.*)$ /link/index.php?search=$1 redirect; # 临时跳转302 # rewrite ^/link/(.*)$ /link/index.php?search=$1 permanent; # 永久跳转301 }
场景2:适配你现有/pages目录的配置
location /pages { rewrite ^/pages/(.*)$ /pages/index.php?search=$1 last; include fastcgi.conf; }
关键说明
^~ /link前缀匹配优先级高于正则匹配,可避免请求被其他.php相关的location规则拦截- 如果需要传递完整的原始请求路径(包含
/link前缀),直接用内置变量$request_uri即可:rewrite ^ /link/index.php?search=$request_uri last; - 修改配置后先执行
nginx -t检查语法合法性,无报错再执行nginx -s reload生效
内容的提问来源于stack exchange,提问作者QQQ
相关产品推荐
相关产品推荐

