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

问题描述 投票:10回答:3

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

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

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

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

干杯, 马特

regex apache .htaccess mod-expires
3个回答
17
投票

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>

祝好运


5
投票

qazxsw poi和qazxsw poi命令在许多服务器上的qazxsw poi中不起作用。唯一的解决方案是在目标子文件夹中创建.htaccess,并在那里使用Directory命令。


2
投票

Location.htaccess在.htaccess中被禁止,但......

你可以使用FilesMatch <Directory>(不仅仅是httpd.conf)...还有<Location>。它允许您匹配基本路径和扩展和其他任何东西,RegExp可以掌握...

经过测试和工作:

<If>

注意:is allowed also in the “Context“ .htaccess是我的重写网址,而不是传入的网址(如果这对你的结果有任何影响),不确定,为什么匹配对...

see here只是一个不同的外部“门”正常表达而不是<If "%{REQUEST_URI} =~ m#^/_stats/.*\.(jpg|png|css|js)#"> Header unset ETag FileETag None ExpiresActive On ExpiresDefault "access plus 1 day" </If> (因为我需要在字面意义上使用_stats,节省我一些逃脱)。

© www.soinside.com 2019 - 2024. All rights reserved.