[英]Nginx Rewrite - Last Ignored?
在Apache中,此逻辑可以正常工作-根据文档,Nginx也可以。
location = /login/ { rewrite ^(.*)$ /login.php last; }
rewrite ^/([^/]*)/$ /page.php?c=$1 last;
理想情况下,domain.com / login /可以直接登录login.php
其他任何操作都将直接指向page.php,并传递详细信息。 但是,相反-所有请求都定向到page.php
缺少什么吗? :)
我猜想,您错误地认为指令的顺序很重要,但实际上并不重要。 Nginx严格执行指令,并且在尝试匹配location
之前先进行“服务器级” rewrite
。
您应该避免“服务器级” rewrite
。 在这种情况下,我会写:
location / {
rewrite ^/([^/]*)/$ /page.php?c=$1;
}
location = /login/ {
rewrite ^ /login.php;
}
# I guess you have something like this too
location ~ \.php$ {
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.