Назад | Перейти на главную страницу

mod_rewrite в .htaccess приводит к тому, что заголовок не применяется - почему?

Отрывок из <VirtualHost *:80> раздел в httpd.conf (цель: установить Cache-Control для все Файлы JavaScript):

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

.htaccess (часть PHP-фреймворка Symfony):

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.js: Cache-Control установить как указано выше

  2. /pt_BR/home_page.js: Cache-Control с другим значением

Теперь, почему Cache-Control заголовок не установлен для /pt_BR/home_page.js?

Обратите внимание, что есть нет задействованная строка запроса и <LocationMatch "\.js"> матчи до и после переписать.

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

Мне нужно уходить сейчас, надеюсь, у меня будет больше времени, чтобы позже объяснить, как это работает вместе.