我有一个名为虚拟主机,可以处理一堆不同主机名的流量。
在Apache配置中,我需要根据用户请求的主机名创建RewriteRules。不幸的是,%{SERVER_NAME}
变量的内容始终与配置中定义为ServerName的主主机名匹配,而不是用户请求的别名。
例如:我需要提供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}
变量。
答案 0 :(得分:3)
你可能意味着%{HTTP_HOST}
。这是浏览器提供的确切站点名称。来自the manual:
如果您希望与主机名,端口或查询字符串匹配,请使用 带有%{HTTP_HOST},%{SERVER_PORT}或。的RewriteCond %{QUERY_STRING}个变量。