记录下在一个虚拟主机中绑定并分别转发多个域名遇到的问题
有一个虚拟主机,可以绑定多个域名,即多个域名都可以指向到同一个空间里。
问,如何为这些个域名分别指向不同的目录进行站点展示?
其实如果不是虚拟主机或者支持违者多个域名分别设定站点目录,也就没这问题了。
问题就在于,现在这些域名都只能指向默认目录。
还好,大部分的虚拟主机都支持.htaccess
,所以下面遇到的这些情况,就是在研究RewriteRule
的时候遇到的问题。
如何将域名分别指向各自目录。
- 在根目录分别建立多个目录,如
/AA/
和/BB/
。 - 在根目录下建一个
.htaccess
文件,贴入以下代码即可。
# 启动重写引擎
RewriteEngine On
RewriteBase /
# 绑定 a.com 到子目录
RewriteCond %{HTTP_HOST} ^a\.com$ [NC]
RewriteRule ^(.*)$ /AA/$1 [L,QSA]
# 绑定 b.com 到子目录
RewriteCond %{HTTP_HOST} ^b\.com$ [NC]
RewriteRule ^(.*)$ /BB/$1 [L,QSA]
如何禁止域名间互相访问
- 在
/AA/
文件夹根目录下,建.htaccess
文件,贴入以下代码即可。
# 启动重写引擎
RewriteEngine On
#只许绑定的域名访问
RewriteCond %{HTTP_HOST} !^a\.com$ [NC]
RewriteRule (.*) http://a.com/$1 [L,R=301]
如何禁止域名直接访问文件
- 比如
/AA/a.jpg
应该只允许http://a.com/a.jpg
访问,然而http://a.com/AA/a.jpg
也能访问到。怎么办? - 不知道
多个.htaccess
文件的优先级
- 根目录和子目录下的
.htaccess
文件,谁的优先级高?- 子目录的
.htaccess
文件优先级高。 - 所谓子目录的前提是,url 指向的路径的最接近的子目录。
- 如上文里的
http://a.com/a.jpg
,它的最接近的目录是根目录而不是/AA/
目录哦。- 所以会优先在根目录里进行转发。
http://a.com/AA/a.jpg
的最接近子目录倒是/AA/
目录。 *所以上面的那个问题,才难办啊。
- 如上文里的
- 子目录的
END
X