在 CentOS Linux 上使用 nginx 1.8.1,我尝试执行以下操作:
- 将流量从 重定向
server_name server1.olddomain.com;
至server2.newdomain.com
- 执行此操作时,请
sites
从路径中删除。
例如,来自 的修改片段nginx.conf
。
server {
...
server_name server1.olddomain.com;
...
location /sites/ITDept {
rewrite ^(.*) https://server2.newdomain.com/ITDept;
}
虽然这确实按照上述确切规则的预期工作,但其他任何方法都不起作用。
https://server1.olddomain.com/sites/ITDept/subfolder/subfolder
不按照需要重定向https://server2.newdomain.com/ITDept/subfolder/subfolder
。它重定向到https://server2.newdomain.com/sites/ITDept/subfolder/subfolder
.
我花了几个小时试图找出正确的语法但没有成功。我希望有人可以提供帮助。先感谢您。
答案1
我可能刚刚想通了。通过将重写规则修改为:
rewrite ^/sites/(.*)$ https://server2.newdomain.com/$1 last;
似乎可以做到这一点。除非有人有更好的选择。我仍在测试许多链接以确定这是否有效,但到目前为止一切顺利。感谢这篇文章。如何使用 HttpRewriteModule 快速轻松地删除 Nginx 中 URL 的一部分?
答案2
不确定你想对不以 开头的 URI 做什么/sites
,但一个简单的rewrite
应该是所需要的:
server {
server_name server1.olddomain.com;
rewrite ^/sites(.*)$ https://server2.newdomain.com$1 permanent;
return 404;
}
看这个文件了解详情。