Apache:在重写之前将规则应用于 URL

发布于 2024-10-08 08:06:15 字数 470 浏览 2 评论 0原文

我有一个简单的 RewriteRule:

RewriteRule ^/r/[0-9]+/(.*)$ /$1

这用于缓存清除。每次发布网站时,我都会更改网址前缀,例如:

/r/17/img/image.jpg 获取/img/image.jpg

例如,我想对这些应用长过期标头

<Directory /r>
  Header unset ETag
  FileETag None
  ExpiresDefault "access plus 1 year"
</Directory>

当然这不起作用,因为应用 RewriteRule 后,目录不再匹配。 如何将 Directory 指令中的这些规则应用于通过 /r/ 访问的 URL?

谢谢!

I have a simple RewriteRule:

RewriteRule ^/r/[0-9]+/(.*)$ /$1

This is used for cache-busting. With every web site release I change the url prefix, e.g.:

/r/17/img/image.jpg gets /img/image.jpg.

I want to apply long expiry headers to these for example

<Directory /r>
  Header unset ETag
  FileETag None
  ExpiresDefault "access plus 1 year"
</Directory>

Of course this doesn't work because after the RewriteRule is applied, the Directory doesn't match anymore.
How can I apply these rules inside the Directory directive to URLs accessed via /r/ ?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我不在是我 2024-10-15 08:06:15

指令适用于实际存在的目录,而不仅仅是 URL 路径。尝试使用

<LocationMatch "^/r(/|$)">
  Header unset ETag
  FileETag None
  ExpiresDefault "access plus 1 year"
</LocationMatch>

或者将/r更改为您实际的目录/img

The <Directory> directive is for actual existing directories and not just URL paths. Try <LocationMatch> instead:

<LocationMatch "^/r(/|$)">
  Header unset ETag
  FileETag None
  ExpiresDefault "access plus 1 year"
</LocationMatch>

Or change /r to your actual directory /img.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文