Apache:在重写之前将规则应用于 URL
我有一个简单的 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
指令适用于实际存在的目录,而不仅仅是 URL 路径。尝试使用
:或者将
/r
更改为您实际的目录/img
。The
<Directory>
directive is for actual existing directories and not just URL paths. Try<LocationMatch>
instead:Or change
/r
to your actual directory/img
.