Как исключить косую черту в исходном URL при перенаправлении? - PullRequest
1 голос
/ 30 мая 2019

Мне нужно перенаправить 301 с одного домена на другой (example-a.com на example-b.com).

Это код, который я ввел .htaccess из example-a.com:

RewriteEngine on 
RewriteRule ^(.*)$ https://www.example-b.com/$1 [R=301,L]

Все URL-адреса одинаковы, за исключением того, что на страницах example-a.com все имеют / (косую черту) в конце URL-адреса, а example-b.com - нет.Так как же перенаправить без окончания /, если URL содержит один?

1 Ответ

0 голосов
/ 30 мая 2019
RewriteRule ^(.*)$ https://www.example-b.com/$1 [R=301,L]

Чтобы исключить косую черту из перенаправленного URL-адреса, затем исключите косую черту из захваченной группы в шаблоне RewriteRule . например. ^(.*)/$.

Однако, предполагая, что вы также хотите, чтобы корень документа перенаправлялся, когда в URL-пути нет косой черты, вам необходимо сделать конечную косую черту необязательной (или создать совершенно отдельное правило). Но в этом случае вам также необходимо сделать группу захвата нежадной , иначе конечный слеш всегда будет включен в захваченную группу (поскольку регулярное выражение по умолчанию жадное ).

Итак, попробуйте следующее:

RewriteRule ^(.*?)/?$ https://www.example-b.com/$1 [R=302,L]

Вам необходимо очистить кеш браузера перед тестированием. Поскольку более ранние 301-е, скорее всего, будут кэшированы.

Обратите внимание, что это 302 (временное) перенаправление. Измените это на 301 (постоянное) перенаправление - если это является намерением - только после того, как вы подтвердите, что оно работает нормально. Это сделано для того, чтобы браузер не кэшировал ошибочные перенаправления во время тестирования.

...