如何使用 nginx 重定向路径,同时删除部分路径

如何使用 nginx 重定向路径,同时删除部分路径

在 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;
}

这个文件了解详情。

相关内容