我试图让这个重定向工作两个规则,但不知道如何, 根据文档,这应该工作,他们分开。但我希望这两条规则都适用。
还应该可以访问/ panel / assets /文件夹。
任何人都可以帮助我遵守这些规则吗?花了30多分钟试图解决这个问题。
if (!-e $request_filename){
rewrite ^/(.*)$ /index.php last;
rewrite ^/panel/(.*) /panel/index.php last;
break;
}
答案 0 :(得分:0)
反转订单时^/(.*)$
也匹配^/panel/(.*)
。但你当然可以避免使用if try_files
指令。顺便说一下,break
指令在这里没用,因为last
标志执行内部重定向,因此它永远不会到达。
例如,你可以把它变成这种东西:
location / {
try_files $uri $uri/ @fallback;
}
location @fallback {
rewrite ^/panel/(.*)$ /panel/index.php last;
rewrite ^/(.*)$ /index.php last;
}
另一个想法是将map
与try_files
一起使用并执行以下操作:
map $uri $target {
default "/404.html";
"~^/panel/(.*)$" "/panel/index.php";
"~^/(.*)$" "/index.php";
}
server {
...
location / {
try_files $uri $uri/ $target;
}
}
从性能的角度来看,情况会更好,但您必须确保目标资源可用,否则它将最终进入内部重定向周期。