子域名访问被根目录.htaccess重定向至public目录问题求助
解决子域名被主域名.htaccess重定向到public的问题
问题原因
根目录的.htaccess中最后一条重定向规则未区分主域名与子域名,所有非文件请求都会被强制转到/public/,包括子域名的请求,导致子域名网站被错误重定向。
解决方案
修改根目录的.htaccess,在重定向到public的规则前添加条件,排除子域名的请求。具体操作如下:
找到原规则代码:
# Send Requests To Front Controller... RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ /public/ [B,L]
将其修改为(以子域名events.domain.com为例):
# Send Requests To Front Controller... # 排除子域名events.domain.com的请求 RewriteCond %{HTTP_HOST} !^events\.domain\.com$ RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ /public/ [B,L]
若有多个子域名需要排除,可添加多条RewriteCond规则:
# Send Requests To Front Controller... # 排除多个子域名的请求 RewriteCond %{HTTP_HOST} !^events\.domain\.com$ RewriteCond %{HTTP_HOST} !^sub\.domain\.com$ RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ /public/ [B,L]
规则说明
%{HTTP_HOST}用于匹配当前请求的域名,!^events\.domain\.com$表示当请求域名不是events.domain.com时,才执行后续的重定向规则。- 域名中的
.需要用\转义,避免正则表达式将其识别为“任意字符”。 - 修改后,子域名的请求会跳过主域名的public重定向规则,直接访问对应目录下的独立网站文件。
内容的提问来源于stack exchange,提问作者Mann
相关产品推荐
相关产品推荐

