日期:2014-05-16  浏览次数:20750 次

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需要逐个目录进行解析判断,效率会受到影响。