Mod rewrite nginx重写规则,让两个规则都工作,而不仅仅是其中一个
我试图让这个重定向对这两个规则都起作用,但不知道怎么做, 根据文件,这应该是可行的,他们是分开做的。但我希望这两条规则都适用 此外,还应可以访问/panel/assets/文件夹 有人能帮我制定这些规则吗?我花了30多分钟试图解决这个问题Mod rewrite nginx重写规则,让两个规则都工作,而不仅仅是其中一个,mod-rewrite,nginx,Mod Rewrite,Nginx,我试图让这个重定向对这两个规则都起作用,但不知道怎么做, 根据文件,这应该是可行的,他们是分开做的。但我希望这两条规则都适用 此外,还应可以访问/panel/assets/文件夹 有人能帮我制定这些规则吗?我花了30多分钟试图解决这个问题 if (!-e $request_filename){ rewrite ^/(.*)$ /index.php last; rewrite ^/panel/(.*) /panel/index.php last; break; } 颠倒顺序,因
if (!-e $request_filename){
rewrite ^/(.*)$ /index.php last;
rewrite ^/panel/(.*) /panel/index.php last;
break;
}
颠倒顺序,因为
^/(.*)$
也匹配^/panel/(.*)
。但是您当然可以避免使用if withtry\u files
指令。顺便说一句,break
指令在这里是无用的,因为last
标志执行内部重定向,因此永远无法到达
例如,你可以把它变成这样的东西:
location / {
try_files $uri $uri/ @fallback;
}
location @fallback {
rewrite ^/panel/(.*)$ /panel/index.php last;
rewrite ^/(.*)$ /index.php last;
}
另一种方法是将map
与try\u文件一起使用,并执行如下操作:
map $uri $target {
default "/404.html";
"~^/panel/(.*)$" "/panel/index.php";
"~^/(.*)$" "/index.php";
}
server {
...
location / {
try_files $uri $uri/ $target;
}
}
从性能角度看,这甚至更好,但您必须确保目标资源可用,否则它将进入内部重定向循环。您好,感谢您的发布,但两者都失败了。第一个使/面板根本不工作anymore@user1162685这是因为配置的另一部分存在问题。