如何在 nginx 中转换(重写)部分 URL

Posted

技术标签:

【中文标题】如何在 nginx 中转换(重写)部分 URL【英文标题】:How to transform (rewrite) part of URL in nginx 【发布时间】:2018-01-16 18:47:57 【问题描述】:

我正在尝试将流量重定向到我们的新服务器,但旧服务器 (Mac OS) 使用不区分大小写的文件名,而新(嵌入式)服务器使用 Linux(区分大小写)。 我的问题是从以下位置重定向流量:

http://server.com/NEW/variable_url

http://server.com/new/variable_url

(注意下方的“新”)。

我希望能够在不使用 perl 或 lua 或其他模块的情况下为 nginx 执行此操作,因为该服务器在嵌入式环境中运行。

到目前为止我尝试过:

 location ~* ^/new/ 
       access_log /var/log/nginx/new.log combined;
        rewrite ^/new/(.*)$ $1 permanent;
     

没有成功。

【问题讨论】:

【参考方案1】:

也许是这样的?

位置/新

重写 ^/NEW/(.*)$ /new;

【讨论】:

不工作,仍在尝试...它没有重定向到正确的页面。【参考方案2】:

自己解决了。我错过了指向 Web 服务器根目录的根指令。所以对于任何感兴趣的人来说,解决方案是:

location ~* ^/NEW/ 
        root /etc/nginx/html/;
        rewrite /NEW/(.*)$ /new/$1 permanent;
     

【讨论】:

【参考方案3】:

如果你想重定向来自特定链接/NEW/exampe1的流量,你可以试试

location =/NEW/example1

rewrite ^ /new/example1 last;

【讨论】:

对不起,我的问题很糟糕,在这种情况下,“示例”可以是任何东西,因为有很多网站,它不是静态的。

以上是关于如何在 nginx 中转换(重写)部分 URL的主要内容,如果未能解决你的问题,请参考以下文章

nginx如何截取url部分字符并替换,求助

如何在 NGINX 的代理响应中重写 URL

如何将此 apache 重写转换为 nginx?

如何使 Zend Framework 2 与 nginx 一起工作?

nginx用url重写部分内容?标记

如何使 URL 重写与 web.Release.config 转换一起工作?