mod_rewrite no .htaccess faz com que o cabeçalho não seja aplicado - por quê?

3

Trecho da seção <VirtualHost *:80> em httpd.conf (objetivo: definir Cache-Control para todos arquivos JavaScript):

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

.htaccess (parte do framework PHP do 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>

Agora, verifiquei o cabeçalho Cache-Control com duas URLs diferentes apontando para o recurso mesmo :

  1. /index.php/pt_BR/home_page.js : Cache-Control definido conforme especificado acima

  2. /pt_BR/home_page.js : Cache-Control com algum outro valor

Agora, por que o cabeçalho Cache-Control não está definido para /pt_BR/home_page.js ?

Observe que há uma string de consulta no envolvida e <LocationMatch "\.js"> corresponde antes de e após a reescrita.

    
por feklee 22.05.2012 / 16:43

1 resposta

0

link

Precisa sair agora, espero ter mais tempo para explicar depois como isso funciona junto.

    
por 22.05.2012 / 17:04