fis*_*eny 12 regex apache .htaccess mod-expires
我正在尝试使用Apache的.htaccess文件缓存一些文件.我想缓存一个特定的文件夹比其他任何东西都长,所以我一直在尝试使用FilesMatch指令,如下所示:
<FilesMatch "skins(.*)\.(jpg|png|gif)">
ExpiresDefault A2592000
</FilesMatch>
我希望能够将所有图像文件缓存在/ skins /目录及其子目录中.但是,我无法完全使用正则表达式--Aracle只是完全忽略它.
如何匹配<FilesMatch>.htaccess文件中的文件夹?
干杯,
马特
ara*_*aya 19
FilesMatch应该只匹配文件名,所以您可以将.htaccess文件放在"skins"目录中,它应该看起来像,
<FilesMatch "\.(jpg|png|gif)">
ExpiresDefault A2592000
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
或者如果在httpd.conf文件中你可以使用,
<Directory path_to_the_skins_dir>
<FilesMatch "\.(jpg|png|gif)">
ExpiresDefault A2592000
</FilesMatch>
</Directory>
Run Code Online (Sandbox Code Playgroud)
祝好运
Directory并且Location命令不能在.htaccess许多主机上使用。解决方案可能是.htaccess在目标子文件夹中创建,然后在其中使用FilesMatch命令。
<Directory>并且<Location>不允许在.htaccess中使用,但是…
您可以使用<If>它是也允许在“上下文”.htaccess(不只是httpd.conf中)......还看到这里。它使您可以匹配基本路径和扩展名以及RegExp可以掌握的其他内容…
经过测试和工作:
<If "%{REQUEST_URI} =~ m#^/_stats/.*\.(jpg|png|css|js)#">
Header unset ETag
FileETag None
ExpiresActive On
ExpiresDefault "access plus 1 day"
</If>
Run Code Online (Sandbox Code Playgroud)
注意:
_stats是我的重写URL,而不是传入URL(如果对您而言有任何不同),不确定是为什么匹配对该URL起作用…
#只是一个不同的外部“ gate ”来表示正则表达式,而不是用于将/其标记为正则表达式。(因为我需要使用/其字面意义,所以这使我不必转义/)。
| 归档时间: |
|
| 查看次数: |
29772 次 |
| 最近记录: |