Redirect Apache dan setel cache header?

10

Melakukan pengalihan di Apache mudah (mod_alias):

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

Mengatur header cache juga sama mudahnya:

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

(Saya tidak ingin ini di-cache)

Tapi! Sepertinya Anda tidak dapat menggabungkan keduanya. Konfigurasi ini menghasilkan redirect yang dikirim, tetapi bukan header:

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

Contoh apa yang sebenarnya terjadi:

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)

Adakah ide untuk mengembalikan pengalihan dengan header cache?

Jakob Borg
sumber

Jawaban:

10

Coba tambahkan kondisi "selalu" ke direktif Header Anda, jadi seharusnya terlihat seperti ini:

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

Ini seharusnya berfungsi, tanpa syarat "selalu", saya yakin ini default ke "onsuccess" yang didefinisikan sebagai kode respons 2xx.

miishuu
sumber
!!! Tidak tahu bagaimana saya melewatkan ini, tapi ya!
Jakob Borg
Ya ini dia. Bagus.
Cosimo
Ini sepertinya tidak berfungsi untuk header khusus, aneh
juan
0

Anda harus mengimplementasikan skrip perantara di Perl atau PHP (saya akan menggunakan PHP, lebih sederhana jika sudah dimuat). Lihat panduan penulisan ulang, cari "Perpanjangan Pengalihan":

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

Siapkan xredirect, lalu atur skrip Anda untuk mendorong keluar tajuk yang Anda inginkan ... itu tidak cantik, tapi sejauh yang saya tahu itu satu-satunya cara untuk melakukannya.


sumber
Tidak cantik memang, saya cukup terkejut ini tidak bisa dilakukan dengan cara yang lebih baik (langsung dalam konfigurasi), tetapi ini sepertinya jawaban yang benar. :(
Jakob Borg