用.htaccess实现二级域名绑定子目录

😂 这篇文章最后更新于1501天前,您需要注意相关的内容是否还可用。

有的虚拟主机服务商不提供子目录绑定功能,那就修改.htaccess吧,在这里我们先将二级域名绑定到网站的根目录,然后再修改.htaccess

RewriteEngine on
RewriteCond %{HTTP_HOST} ^a.xxx.com$
RewriteCond %{REQUEST_URI} !^/suba/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /suba/$1
RewriteCond %{HTTP_HOST} ^a.xxx.com$
RewriteRule ^()?$ suba/index.php

以上测试可以,但是可能不太完全,参考虎友@Monica的配置

根下面的.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    # 绑定tb.monic.cc 到子目录tb
    RewriteCond %{HTTP_HOST} ^tb\.monic\.cc$ [NC]
    RewriteCond %{REQUEST_URI} !^/tb/
    RewriteRule ^(.*)$ tb/$1?Rewrite [L,QSA]
    #可以绑定多个 只需重复上三行代码并更改一下域名、目录名 就好了
</IfModule>

子目录下面的

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    #只许绑定的域名访问

    RewriteCond %{HTTP_HOST} !^tb.monic.cc$ [NC]
    RewriteRule (.*) http://tb.monic.cc/$1 [L,R=301]
    #对绑定目录下与 同名的目录的处理
    RewriteCond %{REQUEST_URI} ^/tb/ [NC]
    RewriteCond %{QUERY_STRING} !^(.*)?Rewrite
    RewriteRule ^(.*)$ /%{REQUEST_URI}/%{REQUEST_URI}/$1?Rewrite [L,QSA]
</IfModule>