第七星尘

利用Htaccess绑定域名到子目录教程以及遇到的问题

例如,我们安装了一个轻博客程序到/qing 这个子目录下,并且想绑定域名qing.star7th.com,那么便可以利用Htaccess实现。事先说明,所用的服务器空间必须支持Htaccess(SAE和BAE都不支持Htaccess)。
首先,在根目录下放置一个.Htaccess文件。如果没有请创建。如果已经存在,请把下面的代码追加进去。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^qing.star7th.com$ [NC]
RewriteRule ^(.*)$ /qing/$1 [QSA,PT,L]

根目录的事情搞定后,便进入/qing 目录,同样放置/建立/追加 下面的Htaccess重写规则

RewriteEngine On
RewriteBase /qing

就上面两步便可以实现绑定到子目录功能了。但是,如果你安装一些程序,你会发现,你可能会以这种形式访问:
http://qing.star7th.com/qing/

明明访问的是http://qing.star7th.com,但网址可能会被链接至至http://qing.star7th.com/qing/
出现这种情况不是因为Htaccess文件写错了,而是程序本身的问题。
首先你需要明白,无论是通过http://qing.star7th.com方式还是通过http://qing.star7th.com/qing/,你访问的实际上是/qing这个子目录的php程序。但是,很明显,我们都想用户通过http://qing.star7th.com 访问,而不是在地址末尾多一个/qing。但是大多数程序(这里只讨论PHP语言的)在生成链接让用户点击的时候,却总可能生成带有/qing 末尾的链接。当用户点击的时候,自然跳转到带尾巴的地址去了。
为什么程序生成链接的时候会带有这个子目录尾巴呢?因为大多数程序在获取URL的时候都可能是用这个系统变量:$_SERVER[‘PHP_SELF’] 。注意,当你把程序放到子目录去的时候,$_SERVER[‘PHP_SELF’]得到的路径信息是包含子目录名的。当你访问http://qing.star7th.com/ 的时候,$_SERVER[‘PHP_SELF’]的值是 /qing/index.php
而不是/index.php。程序用前者生成链接,自然带有目录地址了。

解决方法是,修正程序中定义本站url的代码。wordpress程序很好,它能在后台定义本站url,你只需要在后台修改即可。而很多程序(尤其是小程序)一般都需要修正。具体怎么修改,当然是具体情况而定。一个小技巧:搜索源代码中$_SERVER[‘PHP_SELF’]这个变量的所在文件

 如无特殊说明,本站皆为原创。转载请注明来自第七星尘的技术博客《利用Htaccess绑定域名到子目录教程以及遇到的问题》

评论

  1. 无纯洁 #1

    还有一种方法(Godaddy经济型主机测试通过),需要支持多子域名,子域名绑定到子目录,让不同的主域名反向代!理到不同的子域名变相建立多个站点。

    回复
    2013-10-17
  2. 王攀 #2

    那个百度统计的代码放哪里啊?亲

    回复
    2012-11-23
  3. 王攀 #3

    可以了是我弄错了不用麻烦了

    回复
    2012-11-23
  4. 王攀 #4

    帅哥那个多说插件安装到wordpress之后怎么设置让别人也能使用一键登录貌似现在只支持我一个人使用请大神指教啊谢谢了!!!

    回复
    2012-11-23
  5. 暗白 #5

    学习了,老大威武!!!!

    回复
    2012-11-19