Назад | Перейти на главную страницу

Объедините два разных домена, но сохраните виртуальный хост с перенаправлением Apache

У меня два домена и один действующий поддомен. Как я могу этого добиться?

ex-ample.com    » example.com
www.example.com » example.com
en.ex-ample.com » en.example.com
en.example.com  » en.example.com

Сейчас я использую следующее правило .htaccess:

RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

Пробовал много, но лучшее, что я могу получить, - это цикл перенаправления. Вы можете помочь мне?

Если я правильно понял ваш запрос, я думаю, что типичная конфигурация именованного виртуального хоста даст вам то, что вы хотите. Я не совсем уверен, что вы имеете в виду под «сохранением виртуального хоста»; если это решение бесполезно, возможно, вы сможете уточнить свой запрос.

В любом случае я представлял себе что-то вроде этого:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName example.com
    ServerAlias ex-ample.com www.example.com
    DocumentRoot /path/to/example.com
</VirtualHost>

<VirtualHost *:80>
    ServerName en.example.com
    ServerAlias en.ex-ample.com
    DocumentRoot /path/to/en.example.com
</VirtualHost>

Теперь запросы на любой из ...

... перейдет на VirtualHost example.com и запросит ...

... перейдет на VirtualHost en.example.com.

Если все, что вам нужно сделать, это найти правило перезаписи, попробуйте следующее:

# REWRITE en.ex-ample.com to en.example.com
RewriteCond %{HTTP_HOST} ^en\.ex-ample\.com$ [NC]
RewriteCond %{HTTP_HOST} !^$    
RewriteRule (.*) http://en.example.com$1 [R=301,L]

# REWRITE ANYTHING OTHER THAN 'example.com' and 'en.example.com'
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteCond %{HTTP_HOST} ^en\.example\.com$ [NC]
RewriteCond %{HTTP_HOST} !^$    
RewriteRule (.*) http://example.com$1 [R=301,L]

Предполагая, что у вас есть один виртуальный хост для всех подходящих доменов.