You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

htaccess重写规则移除URL文件夹名不生效 仅第一条可用报错500

问题原因

  • 存在重写循环:现有规则的逻辑是只要请求的文件/目录不存在,就统一重写到排在最上方的文件夹路径下。[L]标记只会停止当前轮次的重写,重写后的请求会重新触发整个重写流程,无限循环触发Apache重写次数上限后就会返回500错误。
  • 多文件夹匹配逻辑缺失:规则没有判断目标文件在对应文件夹是否真实存在,所有未命中本地文件的请求都会被第一条规则拦截,排在后面的规则永远不会触发。
  • 拼写错误:beauty文件夹的重写路径误写为/buety/$1,也会导致资源访问失败。

修复方案

删除各子文件夹下的重写规则,只在网站根目录下创建.htaccess文件,写入以下配置即可:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# 匹配food文件夹下的文件
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{DOCUMENT_ROOT}/food/$1 -f
RewriteRule ^(.+)$ /food/$1 [NC,L]

# 匹配health文件夹下的文件
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{DOCUMENT_ROOT}/health/$1 -f
RewriteRule ^(.+)$ /health/$1 [NC,L]

# 匹配beauty文件夹下的文件
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{DOCUMENT_ROOT}/beauty/$1 -f
RewriteRule ^(.+)$ /beauty/$1 [NC,L]
</IfModule>

配置说明

  • RewriteCond %{ENV:REDIRECT_STATUS} ^$ 用于过滤已经完成重写的请求,只有用户发起的原始请求才会走重写逻辑,从根源避免重写循环。
  • 新增目标文件存在校验:每次重写前会先检查请求的文件名是否在对应文件夹下真实存在,存在才执行重写,不存在则继续匹配下一个文件夹的规则。
  • 已修正beauty文件夹的拼写错误,确保路径正确。
  • 如果后续新增其他分类文件夹,按照上面的格式新增对应规则块即可,优先级高的文件夹规则放在前面即可,注意同名文件会优先匹配排在前面的文件夹中的资源。

内容的提问来源于stack exchange,提问作者coder2022

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:36:07