【问题标题】:regular expression to negate a string nocache not working正则表达式否定字符串 nocache 不起作用
【发布时间】:2013-05-02 12:05:15
【问题描述】:

我正在尝试在 apache 中构建一个正则表达式,它与所有扩展名为 .html、.css、.js、.jpg 等的文件匹配......除了它的 url 有“nocache”这个词

我已经阅读了 stackoverflow 中的其他条目,并创建了以下正则表达式

<FilesMatch "^(.*(?!nocache)\.(png|bmp|jpg|gif|html|htm|css|js|ttf|svg|woff|txt))$">
  ExpiresActive on
  ExpiresDefault "now plus 1 month"
</FilesMatch>

问题是这个正则表达式不能正常工作。所有带有扩展名的文件都被缓存了,但是带有“nocache”这个词的文件也被缓存了。

有人看到问题所在了吗?

【问题讨论】:

    标签: regex apache browser-cache regex-negation regex-lookarounds


    【解决方案1】:

    那是因为你把前瞻断言放在了错误的地方

    ^(?!.*nocache).*\.(png|bmp|jpg|gif|html|htm|css|js|ttf|svg|woff|txt)$
    

    当你把它放在点之前,它会从那个位置向前看,它看到的只是文件扩展名,不是“nocache”,所以它是真的。

    在我的表达式中,它位于锚点之后并有自己的.*,因此如果字符串中的任何位置有“nocache”,它将从字符串的开头开始查找。

    【讨论】:

      猜你喜欢
      • 2011-05-01
      • 2012-11-04
      • 1970-01-01
      • 2018-06-19
      • 2010-11-12
      • 1970-01-01
      • 2014-04-19
      • 1970-01-01
      相关资源
      最近更新 更多