.htaccess 中的 mod_rewrite 导致标头无法应用 - 为什么?

.htaccess 中的 mod_rewrite 导致标头无法应用 - 为什么?

摘自(<VirtualHost *:80>目标httpd.conf:设定Cache-Control全部JavaScript 文件):

<LocationMatch "\.js">
    Header set Cache-Control "max-age=290304000, public"
</LocationMatch>

.htaccess(Symfony PHP 框架的一部分):

Options +FollowSymLinks +ExecCGI

<IfModule mod_rewrite.c>
  RewriteEngine On

  # we check if the .html version is here (caching)
  RewriteRule ^$ index.html [QSA]
  RewriteRule ^([^.]+)$ $1.html [QSA]
  RewriteCond %{REQUEST_FILENAME} !-f

  # no, so we redirect to our front web controller
  RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

现在,我检查了Cache-Control标头,其中有两个不同的 URL 指向相同的资源:

  1. /index.php/pt_BR/home_page.jsCache-Control按上述指定设置

  2. /pt_BR/home_page.js:Cache-Control具有其他值

现在,为什么Cache-Control没有设置标题/pt_BR/home_page.js

请注意涉及查询字符串,并且<LocationMatch "\.js">匹配之前重写后。

答案1

http://httpd.apache.org/docs/current/sections.html#merging

现在需要出发了,我希望稍后我能有更多的时间来解释它们是如何一起发挥作用的。

相关内容