城市里的游牧民族

Menu

.htaccess文件伪静态规则可以实现子目录绑定顶级域名

Apache HTTP Server一般安装在类Linux服务器上,默认支持URL重写,一般虚拟主机用户将.htaccess文件放网站根目录就可以实现伪静态了,使用下面的伪静态规则就可以实现子目录绑定。
RewriteEngine on
# 把 ip.lixinlife.com 改为你要绑定的域名,把 IPdir 改为要绑定的目录
RewriteCond %{HTTP_HOST} ^(www.)?ip.lixinlife.com$
RewriteCond %{REQUEST_URI} !^/IPdir/
# 不要改以下两行.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 把 IPdir 改为要绑定的目录.
RewriteRule ^(.*)$ /IPdir/$1
# 把ip.lixinlife.com 改为你要绑定的域名
# 把 IPdir 改为要绑定的目录.
..
RewriteCond %{HTTP_HOST} ^(www.)?ip.lixinlife.com$
RewriteRule ^(/)?$ IPdir/ [L]
增加子目录绑定时,将上面代码除了第一行之外全部复制一遍并做相应修改后,粘贴到上面的规则后面即可。
如果根目录也绑定其它域名的话,可以通过子目录访问子站,就会导致子站文件多出个访问URL,建议不要在根目录绑定其它域名;当然,如果绑定子目录都是一级目录subDomain下的子目录,可以通过robots.txt禁止收录subDomain目录,这样就不用担心上面的问题了。可以使用Disallow Dir 取代前面的subDomain,然后在robots.txt增加如下一行即可禁止搜索引擎在收录主站时收录该子目录(不过子网站之间似乎有点乱)。
Disallow: /Disallow
______________________
.htaccess文件内容
RewriteEngine on
# 把 lixinlife.com改为你要绑定的域名,bbs换成你要设置的2级域名的主机名.
RewriteCond %{HTTP_HOST} ^(bbs.)?lixinlife.com$
# 把 bbs 改为要绑定的目录.
RewriteCond %{REQUEST_URI} !^/bbs/
# 不要改以下两行.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 把 bbs改为要绑定的目录.
RewriteRule ^(.*)$ /bbs/$1
# 把 lixinlife.com 改为你要绑定的域名
# 把 bbs改为要绑定的目录.
# bbs/ 后面是首页文件index.php, index.html
RewriteCond %{HTTP_HOST} ^(bbs.)?lixinlife.com$
RewriteRule ^(/)?$ bbs/index.php [L]
演示:http://www.lixinlife.com/bbs/  http://bbs.lixinlife.com/
以下一个新方法是我在同事的网站发现的,更为实用:
Rewriteengine on
# Blog目录设置项
RewriteCond %{REQUEST_URI} !^/blog/.*
RewriteCond %{HTTP_HOST} =blog.lixinlife.com
RewriteRule ^(.*) /blog/$1 [L]
# lixinlife.com目录设置项
RewriteCond %{REQUEST_URI} !^/blog/.*
RewriteCond %{HTTP_HOST} =www.lixinlife.com
RewriteRule ^(.*) /blog/$1 [L]
# 班级网站目录设置
RewriteCond %{REQUEST_URI} !^/222/.*
RewriteCond %{HTTP_HOST} =www.532700.cn
RewriteRule ^(.*) /222/$1 [L]
# home.lixinlife.com
RewriteCond %{REQUEST_URI} !^/home/.*
RewriteCond %{HTTP_HOST} =home.lixinlife.com
RewriteRule ^(.*) /home/$1 [L]
# u.lixinlife.com
RewriteCond %{REQUEST_URI} !^/uc/.*
RewriteCond %{HTTP_HOST} =u.lixinlife.com
RewriteRule ^(.*) /uc/$1 [L]
# 修改以下语句中的 /forum 为你的论坛目录地址,如果程序放在根目录中,请将 /discuz 修改为 /
RewriteBase /222
# Rewrite 系统规则请勿修改
RewriteRule ^archiver/((fid|tid)-[\w\-]+\.html)$ archiver/index.php?$1
RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ viewthread.php?tid=$1&extra=page\%3D$3&page=$2
RewriteRule ^space-(username|uid)-(.+)\.html$ space.php?$1=$2
RewriteRule ^tag-(.+)\.html$ tag.php?name=$1
— 于 共写了2298个字
— 文内使用到的标签:
本作品采用知识共享署名-非商业性使用-禁止演绎 3.0 中国大陆许可协议进行许可。

一条回应:“.htaccess文件伪静态规则可以实现子目录绑定顶级域名”

  1. 李明说道:

    学习了。