WordPress子目录IFSC Code脚本Nginx伪静态访问404问题求助
问题原因
- rewrite规则匹配前缀错误
location块匹配/ifsc-code路径下的请求时,你写的rewrite规则从根路径^/开始匹配,会把ifsc-code作为第一个捕获项赋值给bank参数,实际参数完全匹配错误。 - 跳转目标路径错误
你当前配置里跳转的/index.php是站点根目录的index.php(也就是WordPress的入口文件),而不是ifsc-code子目录下的脚本入口,所以请求被转发给WordPress后找不到对应路径返回404。 - try_files优先级高于rewrite且配置错误
你写的try_files $uri $uri/ /index.php?$args会优先执行,只要静态文件/目录不存在就直接跳转到根目录的WordPress入口,后面的rewrite规则根本不会生效。 - rewrite规则没有加执行标记
缺少last/break标记,会导致规则执行逻辑混乱,即使匹配到也无法正常跳转。
修复后的配置
location /ifsc-code { # 先匹配静态资源,不存在则走自定义重写规则 try_files $uri $uri/ @ifsc_rewrite; } location @ifsc_rewrite { # 重写规则从/ifsc-code/之后开始匹配路径段,避免误抓子目录名作为参数 rewrite ^/ifsc-code/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /ifsc-code/index.php?bank=$1&state=$2&district=$3&branch=$4 last; rewrite ^/ifsc-code/([^/]+)/([^/]+)/([^/]+)/?$ /ifsc-code/index.php?bank=$1&state=$2&district=$3 last; rewrite ^/ifsc-code/([^/]+)/([^/]+)/?$ /ifsc-code/index.php?bank=$1&state=$2 last; rewrite ^/ifsc-code/([^/]+)/?$ /ifsc-code/index.php?bank=$1 last; }
配置生效操作
修改Nginx配置后执行nginx -t检查配置语法无误,再执行nginx -s reload重载配置即可生效。
内容的提问来源于stack exchange,提问作者Developer Vicky
相关产品推荐
相关产品推荐

