Magento:使用正则表达式通过URL清除缓存

时间:2014-06-16 09:53:54

标签: php regex magento caching

我遇到了无法解决的问题。部分是因为我无法用正确的术语来解释它。我很陌生,对这个笨拙的问题感到抱歉。

您可以在下面看到我的目标概述。

我正在使用Magento CE 1.7.0.2。

我想通过正则表达式按URL清除缓存。

每件事情都很好但我的问题是

我有像

这样的网址
  1. http://www.example.com/
  2. http://www.example.com/index.php
  3. http://www.example.com/index.php/adidas-black-t-shirt.html
  4. 像这样我有第一个网址的网址我使用以下正则表达式我可以清除缓存'^/(?:example\.com?)?$'

    对于第二个网址'^/(?:index\.php/?)?$'使用此我可以清除缓存,但问题是在这里它也清除了第三个URL的缓存。

    如何清除仅第二个网址的缓存

    我在这里做错了什么?

    任何想法?

1 个答案:

答案 0 :(得分:0)

  

我在这里做错了什么? ^/(?:index\.php/?)?$

是的,尽管使用锚点很棒。

  1. 在断言我们位于字符串开头的^之后,您立即继续匹配不存在的/,然后index。这与那里不匹配(我们缺少整个http etc部分。)
  2. 最后的?使整个匹配成为可选项。
  3. 但是你的正则表达式适用于这个小调整(参见demo):

    ^.*?index\.php/?$
    

    解释正则表达式

    ^                        # the beginning of the string
    .*?                      # any character except \n (0 or more times
                             # (matching the least amount possible))
    index                    # 'index'
    \.                       # '.'
    php                      # 'php'
    /?                       # '/' (optional (matching the most amount
                             # possible))
    $                        # before an optional \n, and the end of the
                             # string