Apache yönlendirme ve önbellek başlıkları ayarlama?


10

Apache'de yönlendirme yapmak kolaydır (mod_alias):

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

Önbellek başlıklarını ayarlamak da aynı derecede kolaydır:

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

(Bunun önbelleğe alınmasını istemiyorum)

Fakat! Bu ikisini birleştiremezsiniz. Bu yapılandırma, yönlendirmenin gönderilmesine neden olur, ancak üstbilgileri değil:

<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>

Gerçekte ne olduğuna örnek:

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)

Bir yönlendirme dönmek nasıl herhangi bir fikir ile önbellek başlıklarını?

Yanıtlar:


10

Header yönergenize "always" koşulunu eklemeyi deneyin, bu nedenle şöyle görünmelidir:

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

Bu, "her zaman" koşulu olmadan herhangi bir 2xx yanıt kodu olarak tanımlanan "Başarısızlık" varsayılan inanıyorum çalışması gerekir.


!!! Bunu nasıl özlediğimi bilmiyorum, ama evet!
Jakob Borg

Evet, bu kadar. Harika.
Cosimo

Bu garip özel başlıklar için işe yaramıyor gibi görünüyor
juan

0

Perl veya PHP'de orta düzey bir komut dosyası uygulamanız gerekir (PHP kullanırım, zaten yüklenmişse daha basittir). Yeniden yazma kılavuzuna göz atın, "Genişletilmiş Yönlendirme" için arama yapın:

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

Xredirect'i ayarlayın, sonra komut dosyanızı istediğiniz başlıkları dışarı itecek şekilde ayarlayın ... hoş değil, ama bildiğim kadarıyla bunu yapmanın tek yolu.


Gerçekten değil, bunun daha iyi bir şekilde (doğrudan yapılandırmada) yapılamayacağına şaşırdım, ancak bu doğru bir cevap gibi görünüyor. :(
Jakob Borg
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.