找回密码
 新建账号

Apache .htaccess 为虚拟主机建立子站点 绑定子目录

[复制链接]
php 发表于 2015/12/12 18:34 | 显示全部楼层 |阅读模式
虚拟主机通常非常便宜,不过很多虚拟主机运营商不允许虚拟主机绑定子目录,禁止为虚拟主机建议子站,想要建几个网站就要开几个虚拟主机。

Apache虚拟主机可以使用.htaccess建立子站点,将来自不同域名(二级域名或顶级域名不限)的请求分发到不同的子站点去。

.htaccess虚拟主机子目录绑定思路:为一个虚拟主机绑定多个域名,为每个域名建立一个子目录,在.htaccess中判断客户端访问的域名,然后将请求分发到子站点。

需要注意以下几个问题
  • 必须保证所有子站请求都经过虚拟主机根目录中转,而不是直接访问子目录中的文件
  • 必须禁止各个子站互相访问自身以外的文件
  • 虚拟主机根目录只存放子站目录,不将乱七八糟的文件放到根目录

以下是Apache使用.htaccess为虚拟主机子目录搭建子站的具体实现。

假设D:\server\www为虚拟主机根目录,我们将域名wuxiancheng.cn和0816.host都绑定到虚拟主机,并且在虚拟主机根目录建立两个文件夹,文件夹名称分别为wuxiancheng.cn和0816.cn,在根目录和两个子目录分别各新建一个.htaccess文件。

D:\server\www\.htaccess文件内容如下
  1. RewriteEngine On
  2. RewriteCond "%{HTTP_HOST}" "wuxiancheng\.cn" [NC]
  3. RewriteRule ^/?(.*)$ wuxiancheng.cn/$1 [L,QSA]
  4. RewriteCond "%{HTTP_HOST}" "0816\.host" [NC]
  5. RewriteRule ^/?(.*)$ 0816.host/$1 [L,QSA]
复制代码
D:\server\www\wuxiancheng.cn\.htaccess文件内容如下
  1. RewriteEngine On
  2. RewriteBase /
  3. RewriteCond "%{HTTP_HOST}" "!wuxiancheng\.cn" [NC]
  4. RewriteRule ^ - [F,L]
  5. RewriteCond expr "env('REDIRECT_STATUS') <= 0" [NC]
  6. RewriteRule ^ / [L,R=301]
复制代码
D:\server\www\0816.host\.htaccess文件内容如下
  1. RewriteEngine On
  2. RewriteBase /
  3. RewriteCond "%{HTTP_HOST}" "!0816\.host" [NC]
  4. RewriteRule ^ - [F,L]
  5. RewriteCond expr "env('REDIRECT_STATUS') <= 0" [NC]
  6. RewriteRule ^ / [L,R=301]
复制代码
现在,访问不同的域名即可访问不同的子站点,也就实现了.htaccess绑定子目录子站点。
如果还有其他URL重写的需要,只要将其他规则添加到对应子目录的.htaccess文件中去即可。

手机版|轻松E站

GMT+8, 2024/4/20 14:26

快速回复 返回顶部 返回列表