首页 > 网站 > 通过伪静态规则实现子目录绑定:apache+.htaccess或IIS+ISAPI_REWRITE+httpd.ini

通过伪静态规则实现子目录绑定:apache+.htaccess或IIS+ISAPI_REWRITE+httpd.ini

2010年8月1日 发表评论 阅读评论

Apache HTTP Server一般安装在类Linux服务器上,默认支持URL重写,一般虚拟主机用户将.htaccess文件放网站根目录就可以实现伪静态了,使用下面的伪静态规则就可以实现子目录绑定。

RewriteEngine on
# 把 ip.caoger.net 改为你要绑定的域名,把 IPdir 改为要绑定的目录
RewriteCond %{HTTP_HOST} ^(www.)?ip.caoger.net$
RewriteCond %{REQUEST_URI} !^/IPdir/

# 不要改以下两行.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# 把 IPdir 改为要绑定的目录.
RewriteRule ^(.*)$ /IPdir/$1

# 把ip.caoger.net 改为你要绑定的域名
# 把 IPdir 改为要绑定的目录.
..
RewriteCond %{HTTP_HOST} ^(www.)?ip.caoger.net$
RewriteRule ^(/)?$ IPdir/ [L]

增加子目录绑定时,将上面代码除了第一行之外全部复制一遍并做相应修改后,粘贴到上面的规则后面即可。

如果根目录也绑定其它域名的话,可以通过子目录访问子站,就会导致子站文件多出个访问URL,建议不要在根目录绑定其它域名;当然,如果绑定子目录都是一级目录subDomain下的子目录,可以通过robots.txt禁止收录subDomain目录,这样就不用担心上面的问题了。可以使用DisallowDirdh88eghsjkk8834取代前面的subDomain,然后在robots.txt增加如下一行即可禁止搜索引擎在收录主站时收录该子目录(不过子网站之间似乎有点乱)。

Disallow: /Disallow

对于IIS+ISAPI_REWRITE+httpd.ini的情况,如下内容的httpd.ini可以让子网站根目录(仅http://ip.caoger.net/和对应的www子域名这2个网址)重写到子目录。

[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32

# 把 yourdomain.com 改为你要绑定的域名
RewriteCond Host: ^(www\.)?ip\.caoger\.net$
RewriteRule ^(/)$ /IPdir/ [L]

增加如下规则可以让以http://ip.caoger.net/about/(这里的域名也可能是www子域名)开头的所有url实现重写,实际地址是将ip.caoger.net/about/为ip.caoger.net/IPdir/about/。

RewriteRule ^/about/(.*)$ /IPdir/about/$1 [L]

需要重写多个(或多类)目录或文件,就要多增加几条规则。增加多个子目录,也是需要些重复劳动。显然,IIS+ISAPI_REWRITE+httpd.ini下的规则写起来比apache+.htaccess下的麻烦多了。

  1. 小菜鸟
    2010年8月1日22:19 | #1

    看起来很麻烦啊。还是有钱好啊,直接用服务器,想开几个就开几个,还不用这么麻烦

  2. moper
    2010年10月10日22:05 | #2

    蛮不错的,用上了,我转载留念了哦,呵呵

  3. 2010年11月1日14:30 | #3

    经过测试无效= =!不知道是我弄错了还是怎么。按照你的方法确实没有生效。请指教

  4. fictioner
    2010年11月10日11:13 | #5

    你好,可以实现子目录域名批量自动绑定而不需要一个目录写个规则吗?
    就是
    访问xxx.1.com到1.com/xxx
    访问xxxx.1.com到1.com/xxxx
    依次类推

  5. 2010年12月2日19:51 | #6

    其实很早以前我就想过可以通过伪静态实现子目录绑定.可我也发现不太好使.

    • 2010年12月2日22:37 | #7

      伪静态用于地址静态化还可以,但用于绑定子目录就不太靠谱了。想多弄网站,可以弄个vps玩玩;前期内容少,最好用子目录而非子域名的形式

  6. 2011年4月19日13:05 | #8

    这些方法根本不好使,空间商也许做手脚 了

    • 2011年5月3日16:57 | #9

      是的,需要额外组件支持的,而且容易出现不同域名相同内容的情况,不建议使用。

  7. benzy
    2011年4月28日17:18 | #10

    @阵风
    我觉的,这个方法只有在独立IP的情况下才有效,就是直接通过ip可以访问你的主站。虚拟主机有一个域名绑定,没有在主机商那里绑定的域名,你把域名指向ip也不能访问的。

    • 2011年5月3日17:00 | #11

      windows下是需要额外组件支持的,而且容易出现不同域名相同内容的情况,不建议使用。

  1. 本文目前尚无任何 trackbacks 和 pingbacks.