我目前有一些简单的规则来更改一些已更改的链接的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
处理您问题中的第二种情况。