ฉันจะให้ Apache2 แยกวิเคราะห์คำสั่งส่วนหัว (โดยไม่มีข้อผิดพลาด) ใน. htaccess ได้อย่างไร


35

ฉันกำลังโหลดหน้าเว็บที่มีข้อผิดพลาดเซิร์ฟเวอร์ภายใน 500 ข้อเนื่องจากฉันเชื่อว่ามีคำสั่งที่ Apache ไม่ได้รับการกำหนดค่าให้อนุญาต

ฉันได้ตั้งค่า AllowOverride เป็น all และไฟล์. htaccess รวมไปถึง:

<FilesMatch "\.(eot|ico|pdf|flv|jpg|jpeg|png|gif|svg|swf|ttf|woff)$">
Header set Cache-Control "max-age=31536000, public"
Header set Expires "Wed, 23 Apr 2014 17:00:01 UTC"
</FilesMatch>

/var/log/apache2/error.log มี:

[Sat Jul 20 15:12:36 2013] [alert] [client 24.15.83.241] /home/jonathan/.htaccess: Invalid command 'Header', perhaps misspelled or defined by a module not included in the server configuration

ฉันต้องระบุอะไรเพื่อให้ Apache2 จะจัดการกับคำสั่ง 'หัว' อย่างถูกต้อง?

คำตอบ:


64

ด้วย apache2 เพียงแค่เรียกใช้a2enmod headersแล้วsudo service apache2 restartมันจะติดตั้งโมดูลส่วนหัวโดยอัตโนมัติ


2
คำตอบนี้ควรได้รับการยอมรับ
Himanshu Mishra

1
แน่นอนคำตอบนี้ดีที่สุด แต่ฉันกล้าที่จะพูดว่า distros GNU / Linux ที่ทันสมัย ​​(เช่น Debian ล่าสุด) นั้นมีพื้นฐานมาจากsystemdและมีไวยากรณ์ที่แตกต่างกันในการจัดการบริการ เริ่มต้นใหม่ sudo systemctl restart apache2.serviceApache: อย่างไรก็ตาม ณ ตอนนี้มีฟังก์ชั่นทางเลือกอยู่และทำให้sudo serviceคำสั่งเก่าทำงานได้ แต่มันอาจหยุดทำงานในอนาคตอันใกล้
TranslucentCloud

a2enmodอยู่ใน/usr/sbinระบบของฉัน ไม่อยู่ใน PATH ของผู้ใช้ที่ไม่ใช่ sudoer ดังนั้น a2enmod จึงไม่สามารถค้นพบได้ถ้าคุณไม่รูท TL; DR: ทำงานแทนเพียงsudo a2enmod a2enmod
Michael Hoffmann

14

คุณจะต้องเพิ่มบรรทัดเช่น:

LoadModule headers_module modules/mod_headers.so

เพื่อhttpd.confเพิ่มการรองรับของคุณ ใน Ubuntu และคล้ายกันคุณสามารถทำได้a2enmod headersและมันจะเปิดใช้งานโดยอัตโนมัติในการกำหนดค่าของคุณ

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