不重启apache服务配置二级域名

不重启apache服务配置二级域名 · April 15, 2012 views: 150

不重启Apache服务配置二级域名的两种方法

测试环境:

Windows 2000 ,Apache2.2.11

  1. 首先在%system32%\\drivers\\etc\\hosts中,添加如下内容

 

  1. 方法一,在httpd.conf中做如下配置

<IfModule vhost_alias_module>

UseCanonicalName Off

VirtualDocumentRoot c:/vhost/%0

</IfModule>

        在浏览器输入http://a.local/index.html,会打开c:/vhost/a.local/index.html

如果设置为VirtualDocumentRoot c:/vhost/%1,则在浏览器输入http://a.local/index.html,会打开c:/vhost/a/index.html

 

解释:

UseCanonicalName的用法:

使用 UseCanonicalName On 会将ServerName这个域名用于所有自引用URL、SERVER_NAME、CGI中的SERVER_PORT。

设 置为 UseCanonicalName Off 时,如果客户端提供了主机名和端口(否则将如上所述使用标准域名),Apache将会使用这些信息来构建自引用URL。这些值与用于实现基于域名的虚拟主 机的值相同,并且对于同样的客户端可用。CGI变量SERVER_NAME和SERVER_PORT也会由客户端提供的值来构建。

设置为 UseCanonicalName DNS ,用于为大量基于IP的虚拟主机支持那些古董级的不提供"Host:"头的浏览器使用。使用这个选项时,Apache将对客户端连入的服务器的IP地址进行反向DNS查询,以构建自引用URL。

 

VirtualDocumentRoot是模块 mod_vhost_alias中的指令

官方对这个模块的说明是:模块通过将HTTP请求中的IP地址和/或"Host:"头内容转换为所要提供服务的文件路径名来创建动态的虚拟主机配置。这样的做法,使得应用配置大量相似的虚拟主机变得更为容易。

也就是说这个模块就是专门用来动态创建虚拟主机的,所以使用起来也格外简单。

现在解释一下VirtualDocumentRoot c:/vhost/%0最后面的“%0”:

0

整个SERVER_NAME

1

第一部分(以“.”分隔的)

2

第二部分

-1

最后一部分

-2

倒数第二部分

2+

从第二部分开始到最后的所有部分

-2+

倒数第二部分以及之前的各部分

1+-1+

等同于0

 

  1. 方法二,在httpd.conf中做如下配置

<VirtualHost *>

  RewriteEngine On

  DocumentRoot C:/vhost

  RewriteMap lowercase int:tolower

  RewriteMap vhost txt:c:/apache/map/rewrite_map.txt

  RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$

#下面这一行的意思是,
#前部分:在vhost中查找域名,找到返回其后面的路径,否则就返回|后面的默认
#后部分:检测路径是否为匹配c:/vhost开头的

  RewriteCond ${vhost:%{SERVER_NAME}|c:/vhost} ^(c\\:/vhost/?.*)$

  RewriteRule ^/(.*)$ ${vhost:%{SERVER_NAME}|c:/vhost}/$1

</VirtualHost>        

在文件c:/apache/map/rewrite_map.txt中,写入以下内容:

a.local c:/vhost/a

b.local c:/vhost/b

c.local c:/vhost/c