经常会有这种情况,买国内那些大服务商的虚拟主机,比如西部数码,华夏名网,阿里云旗下的万网等,一般都是允许绑定多个域名,但是只能创建一个网站,买子网站权限还特别贵。如果需要用到二级域名做子站点,或者就是干脆是多个域名多个网站的时候,就会相当尴尬了,但其实一直都可以通过伪静态解决,国内很多服务商的iis也是兼容apache伪静态文件的。
一般虚拟主机都是apache或者iis,其中iis最多,如果是用的nginx那默认肯定是支持子目录绑定的。
内容参考CSDN博客:一把编程的菜刀
一般来说,一个.htaccess文件首先需要包含这三条:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f #开启路径重写,对已存在的路径和文件进行跳过
然后开始进行子目录的路径重写
1.首先假如我有三个域名,如下所示
a.host.com b.host.com c.host.com
2.其中一个作为主网站放在根目录,另外两个放在子目录,放在根目录的不需要进行任何额外设置,而子目录则需要创建相应的文件夹并且放进源码。
b.host.com /book/ c.host.com /wap/
3.如果正常的情况下,要访问肯定只能是域名/路径名的格式,这就失去子网站的意义,那么为了让用户和搜索引擎都看不出来,在.htaccess加上几条即可。
#绑定b.host.com到/book/目录 RewriteCond %{HTTP_HOST} ^b.host.com$ [NC] RewriteCond %{REQUEST_URI} !^/book/ RewriteRule ^(.*)$ book/$1?Rewrite [L,QSA] #绑定c.host.com到/wap/目录 RewriteCond %{HTTP_HOST} ^c.host.com$ [NC] RewriteCond %{REQUEST_URI} !^/wap/ RewriteRule ^(.*)$ wap/$1?Rewrite [L,QSA]
加入上述代码后,访问子网站就可以直接通过二级域名了,但是现在又出现了两个问题。首先是通过绑定在根目录的域名加路径名还是可以访问到子网站的页面,而且还有可能被搜索引擎抓取,同时似乎也没有说明,如果子网站要设置自己的伪静态该怎么做。解决的办法也很简单,在子目录里再建立.htaccess文件。
4.单独设置子网站的伪静态并且解决上述问题,以b.host.com为例,在/book文件夹里创建.htaccess文件,加入如下代码(最开始那重要的三条我就不重复了,反正一定要加上)。
#只许绑定的域名访问 RewriteCond %{HTTP_HOST} !^b.host.com$ [NC] RewriteRule (.*) http://b.host.com/$1 [L,R=301] #对绑定目录下与 同名的目录的处理 RewriteCond %{REQUEST_URI} ^/book/ [NC] RewriteCond %{QUERY_STRING} !^(.*)?Rewrite RewriteRule ^(.*)$ /%{REQUEST_URI}/%{REQUEST_URI}/$1?Rewrite [L,QSA] #下面就可以单独自己写这个子网站的其它伪静态规则,在主网站的.htaccess也是同理,三个网站的各自的伪静态是独立的
到这里,教程就结束了,我也是回想起几年前折腾虚拟主机的时候,作为学生真心没什么钱买服务器,不像现在有工资支撑搞事情,那时候虚拟主机还很火热,价格对于我而言也比较高,奈何没什么技术也不懂什么东西,要是向现在这样得心应手那该多舒服。反正对于我而言,还是服务器无比自由。