Bagaimana cara mendapatkan Apache2 untuk menguraikan (tanpa kesalahan) arahan Header di .htaccess?

35

Saya mendapatkan halaman memuat dengan 500 kesalahan server internal, karena saya percaya pada arahan bahwa Apache belum dikonfigurasi untuk mengizinkan.

Saya memiliki AllowOverride diatur ke semua, dan file .htaccess, termasuk:

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

[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

Apa yang harus saya tentukan agar Apache2 dapat menangani arahan 'Header' dengan benar?

Christos Hayward
sumber

Jawaban:

65

Dengan apache2, jalankan saja a2enmod headerskemudian sudo service apache2 restartdan itu akan menginstal modul header secara otomatis.

James Pelton
sumber
2
Jawaban ini harus diterima
Himanshu Mishra
1
Memang jawaban ini adalah yang terbaik, namun saya berani mengatakan bahwa beberapa distro GNU / Linux modern (seperti Debian terbaru) didasarkan pada systemddan memiliki sintaks yang berbeda dalam mengelola layanan. Restart Apache: sudo systemctl restart apache2.service. Namun, seperti yang sekarang ada fungsi mundur dan dengan demikian sudo serviceperintah lama berfungsi. Tetapi mungkin berhenti bekerja dalam waktu terdekat.
TranslucentCloud
a2enmodada di /usr/sbindalam sistem saya. Itu bukan di PATH pengguna non-sudoer saya, jadi a2enmod tidak dapat ditemukan kecuali Anda root. TL; DR: jalankan sudo a2enmodbukan hanya a2enmod.
Michael Hoffmann
14

Anda harus menambahkan baris seperti:

LoadModule headers_module modules/mod_headers.so

Kepada Anda httpd.confuntuk menambahkan dukungan untuk itu. Di Ubuntu dan sejenisnya, Anda bisa melakukannya a2enmod headersdan secara otomatis akan mengaktifkannya di konfigurasi Anda.

Jay
sumber