Перенаправление .htaccess в другой домен, кроме страницы администратора - PullRequest
0 голосов
/ 21 сентября 2018

Я спрашиваю, потому что не могу понять, что не так, и пока что ни один из ответов StackOverflow не сработал.

Мне нужно перенаправить домен на другой поддомен, кроме администратора.Например:

sub1.domain.com / testsite / shoud перенаправляет на «sub2.domain.com/testsite/», но sub1.domain.com/admin/ или «sub1.domain.com/de/admin / "должен оставаться там, где он есть.

В качестве первого шага я попытался проверить только" admin ", чтобы все перенаправлялось, кроме" sub1.domain.com/admin/":

RewriteCond %{HTTP_HOST} ^sub1\.domain\.com
RewriteCond %{REQUEST_URI} !^\/admin
RewriteRule ^/?(.*)$ http\:\/\/sub2\.domain\.com%{REQUEST_URI} [R=301,L]

Этот выглядел наиболее перспективным, но он не работает.Второе условие не работает, и страница администратора по-прежнему перенаправляется.

Если кто-то может помочь, я был бы признателен.


РЕДАКТИРОВАТЬ: я должен был сказать, что это мульти-доменsite, что означает, что у нас есть файл .htaccess для всех сайтов, и именно поэтому я специально проверяю домен.

Ответы [ 3 ]

0 голосов
/ 21 сентября 2018

Итак,

Я только что нашел причину (помимо моей глупости).Сайт, который я должен перенаправить, был сайтом Drupal.Вот почему все ссылки оказываются в одном месте:

sub1.domain.com / index.php

Причина, по которой мое условие перезаписи выше не работало, заключается в том, что sub1.domain.com/ admin перенаправляется на sub1.domain.com/index.php, который в итоге заканчивается на: «sub2.domain.com/index.php».Правильное правило переписывания выглядит так:

 RewriteCond %{HTTP_HOST} ^sub1\.domain\.com
 RewriteCond %{REQUEST_URI} !^/(admin|index\.php|de\/admin|it\/admin|user|de\/user|it\/user)
 RewriteRule (.*) http://sub2.domain.com%{REQUEST_URI} [R=301,L]

Это перенаправляет все, кроме:

sub1.domain.com/admin
sub1.domain.com/de/admin
sub1.domain.com/it/admin
sub1.domain.com/user
sub1.domain.com/de/user
sub1.domain.com/it/user

и, конечно,

sub1.domain.com/index.php

Поскольку последнее также не должнобыть перенаправленным, если пользователь вводит его напрямую, это не идеальное решение, но я могу с этим смириться.

0 голосов
/ 21 сентября 2018

RewriteCond используется для проверки состояния погоды для выполнения .htacess или нет

Для вашего случая решение может быть следующим:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.com [NC]
RewriteRule ^(admin)$ http://sub1.domain.com/$1 [R=301,L]
RewriteRule ^(.*)$ http://sub2.domain.com/$1 [R=301,L]
0 голосов
/ 21 сентября 2018

Я просто публикую это, но не могу проверить!Но я думаю, это перенаправляет ВСЕ, кроме одного домена.

RewriteCond %{HTTP_HOST} !^sub1.domain.com/admin/ [NC]
RewriteRule ^/(.*)$http\:\/\/sub2\.domain\.com%{REQUEST_URI} [R=301,L,NC]

Надеюсь, это сработает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...