2015-10-22 2 views
1

Я устанавливаю инструкцию кэша через htaccess. Код:Настройка заголовка кэша через htaccess

#team pages 
RewriteCond %{REQUEST_URI} !(inc|out\.|admin) [NC] 
Header set Cache-Control "max-age=604801, public" 
RewriteRule ^([a-z\-]+)(/([a-z_]+))?/?$ team.php?team=$1&res_type=$3 [QSA] 

Я испытал это на www.web-sniffer.net и заголовок вывода любопытно:

enter image description here

Вопрос: Почему я, очевидно, имеют два чтения для cache-control? Что преобладает? Нижняя - та, которая предназначена. И должен ли я также настраивать кеш Pragma?

+0

Почему у вас есть 'Header set' после' RewriteCond'? – anubhava

+0

Поскольку заголовок должен выводиться только в том случае, если это условие выполнено. Нет? – Utkanos

+0

Нет, это не способ заставить его работать. – anubhava

ответ

1

Чтобы установить заголовок условно:

RewriteCond %{REQUEST_URI} !(inc|out\.|admin) [NC] 
RewriteRule ^([a-z\-]+)(/([a-z_]+))?/?$ index.php?team=$1&res_type=$3 [L,QSA,E=cc:1] 

Header set Cache-Control "max-age=604801, public" env=REDIRECT_cc 

PS: Мы должны использовать REDIRECT_ префикса перед переменной окр cc, поскольку mod_rewrite добавляет этот префикс для каждой переменной окр в конце каждой итерации цикла перезаписи.

+0

Спасибо, но какое значение здесь - просто, что заголовок появляется ПОСЛЕ правила? И это не объясняет, почему я все еще вижу два заголовка 'cache-control', проходящих через websniffer.com. – Utkanos

+0

Директива' Header' - это не модуль 'mod_rewrite', поэтому вам придется использовать переменные' env', как показано. Не уверен в нескольких записях, но я использую только последний. – anubhava

+1

Отлично, спасибо .. – Utkanos