利用.htaccess将一个虚拟主机绑定多个独立网站
虚拟主机可以绑定很多域名,但是打开后是同一个网站,如何让一个虚拟主机绑定不同的域名,并且打开域名后访问的是不同的网站,只要你的主机开启了rewrite重写模块,支持.htaccess的话,就可以做到,这样对于一些要求不高的网站可以节省网站成本。
比如我们要实现以下的域名绑定,虚拟主机里分别有三个目录:site1、site2、site3
site1目录:绑定域名site1.com和www.site1.com
site2目录:绑定域名site2.com和www.site2.com
site3目录:绑定域名site3.com和www.site3.com
方法如下:
第一步,先把所有的域名和虚拟主机互相绑定解析。
第二步,在虚拟主机网站根目录下放置一个.htaccess文件,内容如下:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^(www\.)?site1\.com$ [NC] RewriteCond %{REQUEST_URI} !^/site1/ RewriteRule ^(.*)$ site1/$1?Rewrite [L,QSA] </IfModule>
上面的代码的作用是把www.site1.com这个域名绑定到了虚拟主机里site1这个目录,相当于site1就是一个独立域名主机服务器。但是如果只到这里,你会发现,当你通过www.site.com/site1/的方式也可以访问www.site1.com里面的内容,这当然是我们不想看到的,也不利于seo。如果禁止其他域名访问www.site1.com中的内容呢?接下来需要继续操作:
第三步,在site1目录下放置一个.htaccess文件,内容如下:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^(www\.)?site1\.com$ [NC] RewriteCond %{REQUEST_URI} !^/site1/ RewriteRule ^(.*)$ site1/$1?Rewrite [L,QSA] </IfModule>
通过以上两步,已经成功的实现了域名www.site1.com绑定site1子目录,如果继续增加www.site2.com、www.site3.com等站点的话,和上面的方法一样。
保哥亲测可用!这个方法对于一些空间商后台不支持子目录绑定功能的虚拟主机,可使用此方法破解!
以上.htaccess文件里代码的作用
【RewriteEngine On】
表示重写引擎开,关闭off,作用就是方便的开启或关闭以下的语句,这样就不需要一条一条的注释语句了。
【RewriteCond %{HTTP_HOST} ^(www\.)?site1\.com$ [NC]】
表示重写条件,前面%{HTTP_HOST}表示当前访问的网址,只是指前缀部分,格式是www.site1.com不包括“http://”和“/”,^表 示字符串开始,$表示字符串结尾,\.表示转义的. ,如果不转义也行,推荐转义,防止有些服务器不支持,?表示前面括号www\.出现0次或1次,这句规则的意思就是如果访问的网址是site1.com或者 www.site1.com就执行以下的语句,不符合就跳过。还有,不能保证每个人输入的网址都是小写的,如果输入大写的呢,linux系统是区分大小写的,所以应该在RewriteCond后添加[NC]忽略大小写的。
【RewriteCond %{REQUEST_URI} !^/blog/】
也是重写条件,%{REQUEST_URI}表示访问的相对地址,就是相对根目录的地址,就是域名/后面的成分,格式上包括最前面的“/”,!表示非,这句语句表示访问的地址不以/blog/开头,只是开头^,没有结尾$
【RewriteCond %{REQUEST_FILENAME} !-f】
【RewriteCond %{REQUEST_FILENAME} !-d】
这两句语句的意思是请求的文件或路径是不存在的,如果文件或路径存在将返回已经存在的文件或路径
【RewriteRule ^(.*)$ blog/$1】
表示重写规则,最重要的部分,意思是当上面的RewriteCond条件都满足的时候,将会执行此重写规则,^(.*)$是一个正则表达的 匹配,匹配的是当前请求的URL,^(.*)$意思是匹配当前URL任意字符,.表示任意单个字符,*表示匹配0次或N次(N>0),后面 /site1/$1是重写成分,意思是将前面匹配的字符重写成/site1/$1,这个$1表示反向匹配,引用的是前面第一个圆括号的成分,即^(.*)$中 的.* 。
- .htaccess实现一台虚拟主机绑定多个网站的方法
- WordPress免插件自动更新sitemap.xml站点地图
- 利用.htaccess设置WordPress防盗链
- http跳转https和https跳转http的两种301重定向代码
- 禁止网站目录php脚本执行权限的配置方法
- 利用.htaccess添加X-frame-options响应头
- WordPress在Nginx下开启伪静态后台页面404路径缺少wp-admin问题
- Typecho伪静态规则及301跳转设置