目标:使用一台虚拟主机搭建多个网站
前提:虚拟主机支持开启伪静态,而且可以绑定多个域名(一般虚拟主机都支持)
思路:通过自定义.htaccess,实现不同域名访问不同站点目录
操作流程如下:
1.域名解析与绑定,虚拟主机一般情况下使用cname解析,将要创建站点的域名做好cname解析
2.根目录(站点存放目录,根据虚拟主机具体情况,一般是类似www/web/home之类的)创建.htaccess文件,
本文仅以域名test1.com对应站点目录test1,test2.com对应站点目录test2,test3.com对应站点目录test3为例;
根目录下.htaccess文件代码如下:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

test1.com

RewriteCond %{HTTP_HOST} ^(www.)?test1.com$ [NC]
RewriteCond %{REQUEST_URI} !^/test1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ test1/$1 [L,QSA]

没有输入文件名的默认到到首页

RewriteCond %{HTTP_HOST} ^(www.)?test1.com$ [NC]
RewriteRule ^(/)?$ test1/index.html

test2.com

RewriteCond %{HTTP_HOST} ^(www.)?test2.com$ [NC]
RewriteCond %{REQUEST_URI} !^/test2/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ test2/$1 [L,QSA]

没有输入文件名的默认到到首页

RewriteCond %{HTTP_HOST} ^(www.)?test2.com$ [NC]
RewriteRule ^(/)?$ test2/index.html

test3.com

RewriteCond %{HTTP_HOST} ^(www.)?test3.com$ [NC]
RewriteCond %{REQUEST_URI} !^/test3/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ test3/$1 [L,QSA]

没有输入文件名的默认到到首页

RewriteCond %{HTTP_HOST} ^(www.)?test3.com$ [NC]
RewriteRule ^(/)?$ test1/index.html

</IfModule>

3.站点目录下分别创建.htaccess文件,实现站点域名访问限制(例如:test1.com只能访问test1目录不能访问test2/test3目录)
.htaccess文件代码如下,textx仅作示范,对应目录下testx分别改为test1/test2/test3:

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

只许绑定的域名访问

RewriteCond %{HTTP_HOST} !^(www.)?testx.com$ [NC]

RewriteRule (.*) testx/$1 [L,R=301]

</IfModule>

如上就是使用一台虚拟搭建多个网站的操作方法。

标签: .htaccess, 一台虚拟主机搭建多个

添加新评论