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

编写.htaccess规则:忽略最后斜杠后内容,加载指定test.*文件

问题描述

我在每个文件夹中都存放着一个名为test.*的文件(*代表jpg、png、视频文件等格式),存储路径示例:

  • /images/1500/01/100/test.jpg
  • /images/1500/01/500/test.jpg
  • /images/1500/01/900/test.jpg
  • /images/1500/01/1800/test.jpg

希望通过以下形式的链接加载对应文件:

  • /images/1500/01/100
  • /images/1500/01/100/
  • /images/1500/01/100/whatever
  • /images/1500/01/100/somethingelse

核心需求:始终加载对应文件夹下的test文件,链接中无需写出test,且允许末尾斜杠后添加任意内容。请问仅通过.htaccess能否实现?

我曾尝试以下规则,但未达到预期效果:

RewriteEngine On
RewriteRule ^images/(.*)/([^/]+) images/$1/$2/test.jpg
解决方案

可以通过.htaccess实现该需求,你之前的规则存在两个问题:一是未覆盖所有请求场景(比如带末尾斜杠、斜杠后带额外内容的情况),二是仅固定了jpg后缀,无法适配其他格式的test文件。

以下是适配所有场景的规则:

RewriteEngine On

# 匹配不带末尾斜杠的请求(如 /images/1500/01/100)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^images/(.+)/([^/]+)$ images/$1/$2/test [L]

# 匹配带末尾斜杠或斜杠后有任意内容的请求(如 /images/1500/01/100/ 或 /images/1500/01/100/xxx)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^images/(.+)/([^/]+)/.*$ images/$1/$2/test [L]

规则解释:

  • RewriteCond %{REQUEST_FILENAME} !-f 和 RewriteCond %{REQUEST_FILENAME} !-d:仅对不存在的文件或目录执行重写,避免影响真实存在的资源。
  • 第一条规则处理无末尾斜杠的请求,将其重定向到对应文件夹下的test文件,Apache会自动尝试匹配test的各种后缀(如test.jpg、test.png等)。
  • 第二条规则处理带末尾斜杠或斜杠后有额外内容的请求,同样重写到目标test文件。

如果只需要适配特定后缀(比如仅jpg),只需将规则中的test替换为test.jpg即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:40:39