У меня есть несколько URL-адресов, которые я перенаправляю в Nginx, однако у некоторых есть «-de» в конце место, которое я хочу удалить. Я также удаляю часть «bereich /» из URL:
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-адресов имеют часть / bereich
, и только некоторые из них имеют -es
или -de
, попробуйте следующее:
rewrite ^(.*)bereich/([^/]+?)(?:-de|-es)?\/$ $1$2/ permanent;
Или более строгое регулярное выражение, которое работает только с префиксом / de / kaufen /
:
rewrite ^/de/kaufen/bereich/([^/]+?)(?:-de|-es)?\/$ /de/kaufen/$1/ permanent;