Я пытаюсь перенаправить все 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
- так что это не будет перенаправлять в «тот же каталог» в другом домене.
Поскольку оба домена указывают на один и тот же сервер (и я предполагаю, что это одно и то же место в файловой системе), тогда вам нужно явно проверить домен (например, hostname ) в вашем перенаправлении.
Попробуйте вместо этого следующее:
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-е файлы постоянно кэшируются браузером, поэтому тестирование может быть проблематичным.
Вам необходимо очистить кеш браузера перед тестированием.