如何用.htaccess修改主站根目录且不影响子域名?
解决.htaccess规则中子域名访问403的问题
你遇到的403错误,根源是原规则的域名匹配逻辑有漏洞——正则里的.没有转义,且未明确限制仅匹配主域名。调整规则如下,即可让主域名正常指向website目录,同时不影响子域名:
RewriteEngine on # 仅精确匹配主域名example.com(不区分大小写) RewriteCond %{HTTP_HOST} ^example\.com$ [NC] # 避免对website目录的请求重复重写,防止循环 RewriteCond %{REQUEST_URI} !^/website/ # 将主域名的所有请求转发到website目录 RewriteRule ^(.*)$ /website/$1 [L]
关键调整说明:
- 精确匹配主域名:用
^example\.com$替代原规则写法,其中\.是正则中转义后的点,确保只匹配完整的example.com,不会误匹配带前缀的子域名(如subdomain1.example.com)。 - 排除循环重写:第二个条件确保当请求已经指向
website目录时,不再执行重写,避免服务器陷入循环。 - 子域名不受影响:子域名的
HTTP_HOST不满足^example\.com$的精确匹配,因此规则不会对其生效,子域名会直接加载对应目录(subdomain1、subdomain2)的内容。
验证后:访问example.com时会正常加载website下的文件,访问subdomain1.example.com则直接对应subdomain1目录,不会再出现403错误。
内容的提问来源于stack exchange,提问作者john
相关产品推荐
相关产品推荐

