需求:
一个虚拟主机绑定了三个域名。
web1.tag.gg ---> /
web2.tag.gg ---> /web2
web3.tag.gg ---> /web3
访问web2.tag.gg后显示web2下面内容。
访问web3.tag.gg后显示web3下面内容。
Apache伪静态规则如下:测试有效。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^web2\.tag\.gg$ [NC]
RewriteCond %{REQUEST_URI} !^/web2/
RewriteRule ^(.*)$ /web2/$1 [L]
RewriteCond %{HTTP_HOST} ^web3\.tag\.gg$ [NC]
RewriteCond %{REQUEST_URI} !^/web3/
RewriteRule ^(.*)$ /web3/$1 [L]
另外:
查找了一下网上还有提供其他资料的,如下,没有测试,可以自行测试。
加入上述代码后,访问子网站就可以直接通过二级域名了,但是现在又出现了两个问题。首先是通过绑定在根目录的域名加路径名还是可以访问到子网站的页面,而且还有可能被搜索引擎抓取,同时似乎也没有说明,如果子网站要设置自己的伪静态该怎么做。解决的办法也很简单,在子目录里再建立.htaccess文件。#绑定b.host.com到/book/目录
RewriteCond %{HTTP_HOST} ^b\.host\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/book/
RewriteRule ^(.*)$ book/$1?Rewrite [L,QSA]
#绑定c.host.com到/wap/目录
RewriteCond %{HTTP_HOST} ^c\.host\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/wap/
RewriteRule ^(.*)$ wap/$1?Rewrite [L,QSA]
单独设置子网站的伪静态并且解决上述问题,以b.host.com为例,在/book文件夹里创建.htaccess文件,加入如下代码(最开始那重要的三条我就不重复了,反正一定要加上)。
#只许绑定的域名访问
RewriteCond %{HTTP_HOST} !^b\.host\.com$ [NC]
RewriteRule (.*) http://b.host.com/$1 [L,R=301]
#对绑定目录下与 同名的目录的处理
RewriteCond %{REQUEST_URI} ^\/book\/ [NC]
RewriteCond %{QUERY_STRING} !^(.*)?Rewrite
RewriteRule ^(.*)$ /%{REQUEST_URI}/%{REQUEST_URI}/$1?Rewrite [L,QSA]
#下面就可以单独自己写这个子网站的其它伪静态规则,在主网站的.htaccess也是同理,三个网站的各自的伪静态是独立的
文章评论 本文章有个评论