Мне нужно сделать 301 редирект с одного домена на другой (example-a.com
на example-b.com
).
Это код, который я вставил в .htaccess
of example-a.com
:
RewriteEngine on
RewriteRule ^(.*)$ https://www.example-b.com/$1 [R=301,L]
Все URL-адреса одинаковы, за исключением того, что страницы example-a.com
имеют /
(косую черту) в конце URL-адреса, а example-b.com
— нет. Итак, как перенаправить без окончания /
, если URL-адрес содержит его?
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 (постоянное) перенаправление — если это намерение — только после того, как вы подтвердите, что оно работает нормально. Это делается для того, чтобы браузер не кэшировал ошибочные перенаправления во время тестирования.