2013-04-09 3 views
0

У меня есть один именованный виртуальный хост, который обрабатывает трафик для множества разных имен хостов.Как получить псевдоним сервера в конфигурации Apache?

В конфигурации Apache мне нужно создать RewriteRules в соответствии с именем хоста, запрошенным пользователем. К сожалению, содержимое переменной %{SERVER_NAME} всегда совпадает с главным именем hostname, определяемым как имя_сервера в конфигурации, вместо псевдонима, запрошенного пользователем.

.: Мне например нужно служить site.company.com, site2.company.com и site3.company.com

NameVirtualHost *:80 
<VirtualHost *:80> 
    ServerName site.company.com 
    ServerAlias site?.company.com 

    RewriteCond %{SERVER_NAME} pattern 
    RewriteRule blah_depending_on_hostname_requested_by_user 
</VirtualHost> 

Проблема: %{SERVER_NAME} всегда site.company.com, даже если пользователь запрашивает один из псевдонимов, таких как site2.company.com.

Как это решить? Кажется, что нет переменной %{SERVER_ALIAS}.

ответ

2

Возможно, вы имеете в виду %{HTTP_HOST}. Это точное имя сайта, предоставляемое браузером. От the manual:

Если вы хотите, чтобы соответствовать против имени хоста, порт, или строки запроса, используйте RewriteCond с% {HTTP_HOST}, {%} SERVER_PORT или % {QUERY_STRING} переменных соответственно.

+0

Я не могу поверить, что пропустил этот :-(Именно тот, который я искал. –

Смежные вопросы