Bagaimana mengatasi pesan kesalahan “ExpiresActive not allowed here” dalam file .htaccess?

11

Saya mencoba menambahkan header Kedaluwarsa ke respons HTTP dari situs yang saya kerjakan. Satu-satunya cara bagi saya untuk mengontrol server Apache 1.3 adalah dengan mengedit file .htaccess saya. Saya mencoba menambahkan kode seperti berikut ini untuk mengaktifkan header Kedaluwarsa:

<IfModule mod_expires.c>
    ExpiresActive on
    ExpiresDefault "access plus 1 hour"
</IfModule>

Namun, ini menghasilkan kesalahan server internal dengan pesan kesalahan berikut di log:

ExpiresActive tidak diizinkan di sini

Saya mungkin tidak dapat menggunakan metode alternatif kontrol cache, karena mod_headers tidak diaktifkan. Apakah ada cara saya masih dapat mengaktifkan header Kedaluwarsa menggunakan mod_expires melalui beberapa perintah dalam file .htaccess?

Pembaruan
Saya ingat pernah membaca di suatu tempat bahwa pengaturan Override di httpd.conf mungkin ada hubungannya dengan itu. Apakah ada cara untuk memvalidasi bahwa memang itulah masalahnya? Jika ya, apakah ada solusi untuk mengontrol tajuk caching untuk situs web saya?

Daan
sumber

Jawaban:

12

Pada catatan umum, cara paling sederhana untuk menangani masalah seperti ini adalah merujuk pada manual.

http://httpd.apache.org/docs/1.3/mod/mod_expires.html#expiresactive

Syntax:      ExpiresActive On|Off
Context:     server config, virtual host, directory, .htaccess
Override:    Indexes
Status:      Extension
Module:      mod_expires

Dua bidang yang diminati adalah Konteks dan Override. Seperti yang kita lihat OK untuk menggunakan ExpiresActive dalam file .htaccess selama Anda memperbolehkan Index Bertambah

Memperbarui:

Untuk mengatasi kebutuhan Anda akan header yang kedaluwarsa. Lihat /programming/1036941/setup-expires-headers-php-apache

Semoga ini membantu:)

Rune Nilssen
sumber
Terima kasih atas tanggapan Anda, tetapi karena pertanyaan saya sudah menyatakan: Saya tidak memiliki akses ke konfigurasi server selain melalui file .htaccess di root web saya. Jadi jika AllowOverride tidak diset dengan benar, saya kurang beruntung.
Daan
Anda harus berbicara dengan penyedia Anda tentang itu. Tidak mengizinkan Indexes hanya imho bodoh. Dan, ya, jika mereka tidak bisa / tidak mengubahnya maka Anda menemukan mod_expires.
Rune Nilssen
Hanya untuk menegaskan poin Rune - jika penyedia layanan Anda tidak akan mengubah parameter AllowOverride mereka maka tidak ada lagi yang bisa Anda lakukan.
DaveG
3

Menambahkan "AllowOverride Indexes" ke conf Apache untuk folder di mana Anda memiliki htaccess bekerja untuk saya. Temukan solusinya di sini http://speedforce.org/2009/01/were-back/


sumber
1
Terima kasih atas tanggapan Anda, tetapi karena pertanyaan saya sudah menyatakan: Saya tidak memiliki akses ke konfigurasi server selain melalui file .htaccess di root web saya. Jadi jika AllowOverride tidak diset dengan benar, saya kurang beruntung.
Daan
1

pada RHEL di /etc/httpd/conf/httpd.conf

ubah AllowOverride Tidak Ada

untuk AllowOverride Indeks Pilihan FileInfo

eggroll77
sumber
2
Terima kasih atas tanggapan Anda, tetapi sekali lagi, karena pertanyaan saya sudah menyatakan: Saya tidak memiliki akses ke konfigurasi server selain melalui file .htaccess di root web saya. Jadi jika AllowOverride tidak diset dengan benar, saya kurang beruntung.
Daan
0

Dalam kasus saya, mod_expires tidak tersedia, tetapi headers_module adalah, ini berfungsi dengan baik (di Apache 2.0):

# match all these file types, regardless of upper/lowercase
<FilesMatch "\.(?i:jpg|png|gif|js|css)$">
    # 60 seconds * 60 minutes * 24 hours * 7 days
    Header set Cache-Control "max-age=604800, public, must-revalidate"

    # alternative: never expire headers (do look up the caveats)
    # Header set Expires "Thu, 01 Jan 2030 08:08:00 GMT"
    # Header set Cache-Control "public, no-transform"

    # further (debatable) optimizations
    # FileETag None
    # Header unset ETag
    # Header unset Last-Modified
</FilesMatch>
Frank Nocke
sumber
0

Saya memiliki masalah yang sama pada Apache 2.4 / CentOS 7. Sintaks untuk File Config sekarang adalah: "AllowOverride Options = Indexes"

<Directory /var/www/html/>
  Options Indexes FollowSymlinks
  AllowOverride Options=Indexes
</Directory>
frederick vomjupiter
sumber