Я пытаюсь перенаправить все URL-адреса из одного каталога в одном домене в тот же каталог в другой домен на том же сервере и не могу заставить его работать. Как мне решить эту проблему?
Я пытался:
RewriteBase /
RewriteRule ^dir1\/dir2(.*)$ https://domain-2.org/$1 [L,R=301]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^dir1/dir2(.*)$ https://domain-2.org/$1 [L,R=301]
</IfModule>
Я надеюсь перенаправить все URL-адреса, подобные этим шаблонам:
www.domain-1.org/dir1/dir2/url-1
www.domain-1.org/dir1/dir2/url-2
www.domain-1.org/dir1/dir2/url-N
https://domain-1.org/dir1/dir2/url-1
https://domain-1.org/dir1/dir2/url-2
https://domain-1.org/dir1/dir2/url-N
http://domain-1.org/dir1/dir2/url-1
http://domain-1.org/dir1/dir2/url-2
http://domain-1.org/dir1/dir2/url-N
https://www.domain-1.org/dir1/dir2/url-1
https://www.domain-1.org/dir1/dir2/url-2
https://www.domain-1.org/dir1/dir2/url-N
http://www.domain-1.org/dir1/dir2/url-1
http://www.domain-1.org/dir1/dir2/url-2
http://www.domain-1.org/dir1/dir2/url-N
кому:
https://domain-2.org/dir1/dir2/url-1
https://domain-2.org/dir1/dir2/url-2
https://domain-2.org/dir1/dir2/url-N
RewriteRule ^dir1\/dir2(.*)$ https://domain-2.org/$1 [L,R=301]
Предполагая, что у вас есть RewriteEngine On
в обоих случаях ваши две "попытки" действительно тот же самый. RewriteBase
здесь не имеет значения.
В $1
обратная ссылка относится к захваченной группе в RewriteRule
шаблон, т.е. (.*)
- все после /dir1/dir2
- так что это не будет перенаправлять в «тот же каталог» в другом домене.
Поскольку оба домена указывают на один и тот же сервер (и я предполагаю, что это одно и то же место в файловой системе), вам необходимо явно проверить домен (т.е. имя хоста) в вашем перенаправлении.
Вместо этого попробуйте следующее:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?domain-1\.org [NC]
RewriteRule ^dir1/dir2/.* https://domain-2.org/$0 [R=302,L]
$0
- это обратная ссылка на весь URL-путь, который соответствует RewriteRule
шаблон. например. dir1/dir2/url-N
.
Обратите внимание, что это 302 (временное) перенаправление. Протестируйте с 302 и переходите на 301 (постоянный) редирект, только когда вы подтвердите, что это работает нормально. 301-файлы постоянно кэшируются браузером, поэтому тестирование может быть проблематичным.
Перед тестированием вам необходимо очистить кеш браузера.