apache实现二级域名隐性转发
如何让网站支持二级域名的访问,并且不改变原来网站的结构,成了广大建站者的热议问题。这样做的好处就是,我们可以采用二级域名的方式访问网站的二级目录;也可以采用二级域名关联到不同的网站。本文档的实现方式是借助于apache的.htaccess实现的(IBM的IHS也是支持的,我这几就是使用的IHS)。
1、联系自己申请域名的代理商,申请泛域名支持;设置泛域名*.attagain.com指向同一个IP。
2、建立bbs.attagain.com、blog.attagain.com等二级域名,确认二级域名对应的attagain.com/bbs、attagain.com/blog等二级目录可以正常访问。
3、设置apache(ihs)的httpd.conf,使得Rewrite能够工作。
a、将下面的信息:
<Directory />
Options FollowSymLinks
AllowOverride None
FileETag All -INode
</Directory>
修改为:
<Directory />
Options FollowSymLinks
#AllowOverride None
AllowOverride All
FileETag All -INode
</Directory>
b、查找如下信息,如果是注释状态,把去掉前边的“#”。
LoadModule rewrite_module modules/mod_rewrite.so
4、设置apache自动隐藏转发信息。
需要生成的【隐藏转发】配置信息如下:
RewriteEngine on
DirectoryIndex index.html index.htm index.jsp
# <www.attagain.com>-><attagain.com>
RewriteCond %{HTTP_HOST} ^([w]{3})\.attagain\.com$
RewriteRule ^/?(.*)$ /$1 [PT,L]
# <???.attagain.com>-><attagain.com/???>(bbs,blog ...)
RewriteCond %{HTTP_HOST} ^([\w]+)\.attagain\.com$
RewriteRule ^/?(.*)$ /%1/$1 [PT,L]
说明:3-5行中,主要实现二级域名www.attagain.com转发为attagain.com的处理。
6-8行中,主要实现仅仅允许字符和数字的二级域名的隐藏转发,
即abc.attagain.com可以转发为attagain.com/abc,
abc.attagain.com/text.html可以转发为attagain.com/abc/text.html。
本人只需要二级域名的转发功能,如果有需要3、4级域名转发的话,
可以参照6-8行的正则表达式添加新的转发规则。
本文中提供两种设置方法。
a、apache的httpd.conf中直接配置。
在配置文件最后,直接添加上述【隐藏转发】配置信息。
b、在网站的虚拟目录中放置.htaccess文件,如果是上传到服务器,一定要使用ASC方式。
①、确认apache中的htaccess信息。
搜索如下信息,确保不被注释掉。
AccessFileName .htaccess
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
②、使用.htaccess文件。
创建.htaccess文件,没有扩展名,一定要使用apache所在系统的字符集。
文件内容为,【隐藏转发】配置信息。
说明:a、b两种方法,本人比较偏向于a。
原因很简单,使用.htaccess文件,apache需要逐个目录进行解析判断,效率会受到影响。