我正在尝试为 Rails 的自动版本化资源设置过期标头,例如 what.css?1234567890 。(我不想为未版本化的资源设置过期标头。)我可以在网上找到的唯一方法涉及两个步骤:1)重写所有以 10 位数字结尾的 url,以从 /public/add_expires_header 而不是 /public 加载,其中 add_expires_header 是指向 /public 的符号链接 2) 为 add_expires_header 中的所有文件添加到期日期。
似乎是个好主意——但乘客似乎不认识重写规则,如下面的 curl 结果所示。
(注意:很多人似乎认为他们可以使用 FilesMatch 实现我的目标,但我在其他地方读到 FilesMatch 看不到查询字符串。)
#来自标签中的sites_enabled/sitename ... 重写条件 %{QUERY_STRING} ^[0-9]{10}$ 重写规则 ^(.*)$ /add_expires_header%{REQUEST_URI} [QSA] 过期活动在 ExpiresDefault "访问加 1 年" ... ----- #curl 表示重写规则没有生效 manu@Blade-Server:~$ curl -I -L "http://x.com/stylesheets/style.css?1249092148" HTTP/1.1 200 正常 日期:2009 年 8 月 11 日星期二 04:07:49 GMT 服务器:Apache/2.2.11 (Ubuntu) Phusion_Passenger/2.2.4 PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch 最后修改时间:2009 年 8 月 1 日星期六 02:02:28 GMT ETag:“455b-2fbb-4700aedc5f500” 接受范围:字节 内容长度:12219 变化:接受编码 内容类型:文本/css manu@Blade-Server:~$ curl -I -L "http://x.com/add_expires_header/stylesheets/style.css?1249092148" HTTP/1.1 200 正常 日期:2009 年 8 月 11 日星期二 04:07:55 GMT 服务器:Apache/2.2.11 (Ubuntu) Phusion_Passenger/2.2.4 PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch 最后修改时间:2009 年 8 月 1 日星期六 02:02:28 GMT ETag:“455b-2fbb-4700aedc5f500” 接受范围:字节 内容长度:12219 缓存控制:max-age=31536000 过期:2010 年 8 月 11 日星期三 04:07:55 GMT 变化:接受编码 内容类型:文本/css
我还尝试在 apache2.conf、httpd.conf 和 public/.htacess 中包含重写内容