手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>服务器技术>Web服务器>列表

Apache虚拟主机的配置

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

一、使用 mod_vhost_alias

1、简单的动态虚拟主机

# 从 Host: 头中取得服务器名字 Server Name

UseCanonicalName Off

# 这里的日志格式,能够在将来通过第一个参数域来分隔不同的虚拟主机的日志

LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon

CustomLog logs/access_log vcommon

# 在返回请求的文档名的路径中包含进服务器名字: server name

VirtualDocumentRoot /www/hosts/%0/docs

VirtualScriptAlias /www/hosts/%0/cgi-bin

2、更为有效的基于 IP 地址的虚拟主机

# 从 IP 地址反解析得到服务器名字(server name)

UseCanonicalName DNS

# 在日志中包含 IP 地址,便于后续分发

LogFormat "%A %h %l %u %t \"%r\" %s %b" vcommon

CustomLog logs/access_log vcommon

# 在文档路径中包含 IP 地址

VirtualDocumentRootIP /www/hosts/%0/docs

VirtualScriptAliasIP /www/hosts/%0/cgi-bin

二、使用 mod_rewrite

1、使用 mod_rewrite 实现简单的动态虚拟主机

# 从 Host: 头获取服务器名字

UseCanonicalName Off

# 可分割的日志

LogFormat "%{Host}i %h %l %u %t \"%r\" %s %b" vcommon

CustomLog logs/access_log vcommon

<Directory /www/hosts>

# ExecCGI is needed here because we can't force

# CGI execution in the way that ScriptAlias does

Options FollowSymLinks ExecCGI

</Directory>

# 接下来是关键部分

RewriteEngine On

# a ServerName derived from a Host: header may be any case at all RewriteMap lowercase int:tolower

## 首先处理普通文档:

# 允许变名 /icons/ 起作用 - 其他变名类同

RewriteCond %{REQUEST_URI} !^/icons/

# 允许 CGIs

RewriteCond %{REQUEST_URI} !^/cgi-bin/

# 开始“变戏法”

RewriteRule ^/(.*)$ /www/hosts/${lowercase:%{SERVER_NAME}}/docs/$1

## 现在处理 CGIs - 我们需要强制使用一个 MIME 类型

RewriteCond %{REQUEST_URI} ^/cgi-bin/

RewriteRule ^/(.*)$ /www/hosts/${lowercase:%{SERVER_NAME}}/cgi-bin/$1 [T=application/x-httpd-cgi]

# 好了!

2、使用单独的虚拟主机配置文档 vhost.map

vhost.map 文档包含了类似下面的内容:

www.customer-1.com /www/customers/1

www.customer-2.com /www/customers/2

# ...

www.customer-N.com /www/customers/N

http.conf 包含了:

RewriteEngine on

RewriteMap lowercase int:tolower

# 定义映像文档

RewriteMap vhost txt:/www/conf/vhost.map

# 和上面的例子相同,处理变名

RewriteCond %{REQUEST_URI} !^/icons/

RewriteCond %{REQUEST_URI} !^/cgi-bin/

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

# 这里做基于文档的重新映射

RewriteCond ${vhost:%1} ^(/.*)$

RewriteRule ^/(.*)$ %1/docs/$1

RewriteCond %{REQUEST_URI} ^/cgi-bin/

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

RewriteCond ${vhost:%1} ^(/.*)$

RewriteRule ^/(.*)$ %1/cgi-bin/$1


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!