Nginx 重写 - 在路径和 url 结束段中查找和替换



我目前有一些简单的规则来更改一些已更改的链接的URL路径。 但是我需要在"1 美元"上查找和替换

可能吗

我在下面尽我所能概述了它......

现行规则

location ~ ^/simpsons-mirrors/(.*) {
return 301 /simpsons-london/$1;
}
location ~ ^/simpsons-mirrors(.*) {
return 301 /simpsons-london;
}

需要这样的事情发生:

/simpsons-mirrors/simpson-morrors-something-else-whatever-blah
to
/simpsons-london/simpsons-london-something-else-whatever-blah

可以使用正则表达式反向引用查找以前的捕获。反向引用由反斜杠后跟捕获编号组成,例如:

rewrite ^/(simpsons-mirrors)/1(.*)$ /simpsons-london/simpsons-london$2 permanent;

第一次捕获包含搜索文本,然后进行第二次匹配。第二个捕获包含追加到目标的 URI 的其余部分。

您可以使用 map 指令创建常规解决方案。

例如:

map $request_uri $to_text {
    default                    0;
    ~*^/simpsons-mirrors(/|$)  simpsons-london;
}
server {
    ...
    if ($to_text) {
        rewrite ^/([^/]+)/1(.*)$ /$to_text/$to_text$2 redirect;
        rewrite ^/([^/]+)$ /$to_text redirect;
    }

在上述情况下,搜索文本只是第一对/之间的文本,但替换的文本取自地图。

第二个rewrite处理您问题中的第二种情况。

相关内容

最新更新