【问题标题】:Matching on content-type in htaccess匹配 htaccess 中的内容类型
【发布时间】:2015-05-01 09:38:45
【问题描述】:

我知道我可以像这样使用FilesMatch "\.html$"

<FilesMatch "\.html$">
    Header set Pragma "public"
    Header set Cache-Control "public, must-revalidate, proxy-revalidate"
</FilesMatch>

但是,如果 html 是作为 SEO 友好的 URL 提供的(就像 wordpress 一样),这将无济于事,对吧?

我有办法匹配内容类型等于text/html

【问题讨论】:

    标签: wordpress .htaccess content-type mime


    【解决方案1】:

    如果您使用的是 Apache 2.4.10 或更高版本,则可以使用 expr= as

    Header set Pragma "public" "expr=%{CONTENT_TYPE} =~ m#text/html#"
    Header set Cache-Control "public, must-revalidate, proxy-revalidate" "expr=%{CONTENT_TYPE} =~ m#text/html#"
    

    请参阅 mod_headersexpr 上的文档和示例。

    【讨论】:

    • 嗯,似乎不起作用。我的Content-Type 标头是Content-Type: text/html; charset=UTF-8。我在 htaccess 中的线路是Header set X-TEST "Just testing" "expr=resp('Content-Type') == 'text/html; charset=UTF-8'"。仅当我删除 "expr=resp('Content-Type') == 'text/html; charset=UTF-8'"X-TEST 标头时才会插入。我还注意到=~ 不像should 那样工作。我在 apache 2.4.12
    • 调试并检查Header set X-TEST "expr=resp('Content-Type')"Header set X-TEST "expr=%{resp:Content-Type}"的值。
    • 我添加了Header set X-TEST-CT "expr=resp('Content-Type')"Header set X-TEST-EXPR "expr=%{resp:Content-Type}"。然后响应有一个带有X-TEST-CT: "resp('Content-Type')"X-TEST-CR 标头和no X-TEST-EXPR 标头。好像expr 没有被评估?
    • 终于看完文档明白了!我相应地更新了答案。是"expr=%{CONTENT_TYPE} =~ m#text/html#"。再次非常感谢。
    • 感谢您回复更新。只是展示了官方文档如何为您提供 10 种做同样事情的方法,但往往缺乏关于什么时候有效的更重要信息。很高兴你成功了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 2012-09-10
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多