Apache FilesMatch - 匹配正则表达式中的文件夹

时间:2009-05-15 11:13:21

标签: regex apache .htaccess mod-expires

我正在尝试使用Apache的.htaccess文件缓存一些文件。我想比其他任何东西都更长时间地缓存特定文件夹,所以我一直在尝试使用这样的FilesMatch指令:

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

我希望能够将所有图像文件缓存在/ skins /目录及其子目录中。但是,我无法完全使用正则表达式--Amaase只是完全忽略了它。

如何在.htaccess文件中将文件夹与<FilesMatch>匹配?

干杯,
   马特

3 个答案:

答案 0 :(得分:18)

FilesMatch应该只匹配文件名 您可以将.htaccess文件放在“skins”目录中,它应该类似于

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

或者如果你在httpd.conf文件中可以使用,

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

答案 1 :(得分:5)

DirectoryLocation命令无法在许多主机上的 .htaccess 中工作。解决方案可能是在目标子文件夹中创建.htaccess,并在那里使用 FilesMatch 命令。

答案 2 :(得分:2)

.htaccess中不允许

h2=h1.withColumn("rowId", monotonically_increasing_id()) c1=c.withColumn("rowId", monotonically_increasing_id()) c1.join(h2,c1.rowId==h2.rowId,'inner').drop(c1.rowId).drop(h2.rowId).show() <Directory>,但是......

您可以使用<Location> is allowed also in the “Context“ .htaccess(不仅仅是httpd.conf)...还有see here。它允许您匹配基本路径扩展和其他任何东西,RegExp可以掌握......

经过测试和工作:

<If>

备注: <If "%{REQUEST_URI} =~ m#^/_stats/.*\.(jpg|png|css|js)#"> Header unset ETag FileETag None ExpiresActive On ExpiresDefault "access plus 1 day" </If> 是我的重写网址,而不是传入的网址(如果这会对您的结果造成任何影响),不确定,为什么匹配对此有效...

对于正则表达式,

_stats只是一个不同的“ gate ”,而不是#(因为我需要在字面意义上使用/,救了我一些逃脱的事。)