Как перенаправить с помощью htaccess и пересмотреть среднюю часть URL, оставив динамический конец как есть? - PullRequest
1 голос
/ 26 апреля 2019

Мне нужно перенаправить множество URL-адресов, изменив только часть, которая находится в середине или в конце URL-адреса.Если эта часть находится посередине, конец должен остаться прежним.

Мне нужно сделать это с помощью htaccess и regex .

Я нашел много примеров в Интернете, но большинство из них перенаправляют один на один и не охватывают достаточно динамичных веб-сайтов.Также я не нашел ответа на этот вопрос в других вопросах здесь.

У меня есть URL:

www.domain.com/something (один) ИЛИ URL-адреса, такие как

www.domain.com/something-aaa-bbb-ccc ИЛИ только

www.domain.com/something-aaa

Как это сделать:

www.domain.com/somethingELSE, но ТАКЖЕ:

www.domain.com/somethingELSE-aaa-bbb-ccc

(ДЕРЖИТЕ ААА-bbb или все, что идет в конце того же самого)


Чтобы сделать это более читабельным для человека , скажем, это магазины с большим количеством мест:

www.domain.com/my-shop - После ИЛИ ничего больше:

www.domain.com/my-shop-belgrade ... или

www.domain.com/my-shop-new-york ... или ... shop-wherever-wherever-wherever

TO BE:

www.domain.com/my-office - После ИЛИ ничего больше:

www.domain.com/my-office-belgrade ... или

www.domain.com/my-office-new-york ... или ... my-office-wherever-wherever-wherever


Следующее было моим срочным решением, но оно не динамическое, оно охватывает только 2 примера, но мне нужно решение для динамического веб-сайта, решение, которое охватывает все вышеперечисленное.

<IfModule mod_rewrite.c>
    RewriteEngine On
    Redirect 301 /my-shop /my-office
    Redirect 301 /my-shop-new-york /my-office-new-york 
</IfModule>

1 Ответ

2 голосов
/ 31 мая 2019

Это решение, которое сработало для меня.

Чтобы заменить ведущий /my-shop на /my-office и оставить все впоследствии как есть, я использовал группу захвата:

(.*)

и заменил его на $1:

RedirectMatch 301 /my-shop(.*) /my-office$1
...