首页 建站服务器相关Windows平台Rewrite1.3一个空间绑定多域名的实现

Rewrite1.3一个空间绑定多域名的实现

  Rewrite是一项服务器RUL重写技术。利用它可以实现伪静态,子目录跳转(绑定),域名重定向等功能。目前常见的Windows版本有三个,1.3、2.x、3.x,三个版本的配置文件并不相互兼容,因此百度的时候一定注意。笔者目前的主机商使用的是1.3的老版本。昨天折腾半天,终于把Rewrite1.3的规则弄得一知半解了。

  在通过ISAPI Rewrite设置WordPress的固定链接一文中我已经对Rewrite的使用做了一些简单的介绍:我们新建一个httpd.ini文件,把这个文件放在IIS主机的根目录然后再把规则放在这个文件里就好了。

  例如:我有三个域名:gooduse.info, yblog.info, yfcn.info,这时候我们在空间根目录新建三个文件夹,分别为:domaingooduse,domainyfcn,domainyblog,你可以根据自己的喜好任意命名。

  以上面的内容为例,下面给出整个文件的写法:

[ISAPI_Rewrite]

# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
# Rules to ensure that normal content gets through

RewriteCond Host: ^www\.yblog\.info$
RewriteRule (.*) /domainyblog/$1 [I,L]

RewriteCond Host: ^yblog\.info$
#RewriteRule (.*) /domainyblog/$1 [I,L]
RewriteRule (.*) http\://www\.yblog\.info$1 [I,R]
RewriteCond Host: ^www\.gooduse\.info$
RewriteRule (.*) /domaingooduse/$1 [I,L]

RewriteCond Host: ^gooduse\.info$
#RewriteRule (.*) /domaingooduse/$1 [I,L]
RewriteRule (.*) http\://www\.gooduse\.info$1 [I,R]
RewriteCond Host: ^www\.yfcn\.info$
RewriteRule (.*) /domainyfcn/$1 [I,L]

RewriteCond Host: ^yfcn\.info$
#RewriteRule (.*) /domainyfcn/$1 [I,L]
RewriteRule (.*) http\://www\.yfcn\.info$1 [I,R]

其中RewriteCond Host: 为域名的正则,紧跟着它的下一行RewriteRule 为对应的处理规则。

RewriteCond Host: ^yblog\.info$
#RewriteRule (.*) /domainyblog/$1 [I,L]
RewriteRule (.*) http\://www\.yblog\.info$1 [I,R]

  上面三行中下面两行的规是有冲突的,只能使用一种,因此我注释掉中间的一行。当我们在浏览器输入了不带www的yblog.info的情况下有两种选择:重定向yblog.info到www.yblog.info,这样当我们输入根域名访问时会直接跳转到带www的域名;或者也直接绑定yblo.info到domainyblog目录,这样一来就有两个域名可以访问网站,一个带www,一个不带,对于搜索引擎来说这会被视作两个完全不同的网站而内容相同,会被降低权重(据说),因此RewriteRule (.*) /domainyblog/$1 [I,L]规则和RewriteRule (.*) http\://www\.yblog\.info$1 [I,R]只能选择一个,我选择了后者。如果空间禁止了跳转功能的话,也只好使用中间那行,注释掉第三行以保证两个域名都能正常访问网站。