如何通过.htaccess实现文件夹有无子目录的不同重定向?
实现特定场景的Apache Rewrite规则需求
你现有的规则可正常匹配带子目录的请求:
RewriteRule ^folder/(.*)$ /file.php?variable=$1 [L,QSA]
要实现**domain.com/folder(含domain.com/folder/)跳转到file_2.php**,同时不影响原有带子目录的匹配,核心是调整规则匹配顺序——先拦截无子目录的请求,再处理带子目录的请求,具体配置如下:
先添加匹配无子目录情况的规则(必须放在原有规则之前):
# 匹配folder(无斜杠)或folder/(带斜杠但无后续内容) RewriteRule ^folder/?$ /file_2.php [L,R=301]其中
/?表示斜杠可选,[L]标记表示匹配后停止后续规则处理;R=301为永久重定向,若需内部重定向、不改变前端URL,可去掉R=301。保留原有规则放在后面:
RewriteRule ^folder/(.*)$ /file.php?variable=$1 [L,QSA]
原理说明
Rewrite规则按从上到下的顺序匹配,先处理无子目录的请求,就能避免原有规则将空值传入$1,确保只有folder/后带内容的请求才会被转发到file.php。
内容的提问来源于stack exchange,提问作者Mike Darling
相关产品推荐
相关产品推荐

