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

ลองเพิ่มเงื่อนไข "เสมอ" ลงในคำสั่งส่วนหัวของคุณดังนั้นควรมีลักษณะดังนี้:

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

สิ่งนี้ควรใช้งานได้หากไม่มีเงื่อนไข "เสมอ" ฉันเชื่อว่าเป็นค่าเริ่มต้นที่ "สำเร็จ" ซึ่งกำหนดเป็นรหัสตอบกลับ 2xx ใด ๆ


!!! ไม่ทราบว่าฉันคิดถึงสิ่งนี้ได้อย่างไร แต่ใช่!
Jakob Borg

ใช่มันเป็นอย่างนั้น ยิ่งใหญ่
Cosimo

สิ่งนี้ดูเหมือนจะไม่ทำงานสำหรับส่วนหัวที่กำหนดเองแปลก
juan

0

คุณจะต้องใช้สคริปต์คนกลางใน Perl หรือ PHP (ฉันจะใช้ PHP มันง่ายกว่าถ้าโหลดแล้ว) ลองดูคำแนะนำการเขียนใหม่ค้นหา "Extended Redirection":

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

ตั้งค่า xredirect จากนั้นตั้งค่าสคริปต์ของคุณให้ดันส่วนหัวที่คุณต้องการ ... มันไม่สวย แต่เท่าที่ฉันรู้มันเป็นวิธีเดียวที่จะทำ


ไม่สวยแน่นอนฉันค่อนข้างแปลกใจที่ไม่สามารถทำได้ในทางที่ดีขึ้น (ในการกำหนดค่าโดยตรง) แต่ดูเหมือนว่าคำตอบที่ถูกต้อง :(
Jakob Borg
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.