正则表达式在url结尾处触发超过#字符的任何内容

时间:2016-01-31 04:55:10

标签: regex

我需要匹配某些网址,以便在我的htaccess中触发410标头,同时不允许其他网址触发410.

需要触发410的网址

http://www.example.com/word-lists/words-that-end-with/letter/farest/

不需要触发任何内容的网址

http://www.example.com/word-lists/words-that-end-with/letter/f
OR
http://www.example.com/word-lists/words-that-end-with/letter/f/

基本上,网址必须在最后一个斜杠的末尾只包含1个字母,但可以或不能以斜杠结尾。之后大于1个字符的任何内容都应该触发正则表达式,并触发410网址。

到目前为止,这是我的正则表达式,但我认为我过于复杂化了。

RewriteRule 410 /http:\/\/www.example.com\/word-lists\/words-that-end-with\/letter\/[a-z0-9]{2,}/

2 个答案:

答案 0 :(得分:1)

查询几乎是正确的两个小修改:

  1. 您还需要在域名中转义.
  2. 您可以使用^和$限制查询开头和结尾。
  3. 像这样:

    /^http:\/\/www.example.com\/word-lists\/words-that-end-with\/letter\/[a-z0-9]{2,}\/?$/
    

答案 1 :(得分:0)

您可以大大简化您的正则表达式;否定以下内容以获得您想要的内容:

/\/[a-z]\/?$/

只有当字符串以斜杠和单个字母结尾并且尾部斜杠是可选的时,此正则表达式才会返回true。

编辑:

如果你仍想匹配整个网址,那就是:

/^http:\/\/www\.example\.com\/word-lists\/words-that-end-with\/letter\/[a-z]\/?‌​$/