Apache .htaccess 多级目录重写异常问题求助
解决方案
你的问题出在当前规则里的RewriteCond %{REQUEST_FILENAME} !-f和!-d条件——这两个条件会让服务器在检测到请求的文件/目录存在时,直接跳过重写逻辑。比如请求domain.com/example1/web/image.jpg时,服务器发现/docroot/example1/web/image.jpg存在,就直接返回这个文件,不会执行重写到web/web/image.jpg的规则。
调整后的.htaccess规则如下(文件仍放在/docroot/example1/目录下):
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ RewriteRule ^(.*)$ web/$1 [L,QSA] </IfModule>
规则说明:
- 去掉了多余的存在性检查和无效的
REQUEST_URI判断,强制将所有domain.com/example1/下的请求,都映射到web/子目录对应的路径上:- 请求
domain.com/example1/image.jpg→ 实际获取/docroot/example1/web/image.jpg - 请求
domain.com/example1/web/image.jpg→ 实际获取/docroot/example1/web/web/image.jpg
- 请求
[L,QSA]标记确保重写后停止后续规则,并保留原请求的查询参数。
内容的提问来源于stack exchange,提问作者ferqusanga
相关产品推荐
相关产品推荐

