如何在Apache配置中检索服务器别名?

时间:2013-04-09 16:42:38

标签: apache mod-rewrite

我有一个名为虚拟主机,可以处理一堆不同主机名的流量。

在Apache配置中,我需要根据用户请求的主机名创建RewriteRules。不幸的是,%{SERVER_NAME}变量的内容始终与配置中定义为ServerName的主机名匹配,而不是用户请求的别名。

例如:我需要提供site.company.comsite2.company.comsite3.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}变量。

1 个答案:

答案 0 :(得分:3)

你可能意味着%{HTTP_HOST}。这是浏览器提供的确切站点名称。来自the manual

  

如果您希望与主机名,端口或查询字符串匹配,请使用   带有%{HTTP_HOST},%{SERVER_PORT}或。的RewriteCond   %{QUERY_STRING}个变量。