假设用户尝试使用以下 URL 访问我的网站上的给定图像:
http://www.mywebsite.com/blog/image1.jpg?someParam=100
我需要一个重写规则,从路径中删除“博客”节点:
http://www.mywebsite.com/image1.jpg?someParam=100
答案1
尝试一下这个:
location /blog {
rewrite ^/blog(/.*)$ $1 last;
}
如果您需要为多个站点添加此子句,则不能将其放在层次结构的更高位置,因为“location”子句不能全局指定,只能针对特定站点指定。如果您需要为两个或更多站点添加此子句,则可以将其放在另一个配置文件中,然后只需将其“包含”到需要此重定向的每个站点中即可。
答案2
根据定义rewrite
指令的位置,有两种方法可以实现它:
A. 在server
上下文中
server {
...
rewrite ^/blog(/.*)$ $1 last;
return 403;
...
}
B. 在location
上下文中
location /blog {
rewrite ^/blog(/.*)$ $1 break;
}
Teo,你为什么将标志改为break
?* 因为,如果将此指令放在上下文中location
,则last
标志可能会nginx
运行 10 个周期并返回 500 错误。