Apache2 перенаправляет домен на внутреннюю страницу

У меня есть два домена, указывающие на сайт, размещенный на apache2 (например, a.com и b.com). Основным доменом является a.com, и с этого домена можно получить доступ к веб-сайту.

Однако страница a.com/test/ должна перенаправлять на b.com (не b.com/test/) для отображения содержимого с сервера, и это содержимое также должно отображаться при прямом доступе к b.com.

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


person Zak    schedule 01.09.2015    source источник


Ответы (1)


Обратный прокси не нужен. Пока DNS a.com и b.com указывают на один и тот же сервер apache, вы можете настроить это, просто используя vhosts и перенаправление.

Для виртуального хоста b.com просто сделайте его DocumentRoot тестовой папкой (полный путь). Если это невозможно, вы также можете сделать это через htaccess.

Для перенаправления добавьте это в файл htaccess в корне документа a.com:

RewriteEngine On
RewriteCond %{HTTP_HOST} a\.com$ [NC]
RewriteRule ^test/(.*)$ http://b.com/$1 [L,R=301]

и для b.com, если вы не можете установить DocumentRoot в vhost

RewriteCond %{HTTP_HOST} b\.com$ [NC]
RewriteCond $1 !^test/
RewriteRule ^(.*)$ /test/$1 [L]
person Jon Lin    schedule 01.09.2015
comment
Спасибо! Будет ли это работать, если я использую wordpress, поэтому каталог / test / уже переписан (из-за постоянных ссылок wordpress)? - person Zak; 01.09.2015
comment
Если вы используете wordpress, то удаление части постоянной ссылки запутает wordpress и приведет к тому, что он не будет работать, для второй части (b.com) вам может потребоваться поискать специальное решение для wordpress, например плагин - person Jon Lin; 01.09.2015
comment
Даже если он находится в htaccess, wordpress просматривает запрошенный URI, и не видит /test/ в запрошенном URI, поэтому возвращает 404. Неважно, что вы делаете в htaccess. - person Jon Lin; 01.09.2015
comment
Когда я пытаюсь это сделать, я получаю внутреннюю ошибку сервера из журналов: Request exceeded the limit of 10 internal redirects due to probable configuration error. Есть идеи, почему это происходит? Спасибо. - person Zak; 01.09.2015
comment
Есть ли конфликты с правилами wordpress или другими правилами перезаписи модов, которые уже есть в вашем файле htaccess? - person Jon Lin; 01.09.2015
comment
Этого не должно быть, потому что ваш использовал последний флаг, а я поставил его перед всем остальным. Текущий htaccess (без ваших дополнений) RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] - person Zak; 01.09.2015