对于一台主机而言,同时搭建两个网站可以更好的利用主机的剩余资源,但是,有些主机供应商并不提供子域名解析,或者需要解析到不同的域名,对于这种情况,可以通过建立 .htaccess 文件加入 rewrite 函数的方法实现,本方法仅适用基于 Apache 搭建的服务器,基于 nginx 搭建的服务器需要在 nginx.conf 中添加 rewrite 函数(之后另行介绍)。
假设有两个域名 www.a.com 和 www.b.com ,分别需要解析到主机 /a 和 /b 目录。
则首先需要在 / 目录建立 .htaccess 文件,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| # 开启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
1 2 3 4 5
| RewriteEngine On RewriteBase /a RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /a/ [L]
|
/b/.htaccess
1 2 3 4 5
| RewriteEngine On RewriteBase /b RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /b/ [L]
|
完成以上步骤,则可以实现 www.a.com 访问 /a 而 www.b.com 访问 /b 的功能。