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

时间:2010-12-17 20:51:25

标签: apache mod-rewrite mod-expires

我有一个简单的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?

谢谢!

1 个答案:

答案 0 :(得分:3)

<Directory> directive用于实际现有目录,而不仅仅是URL路径。请改为<LocationMatch>

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

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