Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 乘客/Apache:Can';t设置版本化资源的过期标头(无法识别重写规则)_Ruby On Rails_Apache_Passenger - Fatal编程技术网

Ruby on rails 乘客/Apache:Can';t设置版本化资源的过期标头(无法识别重写规则)

Ruby on rails 乘客/Apache:Can';t设置版本化资源的过期标头(无法识别重写规则),ruby-on-rails,apache,passenger,Ruby On Rails,Apache,Passenger,我正在尝试为Rails的自动版本资源设置expire头,比如which.css?1234567890。(我不想为未版本化的资源设置expire头。)我能在网上找到的唯一方法包括两个步骤:1)重写所有以10位结尾的URL,从/public/add_expires_头加载,而不是从/public加载,其中add_expires_header是指向/public的符号链接2)从add_expires_header向所有文件添加过期日期 这似乎是个好主意——但乘客似乎不认识重写规则,如下面的结果所示 (

我正在尝试为Rails的自动版本资源设置expire头,比如which.css?1234567890。(我不想为未版本化的资源设置expire头。)我能在网上找到的唯一方法包括两个步骤:1)重写所有以10位结尾的URL,从/public/add_expires_头加载,而不是从/public加载,其中add_expires_header是指向/public的符号链接2)从add_expires_header向所有文件添加过期日期

这似乎是个好主意——但乘客似乎不认识重写规则,如下面的结果所示

(注意:许多人似乎认为他们可以使用FileMatch实现我的目标,但我在其他地方看到FileMatch看不到查询字符串。)

#从站点\u启用/标记中的站点名称 ... 重写条件%{QUERY_STRING}^[0-9]{10}$ 重写规则^(.*)$/add_expires_header%{REQUEST_URI}[QSA] 过期于 ExpiresDefault“访问权限加1年” ... ----- #curl表示重写规则未生效 manu@Blade-服务器:~$curl-I-L“http://x.com/stylesheets/style.css?1249092148" HTTP/1.1200ok 日期:2009年8月11日星期二04:07:49 GMT 服务器:Apache/2.2.11(Ubuntu)Phusion_Passenger/2.2.4 PHP/5.2.6-3ubuntu4.1和Suhosin补丁 最后修改:2009年8月1日星期六02:02:28 GMT ETag:“455b-2fbb-4700AEDC500F500” 接受范围:字节 内容长度:12219 改变:接受编码 内容类型:文本/css manu@Blade-服务器:~$curl-I-L“http://x.com/add_expires_header/stylesheets/style.css?1249092148" HTTP/1.1200ok 日期:2009年8月11日星期二04:07:55 GMT 服务器:Apache/2.2.11(Ubuntu)Phusion_Passenger/2.2.4 PHP/5.2.6-3ubuntu4.1和Suhosin补丁 最后修改:2009年8月1日星期六02:02:28 GMT ETag:“455b-2fbb-4700AEDC500F500” 接受范围:字节 内容长度:12219 缓存控制:最大年龄=31536000 过期时间:2010年8月11日星期三04:07:55 GMT 改变:接受编码 内容类型:文本/css
我还尝试将重写内容包括在apache2.conf、httpd.conf和public/.htacess中,我更喜欢将其与在单独的子域上使用资产主机结合使用,以避免整个重写问题。这样,您就可以为该子域上的所有内容设置过期标头。您可以在environments/production.rb中的rails中激活它

如果您不想使用单独的子域,我认为下面的代码应该可以做到这一点,尽管我自己没有测试过:

ExpiresActive On
  <FilesMatch "\.(ico|gif|jpe?g|png|js|css)$">
    ExpiresDefault "access plus 1 year"
  </FilesMatch>
ExpiresActive开启
ExpiresDefault“访问权限加1年”

我更愿意通过将其与在单独的子域上使用资产主机相结合来避免整个重写问题。这样,您就可以为该子域上的所有内容设置过期标头。您可以在environments/production.rb中的rails中激活它

如果您不想使用单独的子域,我认为下面的代码应该可以做到这一点,尽管我自己没有测试过:

ExpiresActive On
  <FilesMatch "\.(ico|gif|jpe?g|png|js|css)$">
    ExpiresDefault "access plus 1 year"
  </FilesMatch>
ExpiresActive开启
ExpiresDefault“访问权限加1年”