如何通过.htaccess修改子域名的documentroot指向指定目录
问题原因
你写的规则触发了重写循环:重写后的路径/folder1/folder2/xxx仍然会再次匹配RewriteRule ^(.*)$的规则,无限次触发重写,超过Apache默认的10次重写上限后就会抛出内部服务器错误。
另外如果你实际配置时没有删掉规则前的#注释,也会导致规则逻辑失效。
正确的重写规则
把站点根目录的.htaccess内容改成如下:
RewriteEngine on # 只匹配子域名mysubdomain.test.com的请求 RewriteCond %{HTTP_HOST} ^mysubdomain\.test\.com$ [NC] # 过滤已经重写到目标路径的请求,避免循环 RewriteCond %{REQUEST_URI} !^/folder1/folder2/ # 重写到目标目录,L标记表示本次重写结束 RewriteRule ^(.*)$ /folder1/folder2/$1 [L,QSA]
额外排查项
- 确认
folder1/folder2目录实际存在,且目录权限为755、目录内文件权限为644,权限错误也可能触发500报错 - 确认DirectAdmin站点已经开启
.htaccess支持,Apache的mod_rewrite模块已启用 - 以上规则已经可以实现子域名访问时地址栏不变、内容加载目标目录的需求,不需要额外加R跳转标记
内容的提问来源于stack exchange,提问作者Shayegan1980
相关产品推荐
相关产品推荐

