.Htaccess dosyasındaki “ExpiresActive burada izin verilmiyor” hata mesajını nasıl çözebilirim?


11

Üzerinde çalıştığım sitenin HTTP yanıtlarına Expires üstbilgileri eklemeye çalışıyorum. Apache 1.3 sunucusunu kontrol etmemin tek yolu .htaccess dosyamı düzenlemektir. Expires üstbilgileri etkinleştirmek için aşağıdaki gibi kod eklemeyi denedim:

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

Ancak, bu günlükte aşağıdaki hata iletisiyle bir iç sunucu hatasına neden olur:

Etkinliğe burada izin verilmiyor

Mod_headers etkin olmadığından muhtemelen önbellek kontrolü yöntemlerini kullanamıyorum. Yine de .htaccess dosyasındaki bazı komutlar aracılığıyla mod_expires kullanarak Expires üstbilgisini etkinleştirmek için herhangi bir yolu var mı?

Güncelleme
httpd.conf'daki Geçersiz Kılma ayarlarının bununla bir ilgisi olabileceğini hatırlıyorum. Sorunun bu olduğunu doğrulamanın herhangi bir yolu var mı? Öyleyse, web sitem için önbellek başlıklarını kontrol etmek için bazı geçici çözümler var mı?

Yanıtlar:


12

Genel bir not olarak, bunun gibi sorunlarla başa çıkmanın en basit yolu kılavuza başvurmaktır.

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

Bu iki ilgi alanı Bağlam ve Geçersiz Kıl. ExpiresActive'i bir .htaccess dosyasında kullanma izniniz olduğu sürece, Dizinleri İzin Ver'e izin verdikçe

Güncelleme:

Son kullanma tarihi üstbilgileri gereksiniminizi gidermek için. Check out /programming/1036941/setup-expires-headers-php-apache

Bu yardımcı olur umarım:)


Yanıtınız için teşekkürler, ancak sorum zaten belirtildiği gibi: Web kökümdeki .htaccess dosyası dışında sunucunun yapılandırmasına erişimim yok. AllowOverride doğru ayarlanmadıysa, şansım kalmadı.
Daan

Bu konuda sağlayıcınızla konuşmalısınız. Dizinlere izin vermemek sadece aptalca. Ve evet, eğer değiştiremezler / değiştiremezlerse mod_expires giderken dışarı çıktınız.
Rune Nilssen

Sadece Rune'un noktasını yankılamak için - servis sağlayıcınız AllowOverride parametresini değiştirmezse, yapabileceğiniz başka bir şey yoktur.
DaveG

3

Benim için çalıştı htaccess klasör için Apache's conf "AllowOverride Dizinleri" ekleme. Çözümü burada buldum http://speedforce.org/2009/01/were-back/


1
Yanıtınız için teşekkürler, ancak sorum zaten belirtildiği gibi: Web kökümdeki .htaccess dosyası dışında sunucunun yapılandırmasına erişimim yok. AllowOverride doğru ayarlanmadıysa, şansım kalmadı.
Daan

1

/etc/httpd/conf/httpd.conf içinde RHEL üzerinde

değiştir AllowOverride Yok

FileInfo Seçenekleri Dizinlerine İzin Verme


2
Yanıtınız için teşekkür ederiz, ancak yine de sorumun belirttiği gibi: Sunucunun yapılandırmasına web kökümdeki .htaccess dosyası dışında erişimim yok. AllowOverride doğru ayarlanmadıysa, şansım kalmadı.
Daan

0

Benim durumumda, mod_expires mevcut değil, ancak headers_module, bu güzel çalışıyor (Apache 2.0'da):

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

0

Apache 2.4 / CentOS 7'de de aynı sorunu yaşadım. Şimdi Config Dosyası için Sözdizimi: "AllowOverride Options = Indexes"

<Directory /var/www/html/>
  Options Indexes FollowSymlinks
  AllowOverride Options=Indexes
</Directory>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.