Apache chuyển hướng và đặt tiêu đề bộ đệm?


10

Thực hiện chuyển hướng trong Apache rất dễ dàng (mod_alias):

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

Đặt tiêu đề bộ đệm cũng dễ dàng như nhau:

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

(Tôi không muốn lưu trữ này)

Nhưng! Có vẻ như bạn không thể kết hợp cả hai. Cấu hình này dẫn đến việc chuyển hướng được gửi, nhưng không phải là các tiêu đề:

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

Ví dụ về những gì thực sự xảy ra:

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)

Bất kỳ ý tưởng làm thế nào để trả lại một chuyển hướng với các tiêu đề bộ đệm?

Câu trả lời:


10

Hãy thử thêm điều kiện "luôn luôn" vào chỉ thị Tiêu đề của bạn, để nó giống như thế này:

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

Điều này sẽ hoạt động, không có điều kiện "luôn luôn" Tôi tin rằng nó mặc định là "onsuccess" được định nghĩa là bất kỳ mã phản hồi 2xx nào.


!!! Không biết làm thế nào tôi bỏ lỡ điều này, nhưng có!
Jakob Borg

Vâng, đây là nó. Tuyệt quá.
Cosimo

Đây dường như không làm việc cho tiêu đề tùy chỉnh, lạ
juan

0

Bạn sẽ cần triển khai tập lệnh trung gian trong Perl hoặc PHP (Tôi sẽ sử dụng PHP, đơn giản hơn nếu đã được tải). Kiểm tra hướng dẫn viết lại, tìm kiếm "Chuyển hướng mở rộng":

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

Thiết lập xredirect, sau đó thiết lập tập lệnh của bạn để đưa ra các tiêu đề bạn muốn ... nó không đẹp, nhưng theo tôi biết đó là cách duy nhất để làm điều đó.


Thực sự không đẹp lắm, tôi khá ngạc nhiên vì điều này không thể thực hiện theo cách tốt hơn (trực tiếp trong cấu hình), nhưng đây có vẻ là một câu trả lời đúng. :(
Jakob Borg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.