.htaccess配置RewriteRule实现/m路径.php脚本正确映射执行
.htaccess重写规则配置方案
现有规则仅覆盖了无后缀路径、带尾斜杠路径的映射,未匹配带.php后缀的访问路径,只需新增对应匹配规则、放在规则列表最顶部(保证高优先级匹配)即可实现需求。
完整可用配置
直接替换原有Rewrite规则段为以下内容:
# 匹配带.php后缀的直接文件访问 RewriteRule ^m/([\w-]+)/([\w-]+\.php)$ accounts/$1/$2 [L,NC] # /m/yyy 路径映射 RewriteRule ^m/([\w-]+)/?$ accounts/$1/index.php [L,NC] # /m/yyy/abc 无尾斜杠路径映射 RewriteRule ^m/([\w-]+)/([\w-]+)$ accounts/$1/$2.php [L,NC] # /m/yyy/abc/ 带尾斜杠路径映射 RewriteRule ^m/([\w-]+)/([\w-]+)/$ accounts/$1/$2/index.php [L,NC]
配置说明
- 新增的首条规则专门匹配
/m/[账户目录]/[php文件名].php格式的请求,会直接映射到accounts/[账户目录]/[php文件名].php的真实脚本路径,访问https://example.com/m/mya/view.php时会准确执行accounts/mya/view.php文件。 - 该规则放在最顶部是Apache重写规则的最佳实践:规则按从上到下顺序执行,高优先级的具体规则前置可以避免被后续宽泛的通用规则误拦截。
- 规则标记说明:
L:匹配到当前规则后停止本轮重写流程,不再执行后续规则NC:路径匹配不区分大小写
- 可选安全加固:如果不希望用户直接通过
/accounts/xxx的真实路径访问文件,可以在所有规则最前面新增以下规则,直接返回403禁止访问:RewriteRule ^accounts/ - [F,L]
内容的提问来源于stack exchange,提问作者Kelvin
相关产品推荐
相关产品推荐

