Apache 别名“最佳猜测”文件名

2024-01-11

使用 Apache 和 mod_rewrite 我可以将复杂的请求重写为简单的文件名,例如:

RewriteRule ^shortcut/(.*)$ /long/way/around/$1

这可以反过来吗?我希望将一个简单的请求重写为未知文件,但我可以通过文件名前缀的唯一 ID 号来识别应提供哪个文件。我希望 Apache 使用正则表达式“猜测”根据 ID 提供哪个文件。

例如:

GET /img/29281.jpg

Directory of /img/:
...
29280-filename-here.jpg
29281-other-filename-here.jpg  <-- Apache should serve this one
29282-more-files-here.jpg
...

因此,正则表达式重写可能是:

^(\d+)\.jpg$   -->   ^$1\-[a-zA-Z0-9-_]+.jpg$

如何将其集成到 Apache 中(如果可能的话)?

非常感谢您的任何建议。

附:在这种情况下,无法将所有文件名重命名为简单的 ID 号。


我认为 apache 方式之一是使用 mod-rewrite 与重写映射 http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritemap指令,并使用:prg重写映射的映射。

这将在 apache 启动时加载一个简单的程序(可能是文档中建议的 perl 程序,PHP 程序可能会出现更多内存泄漏和性能问题,恕我直言)。该程序必须猜测文件名的最后部分。

您可以找到此类程序的一些示例这里(PHP) http://www.wellho.net/resources/ex.php4?item=a603/andy, 那里(C) http://www.issociate.de/board/post/495527/RewriteMap_PRG_By_Example_Using_C.html, 这是一个 Perl 基本的 https://serverfault.com/questions/217740/rewrite-map-prg-never-finishes.

我的大脑中没有足够的 perl 功能来获取使用扩展名和 int 标识符提取真实文件名的 perl 方法,但这应该很简单且简短(这对于 PRG rewriteMap 很重要)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache 别名“最佳猜测”文件名 的相关文章

随机推荐

  • 如何在多线程应用程序中使用Hibernate?

    我正在尝试将 Hibernate 用于多线程应用程序 其中每个线程检索一个对象并尝试将其插入表中 我的代码如下所示 我每个线程都有本地休眠会话对象 并且在每个 InsertData 中我执行 beginTransaction 和提交 我面临
  • 如何将复选框绑定到 mvc3 中的视图模型

    我真的很难理解这个问题 我有一个 UserModel 和一个 UserRoleModel public class UserModel Required Display Name User name public string UserNa
  • 从 R Shiny renderTable 中排除行名称

    我正在使用 R Shiny 包中的 renderTable 函数 它返回一个包含行名称的表 理想情况下 我希望显示一个仅包含两列的表格 一列代表 月份 一列代表 值 我当前获得的输出包括行名称 我尝试了一些方法来排除行名称 但没有成功 有什
  • 如何告诉 clang 我的 LLVM 目标应该使用 16 位“int”?

    对于我的 PIC 后端 我希望 int 为 16 位 我 我的目标如何告诉 clang int 的大小应该是多少 仅定义 16 位寄存器似乎还不够 目前 clang O2 emit llvm target pic 转换 int foo in
  • 选项标签中的 html 标签

    看来 html 标签无法插入选项标签中 说
  • Hibernate SchemaFilterProvider获取Java实体名称

    我希望 Hibernate 禁用某些类在启动时进行验证 我的具体用例 spring jpa hibernate ddl auto validate Table name SAME TABLE public class Entity1 Col
  • OpenCV 2.1 托管 C++ (CLI/C++) 中的 cvSetMouseCallback

    我的类名称是 HandMotionRecognition 我在鼠标回调中调用 getColorPixel 方法 这是使用 Visual Studio 2010 的 OpenCV 项目类型是 c gt cli 处理鼠标事件的标准代码 除非我弄
  • 从 IBAction 以编程方式设置 UISwitch isOn 再次调用 IBAction

    我刚刚注意到设置 UISwitchisOn在其 IBAction 中会导致再次调用 IBAction 所以下面的代码 class ViewController UIViewController var count 0 IBOutlet we
  • 是否可以有一个从释放存储操作到不同线程中的存储的释放序列?

    我知道线程 2 中的释放存储操作和线程 1 中的获取加载操作之间会出现同步关系 即使该加载操作不直接读取线程 2 存储的值 前提是有一个释放存储操作和实际读取的存储之间的 释放顺序 只要 实际读取的存储与释放存储操作位于同一线程中 在修改顺
  • 在 Powershell 中运行 Start-Website 命令时出现“无法创建文件”错误

    目前我正在尝试运行这个 powershell 脚本 Param websiteName physicalPath import module WebAdministration website get website where objec
  • 在运行时清除日志文件:被另一个进程错误使用

    我在我的应用程序中使用 Serilog 框架 在我的应用程序中 当日志文件大小达到 2MB 时 我通过将现有文件从 file log 重命名为 file log bak 并创建新的 file log 来创建日志文件的备份 在运行时 我在读取
  • 如何检测 React Native 应用程序何时关闭(而不是暂停)?

    我到处都找过 但找不到这个问题的答案 我如何检测用户何时尝试关闭我的 React Native 应用程序 如进程正在运行 并且他们手动管理其应用程序并强制退出它 我想在发生这种情况时添加注销功能 但是找不到检测它的方法 AppState似乎
  • SQLCipher 与 DBFlow

    我曾经使用过 DBFlow 它在数据库方面非常简单 但我想问是否有一个很好的例子来将 SQLCipher 与 DBFlow 一起使用 我已点击此链接寻求帮助 Raizlabs DBFlow https github com Raizlabs
  • Python Pandas 按小时对日期时间进行分组并计算行数

    这是我的交易数据框 其中每一行表示一个交易 date station 30 10 2017 15 20 A 30 10 2017 15 45 A 31 10 2017 07 10 A 31 10 2017 07 25 B 31 10 201
  • 访问类中的变量

    我想访问一个类中的变量 而不是作为类的实例 例如 class myclas private list array 1 2 3 我需要以这种方式访问 list 的值 myclass list 不可能 还有其他方法吗 谢谢 编辑 谢谢大家的回答
  • 垃圾收集运行时成本的大O分析

    当推理垃圾收集语言中的运行时成本时 诸如以下语句的成本是多少 myList null 用 n 列表中的元素数量 表示 为了便于论证 请将该列表视为引用类型的单链表 无需终结 更一般地说 我正在寻找有关如何使用 GC 语言分析运行时成本的任何
  • Java Eclipse 插件开发 - 以编程方式保存所有项目文件

    我正在为 Eclipse 开发一个插件 我希望它建议用户在运行之前保存未保存的资源 这与 eclipse 建议您在调试之前保存未保存的文件的行为类似 本质上 我想打开以下对话框 任何帮助将不胜感激 如果您在该对话框上按 alt shift
  • Hibernate 中带有连接表的分页

    对此有很多疑问 但我找不到具体的答案 我是 Hibernate 新手 正在尝试实现分页 假设我有两个实体 Parent 和 Child 定义如下 Entity Table name Parents public class Parent I
  • 如何获取 .net 中数组的唯一值?

    假设我有这个数组 MyArray 0 aaa MyArray 1 bbb MyArray 2 aaa 是否有一个 net 函数可以给我唯一的值 我想要这样的东西作为函数的输出 输出数组 0 aaa 输出数组 1 bbb 假设您有 Net 3
  • Apache 别名“最佳猜测”文件名

    使用 Apache 和 mod rewrite 我可以将复杂的请求重写为简单的文件名 例如 RewriteRule shortcut long way around 1 这可以反过来吗 我希望将一个简单的请求重写为未知文件 但我可以通过文件