关注联楷|返回首页 | 网站案例 | 帮助中心

合作共赢、快速高效、优质的网站建设提供商

上海网站建设 

服务热线:021-61394118

上海联楷科技

如何配置apache虚拟主机

作者:佚名   时间:2012-05-22   分享到:

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/
# 允许 cgisrewritecond %{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.linksj.com/hynews/20151126/n2343.html

上海联楷网络新闻