Apache 重写器 - 没有扩展名的文件的复杂重写器

Apache rewriter - Complex rewriter for files without extension

我需要重写对 mydomain 中文件的所有请求。com/storage/archive/ab7572d3-c697-4cfa-9b23-71b6f9c388d1

mydomain.com/public/storage/archive/ab7572d3-c697-4cfa-9b23-71b6f9c388d1

所以我在 url 中添加了 "public",没有别的。文件存储如上所示:36 个字符,不带扩展名。因此,我正在寻找一个正则表达式来匹配 /storage/archive/ 后跟不带扩展名的 36 个字符的长文件名

我正在尝试通过 .htaccess 文件完成它。

使用 RewriteRule 来匹配整个路径并将您的新父级添加到它前面:

RewriteEngine on
RewriteRule ^/(storage/archive/[0-9a-f-]{36}.*) /public/ [R]

regex itself 非常基础:

  • ^匹配路径开头
  • / 匹配文字正斜杠
  • (…) 将带括号的部分捕获为 </code> <ul> <li><code>storage/archive/(文字匹配)
  • [0-9a-f-]{36} 匹配任何 [数字,从 af 的字母,或破折号] 36 次
  • .* 加上您看到的任何其他内容(请注意,这 包括查询字符串)

(是的,我本可以将第一个斜杠放在捕获中,但我希望在使用 /public 重建它时更清晰;否则,它会是 /public。相同功能,但不太清晰。)