如何在.htaccess中让特定URL指向指定目录(已配置主目录重定向)
解决特定URL路径指向不同目录的.htaccess配置方案
没问题,我来帮你搞定这个需求。你已经有了将domain.com整体重定向到DIR1的规则,现在只需要在现有规则之前添加一条针对性的重写规则,就能让domain.com/aaa/bbb/files这个特定路径指向DIR2的内容,具体配置如下:
# 优先处理特定URL路径,映射到DIR2 RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC] RewriteRule ^aaa/bbb/files(/.*)?$ /DIR2$1 [L] # 原有域名整体指向DIR1的规则(修正了正则笔误) RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC] RewriteCond %{REQUEST_FILENAME} !/DIR1/ RewriteRule ^(.*)$ /DIR1/$1 [L]
关键说明:
- 规则顺序很重要:把特定路径的规则放在最前面,因为mod_rewrite是从上到下匹配执行的,这样当访问
domain.com/aaa/bbb/files(包括它的子路径,比如domain.com/aaa/bbb/files/doc.pdf)时,会优先触发这条规则,直接跳转到DIR2,不会再执行后面的DIR1重定向。 - 正则修正:你原来的规则里
RewriteRule ^(. )$是笔误,应该改成^(.*)$,不然正则表达式无法正确匹配所有请求路径。 [L]标记:这个标记表示当前规则匹配后就停止后续规则的执行,确保特定路径不会被原有规则覆盖。
如果你的aaa/bbb/files是服务器上真实存在的目录,而你希望不管这个目录是否存在都强制指向DIR2,那当前配置就足够了;如果需要仅当该路径不存在时才跳转,可以在特定规则前添加RewriteCond %{REQUEST_FILENAME} !-d和RewriteCond %{REQUEST_FILENAME} !-f来排除真实存在的文件/目录。
内容的提问来源于stack exchange,提问作者Creek
相关产品推荐
相关产品推荐

