申请的主域名 quietguoguo.com 一直处于闲置状态,没有想好具体要做什么,最近在申请Google AdSense的时候因为要验证主域名,只能用主域名建个网站了,作为一个已经穷的土都要吃不起的劳动人民,实在没有钱再去买个服务器或者虚拟主机了,心想着能不能在我现在使用的虚拟主机上再搭建一个网站,甚至于只要能让主域名解析到一个页面上也好。

说干就干,从网上搜相关代码看看有没有前人的伟大结晶。一不小心就搜到了 星梦天空 给出的下面这段代码,通过修改 .htaccess 文件,利用Rewrite规则重定向来实现虚拟主机上不同域名绑定不同目录。

<IfModule mod_rewrite.c>  
RewriteEngine On  
RewriteBase /  
# 绑定music.xmgho.com 到子目录music  
RewriteCond %{HTTP_HOST} ^music\.xmgho\.com$ [NC]  
RewriteCond %{REQUEST_URI} !^/music/  
RewriteRule ^(.*)$ music/$1?Rewrite [L,QSA]  
#可以绑定多个 只需重复上三行代码并更改一下域名、目录名 就好了  
</IfModule>

并且为了避免通过主域名+绑定的域名目录名访问引起的尴尬,作者还给出了在绑定的域名目录music下添加含有以下内容的.htaccess 文件的解决方案。

<IfModule mod_rewrite.c>  
RewriteEngine On  
RewriteBase /  
#只许绑定的域名访问  
RewriteCond %{HTTP_HOST} !^music\.xmgho\.com$ [NC]  
RewriteRule (.*) http://music.xmgho.com/$1 [L,R=301]  
#对绑定目录下与 同名的目录的处理  
RewriteCond %{REQUEST_URI} ^\/music\/ [NC]  
RewriteCond %{QUERY_STRING} !^(.*)?Rewrite  
RewriteRule ^(.*)$ /%{REQUEST_URI}/%{REQUEST_URI}/$1?Rewrite [L,QSA]  
</IfModule>

从实现方式及代码上来看没什么问题,但是很遗憾的是没有成功啊!!!提交工单,咨询了下阿里的相关人员,给出的答复是“您好,不可以的,虚拟主机不支持多站点,只能直接访问首页文件,不支持直接访问二级目录。”。好吧,只能另想办法了。突然想起来博客是安装在子目录里面的,而我是通过根目录下的index.php文件require子目录下WordPress程序的index.php文件实现正常访问子目录下网站的,是否可以利用同样的方式通过PHP判断域名来实现不同域名指向不同目录呢?首先在根目录下的index.php文件中写入如下代码:

<?php
$site=$_SERVER['SERVER_NAME'];
if($site=='blog.quietguoguo.com'||$site=='www.blog.quietguoguo.com'){
    require( dirname( __FILE__ ) . '/site1/index.php' );
}elseif($site=='quietguoguo.com' || $site=='www.quietguoguo.com'){
    require( dirname( __FILE__ ) . '/site2/index.php');
}
?>

代码主要是通过 SERVER_NAME 获取用户输入的域名,然后通过判断域名指向不同目录下的index.php文件。经过本地测试成功,域名绑定完虚拟主机并做好解析后也可以正常访问。现在如果你访问 quietguoguo.com 这个域名应该就可以看到内容了。

2018年06月29日更新:

添加好功能代码后请注意设置域名解析并前往主机管理控制台绑定域名到主机!!!