Apache перенаправить и установить заголовки кэша?

10

Перенаправление в Apache очень просто (mod_alias):

RedirectMatch ^.*$ http://portal.example.com/

Настроить заголовки кеша так же просто:

Header set Cache-Control max-age=0
Header set Expires "Thu, 01 Dec 1994 16:00:00 GMT"

(Я не хочу, чтобы это кешировалось)

Но! Кажется, вы не можете объединить два. Эта конфигурация приводит к отправке перенаправления, но не заголовков:

<VirtualHost *:80>
        ServerName __default__
        Header set Cache-Control max-age=0
        Header set Expires "Thu, 01 Dec 1994 16:00:00 GMT"
        RedirectMatch ^.*$ http://portal.example.com/
</VirtualHost>

Пример того, что на самом деле происходит:

jb@apto % telnet 192.168.0.1 80
Trying 192.168.0.1...
Connected to redirector.example.com.
Escape character is '^]'.
GET / HTTP/1.1
Host: foo

HTTP/1.1 302 Found
Date: Sat, 21 Aug 2010 09:36:38 GMT
Server: Apache/2.2.9 (Debian) Phusion_Passenger/2.2.9
Location: http://portal.example.com/
Vary: Accept-Encoding
Content-Length: 316
Content-Type: text/html; charset=iso-8859-1

(etc)

Любые идеи о том, как вернуть редирект с заголовками кэша?

Якоб Борг
источник

Ответы:

10

Попробуйте добавить условие «Always» в директиву Header, чтобы оно выглядело следующим образом:

Header always set Cache-Control max-age=0
Header always set Expires "Thu, 01 Dec 1994 16:00:00 GMT"

Это должно работать без условия «всегда». Я полагаю, что по умолчанию используется «onsuccess», который определяется как любой код ответа 2xx.

miishuu
источник
!!! Не знаю, как я это пропустил, но да!
Якоб Борг
Да, это так. Отлично.
Козимо
Это не похоже на работу для пользовательских заголовков, странно
Хуану
0

Вам нужно будет реализовать скрипт среднего уровня на Perl или PHP (я бы использовал PHP, он проще, если он уже загружен). Ознакомьтесь с руководством по перезаписи, найдите «Расширенное перенаправление»:

http://httpd.apache.org/docs/2.2/misc/rewriteguide.html

Настройте xredirect, затем настройте свой сценарий, чтобы он выдвигал нужные заголовки ... это не красиво, но, насколько я знаю, это единственный способ сделать это.


источник
На самом деле, не очень, я очень удивлен, что это невозможно сделать лучше (непосредственно в конфигурации), но это выглядит как правильный ответ. :(
Якоб Борг