Виртуальные хосты Apache и конфликты mod_rewrite - PullRequest
2 голосов
/ 28 апреля 2009

Я обыскивал сеть и ТАК, и не могу обойти или решить эту проблему.

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

Наш сценарий следующий:

- 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.

Ответы [ 2 ]

1 голос
/ 04 мая 2009

При использовании виртуальных хостов в 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
1 голос
/ 28 апреля 2009

Попробуйте эти правила:

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.

...