У меня два домена и один действующий поддомен. Как я могу этого добиться?
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]
Предполагая, что у вас есть один виртуальный хост для всех подходящих доменов.