1

我有一个命名的虚拟主机来处理一堆不同主机名的流量。

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

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

4

1 回答 1

3

你可能的意思是%{HTTP_HOST}。这是浏览器提供的确切站点名称。从手册

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

于 2013-04-09T16:48:04.137 回答