У меня есть правило перезаписи, которое перенаправляет на / если нет accept-language и кто-то пытается посетить ? Lang = en
. Он работает нормально, за исключением возвращенных заголовков. Vary: accept-language
отсутствует в ответе.
RewriteCond %{HTTP:Accept-Language} ^$
RewriteCond %{QUERY_STRING} ^lang=en
RewriteRule ^$ http://www.example.com/? [R=301,L]
В документации Apache указано:
Если HTTP-заголовок используется в условии, этот заголовок добавляется к заголовку Vary ответа в случае, если условие оценивается как истинное для запроса. Он не добавляется, если условие для запроса оценивается как ложное.
Условия определенно совпадают и перенаправляют, поэтому я не понимаю, почему Apache не добавляет изменения языка. Можно понять, почему это было бы реальной проблемой, если бы прокси-сервер кэшировал, что? Lang = en всегда перенаправляет на / независимо от отправленного заголовка accept-language.