我在nginx中有数千页到301重定向。我可以使用
实现这一目标return 301 https://www.newdomain.com$request_uri;
但是,我想将大约6页重定向到新域名中已更改的段塞/路径,例如
location /old-path/ {
rewrite ^ https://www.newdomain.com/newpath/ permanent;
}
我已经尝试了,但是看不清楚如何首先重定向这些6,具体来说,然后让所有规则适用于其他所有规则。
目前我只使用catch all重定向旧域,然后在新域上有301s将6个帖子更改为新路径(这6个帖子共有2个重定向)。
我想实现上述目的,不仅要将这6个页面的重定向减少到1,还要因为我想将6个页面中的一个重定向到新域的新路径,但它的旧路径仍然存在作为新域上的(新)页面(因此我需要在旧域上重定向它,而不是在新域上重定向)。
答案 0 :(得分:1)
rewrite module的指令按顺序执行,因此整个过程可以仅使用rewrite
和return
指令完成,而不必将它们包含在location
块中。例如:
server {
...
rewrite ^/old-path/ https://www.newdomain.com/newpath/ permanent;
rewrite ^/... https://www.newdomain.com/.../ permanent;
return 301 https://www.newdomain.com$request_uri;
}
如果将rewrite
语句包装在location
块中,则return
语句也必须包含在location
块中。例如:
location / {
return 301 https://www.newdomain.com$request_uri;
}
location /old-path/ {
rewrite ^ https://www.newdomain.com/newpath/ permanent;
}