Тот же источник, но другое назначение на Rewriterule для перенаправления - PullRequest
0 голосов
/ 06 ноября 2019

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

что должно произойти:

example-site1.com / регистрация ----> https://register.index.com/en-us

example-site2.com / регистрация ----> https://register.index.com/en-gb

что происходит с этим кодомниже:

example-site1.com ----> https://register.index.com/en-us

example-site2.com ----> https://register.index.com/en-us

###########################

RewriteCond %{HTTP_HOST} ^example-site1\.com [OR]
RewriteCond %{HTTP_HOST} ^www\.example-site1\.com
RewriteRule ^/(registration|registration/)$ https://register.index.com/en-us [L,R=301]
RewriteRule ^/(register|register/)$ https://register.index.com/en-us [L,R=301]

RewriteCond %{HTTP_HOST} ^example-site2\.com [OR]
RewriteCond %{HTTP_HOST} ^www\.example-site2\.com
RewriteRule ^/(registration|registration/)$ https://register.index.com/en-gb [L,R=301]
RewriteRule ^/(register|register/)$ https://register.index.com/en-gb [L,R=301]

1 Ответ

0 голосов
/ 07 ноября 2019

RewriteCond (s) влияют только на сразу следующие RewriteRule, а не на множественные правила, поэтому ваш второй RewriteRule полностью независим от проверок имени вашего хоста, указанных выше. Вам нужно либо объединить эти два правила в одно (в этом случае проблем не должно быть, поскольку целью всегда является один и тот же URL-адрес, и у вас просто есть четыре [на самом деле два, см. Ниже] разных варианта, чтобы соответствовать здесь) - или выпришлось бы повторять RewriteConds снова перед вторым RewriteRule. И то же самое для второго блока.


(registration|registration/) в любом случае избыточно - вам не требуется обратная ссылка на то, что было найдено для вашей перезаписи, поэтому вы можете просто добавить косую черту послеключевое слово, что делает его необязательным - registration/?. Так что, если вы объедините оба случая в один шаблон, ^(registration|register)/?$ должен сделать свое дело. (Я удалил начальную косую черту, поскольку с самого начала она вообще не работала - если вы конфигурируете переписывание в .htaccess, эта начальная косая черта уже была удалена).

...