对于一台主机而言,同时搭建两个网站可以更好的利用主机的剩余资源,但是,有些主机供应商并不提供子域名解析,或者需要解析到不同的域名,对于这种情况,可以通过建立 .htaccess 文件加入 rewrite 函数的方法实现,本方法仅适用基于 Apache 搭建的服务器,基于 nginx 搭建的服务器需要在 nginx.conf 中添加 rewrite 函数(之后另行介绍)。
假设有两个域名 www.a.com 和 www.b.com ,分别需要解析到主机 /a 和 /b 目录。
则首先需要在 / 目录建立 .htaccess 文件,内容如下:
# 开启Rewrite功能
RewriteEngine On
# 将www.a.com解析到/a目录
RewriteCond %{HTTP_HOST} ^(www.)?a.com$
RewriteCond %{REQUEST_URI} !^/a/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /a/$1
RewriteCond %{HTTP_HOST} ^(www.)?a.com$
RewriteRule ^(/)?$ a/ [L]
# 将www.b.com解析到/b目录
RewriteCond %{HTTP_HOST} ^(www.)?b.com$
RewriteCond %{REQUEST_URI} !^/b/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /b/$1
RewriteCond %{HTTP_HOST} ^(www.)?b.com$
RewriteRule ^(/)?$ b/ [L]
根据具体需要替换上面的域名和目录。
之后分别在两个子目录 /a 和 /b 建立 .htaccess 文件,内容分别如下:
/a/.htaccess
RewriteEngine On
RewriteBase /a
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /a/ [L]
/b/.htaccess
RewriteEngine On
RewriteBase /b
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /b/ [L]