Конфликты виртуальных хостов Apache и mod_rewrite
-
18-09-2019 - |
Вопрос
Я рыскал по сети и так далее, и я не могу обойти эту проблему.
У нас есть куча поддоменов и несколько выделенных серверов.Один сервер выполняет двойную-тройную функцию отслеживания проблем и целевой страницы.Проблема в том, что целевая страница с подстановочными знаками иногда не приводит вас на нужную страницу виртуального хостинга.Я рассматривал подстановочные знаки, но они кажутся особенно широкими.
Наш сценарий заключается в следующем:
-www.askia.com является основной посадочной площадкой.Несуществующий поддомен (подстановочный знак) всегда должен располагаться здесь.
-dev.askia.com является сайтом технической поддержки и проблем.В нем есть некоторые mod_rewrites для https.Это заняло у меня некоторое время, но я заставил его работать, и я бы предпочел не ломать его.
-www.askia.fr это наш французский сайт.Вместо того, чтобы отвезти тебя в www.askia.com это приведет вас к dev.askia.com .
-www.askia.co.uk должен отвести вас к www.askia.com но это относится к dev.askia.com
Я не совсем уверен, где мне следует пытаться исправить решение.Должен ли я что-то сделать в CNAME.В конфигурационном файле virtualhosts или в файле mod_rewrite.
Решение
Попробуйте эти правила:
RewriteCond %{HTTP_HOST} ^dev\.
RewriteCond %{HTTP_HOST} !^dev\.askia\.com$
RewriteRule ^ http://dev.askia.com%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\.askia\.com$
RewriteCond %{HTTP_HOST} !^dev\.askia\.com$
RewriteRule ^ http://www.askia.com%{REQUEST_URI} [L,R=301]
Первое правило перенаправляет каждый запрос на хост, начинающийся с dev.
но не dev.askia.com
Для www.askia.com
.И второе правило перенаправляет запросы на хост, отличный от www.askia.com
и dev.askia.com
Для www.askia.com
.Таким образом, каждый запрос должен либо направляться в dev.askia.com
или www.askia.com
.
Другие советы
При использовании виртуальных хостов в Apache первый из перечисленных хостингов всегда будет использоваться по умолчанию для несоответствий.
#default vhost
# any non-matches will land here
<VirtualHost _default_:80>
ServerName www.askia.com:80
DocumentRoot /path/to/site
ErrorLog /path/ti/sites/logs/error_log
</VirtualHost>
# vhost #2
<VirtualHost _dev_Site_:443>
ServerName dev.askia.com:443
DocumentRoot /path/to/dev/site
ErrorLog /path/to/dev/sites/logs/error_log
#ssl details
SSLEngine on
SSLCipherSuite HIGH:MEDIUM
SSLCertificateFile /location/securti.crt
SSLCertificateKeyFile /location/securti.key
#any rewrite rules to apply only to this (default) domain
# force SSL for instance..
RewriteRule .* - [F]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://dev.askia.com/
</VirtualHost>
#etc, etc