2009-05-15 6 views
9

Ich versuche, einige Dateien mit einer. Htaccess-Datei für Apache2 zwischenzuspeichern. Ich möchte sonst, einen bestimmten Ordner mehr als alles, was in den Cache, so dass ich versucht habe, die Filesmatch Richtlinie wie folgt zu verwenden:Apache FilesMatch - mit einem Ordner im regulären Ausdruck

<FilesMatch "skins(.*)\.(jpg|png|gif)">
ExpiresDefault A2592000
</FilesMatch>

Ich hoffe, der Lage sein, alle Bilddateien in der zwischenzuspeichern/skins/Verzeichnis und seine Unterverzeichnisse. Allerdings kann ich den regulären Ausdruck nicht richtig zum Laufen bringen - Apache ignoriert ihn einfach komplett.

Wie passen Sie einen Ordner mit <FilesMatch> in einer .htaccess-Datei?

Cheers,
Matt

Antwort

15

Filesmatch sollte nur Dateinamen übereinstimmen, so Sie die .htaccess-Datei im "Skin" Verzeichnis platzieren konnten und es sollte etwas aussehen,

<FilesMatch "\.(jpg|png|gif)"> 
ExpiresDefault A2592000 
</FilesMatch> 

oder wenn in die Datei httpd.conf Sie

<Directory path_to_the_skins_dir> 
    <FilesMatch "\.(jpg|png|gif)"> 
    ExpiresDefault A2592000 
    </FilesMatch> 
</Directory> 

viel Glück verwenden, könnte

+0

Vielen Dank für Ihre Hilfe. Ich werde für die mehreren .htaccess-Dateien gehen, um zu speichern, die Haupt httpd.conf ändernd. Nochmals vielen Dank, Matt – fistameeny

3

Directory und Location Befehle funktionieren nicht in .htaccess auf vielen Servern. Die einzige Lösung besteht darin, .htaccess im Zielunterordner zu erstellen und dort den Befehl FilesMatch zu verwenden.

0

<Directory> und <Location> sind in .htaccess nicht erlaubt, aber ...

Sie <If> verwenden können, die is allowed also in the “Context“ .htaccess (nicht nur httpd.conf) ... auch see here. Es ermöglicht Ihnen, einen Basispfad anzupassen und eine Erweiterung und alles andere, ein RegExp fassen kann ...

Getestet und Arbeiten:

<If "%{REQUEST_URI} =~ m#^/_stats/.*\.(jpg|png|css|js)#"> 
    Header unset ETag 
    FileETag None 

    ExpiresActive On 
    ExpiresDefault "access plus 1 day" 
</If> 

Hinweise: _stats ist meine Rewrite-URL , nicht die eingehende URL (wenn das auf Ihrem Ende einen Unterschied macht), nicht sicher, warum die Anpassung dagegen funktioniert ...

# ist nur ein Unterschied Ent draußen "Tor" für einen regulären Ausdruck anstelle von / (da ich / in seinem wörtlichen Sinne verwenden muss, rettet mir einige Flucht).

Verwandte Themen