.htaccess <filesmatch>仅在主机名匹配时才会出现?</filesmatch>

时间:2014-03-15 11:05:43

标签: apache .htaccess localhost setenv

我刚刚创建了一个本地环境,其中包含了我在生产环境中使用ubuntu32进入流浪虚拟机的相同代码,

问题是我在.htaccess文件

中的所有规则都出现了内部服务器错误

所以我开始删除分隔的代码块,这就是麻烦:

# 1 weeks
<FilesMatch "\.(js|css)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
# 1 weeks
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
# 1 MIN
<FilesMatch "\.(html|htm|php)$">
Header set Cache-Control "max-age=60, private, proxy-revalidate"
</FilesMatch>

问题是我想对所有环境使用完全相同的代码,有没有一种方法我只能在<filesMatch>中只包含localhost块?

我找到了这个answer,但它只是指一个页面,而不是主机名。

1 个答案:

答案 0 :(得分:0)

您可以这样做:

SetEnvIf Host ^ NON_LOCAL
SetEnvIf Host localhost !NON_LOCAL

<FilesMatch "\.(js|css)$">
Header set Cache-Control "max-age=604800, public" env=NON_LOCAL
</FilesMatch>

# 1 weeks
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=604800, public" env=NON_LOCAL
</FilesMatch>

# 1 MIN
<FilesMatch "\.(html|htm|php)$">
Header set Cache-Control "max-age=60, private, proxy-revalidate" env=NON_LOCAL
</FilesMatch>