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?

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.


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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.