我在 Nginx 中重定向了许多 URL,但有些 URL 的位置末尾有“-de”,我想将其删除。我还删除了 URL 的“bereich/”部分:
https://www./example.com/de/kaufen/bereich/menorca-de/
https://www./example.com/de/kaufen/bereich/spain-de/
https://www./example.com/de/kaufen/bereich/costa-de-la-calma/
...我希望最终采用这种格式:
https://www./example.com/de/kaufen/menorca/
https://www./example.com/de/kaufen/spain/
https://www./example.com/de/kaufen/costa-de-la-calma/
我可以使用两个单独的重写规则来做到这一点,例如:
# Remove ES and DE from URL's
rewrite ^(.*)(-de|-es)/$ $1/ permanent;
# Remove bereich from URL
rewrite ^/de/kaufen/([a-zA-Z'-]+)/$ /de/kaufen/$1/? permanent;
..但想问一下是否有办法将这两条规则结合起来,这样链中就只有一个重定向,而不是两个。我添加了第三个 URL,以证明某些 URL 中有“-de”,需要保留,只有以“-de”结尾且正斜杠前面的 URL 才需要保留。非常感谢。
答案1
如果全部您的 URL 中有/bereich
部分,并且只有部分 有-es
或-de
部分,请尝试以下操作:
rewrite ^(.*)bereich/([^/]+?)(?:-de|-es)?\/$ $1$2/ permanent;
或者,更严格的正则表达式仅适用于/de/kaufen/
前缀:
rewrite ^/de/kaufen/bereich/([^/]+?)(?:-de|-es)?\/$ /de/kaufen/$1/ permanent;