2016-01-31 183 views
0

末触发什么比文字更#我有一定的网址,我需要匹配触发410头在我的htaccess同时不允许其他URL触发410正则表达式的URL

URL需要触发需要不会触发任何一个410

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

URL

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 URL。

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

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

回答

1

查询是接近正确的只有两个小修改:

  1. 你一定要逃逸域名.为好。
  2. 你可以用^和$来限制查询的开始和结束。

这样的:

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

您可以大大简化你的正则表达式;否定下面来得到你想要的:只有在字符串中一个斜杠和一个字母结束,以斜杠是可选

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

此正则表达式将返回true。

编辑:

如果你仍然想匹配整个URL它会是:

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

+0

我会觉得更舒适,如果我知道它匹配'HTTP://www.example .com/word-lists/words-that-end-with/letter /'在之前 –

+0

如果你愿意,你仍然可以添加它。所以它会变成'/^http:\/\ www \ .example \ .com \/word-lists \/words-that-end-with \/letter \/[a-z] \ /?$ /'。 – michael

+0

这个解决方案的工作原理也是如此,但是在需要触发后我有潜在的URL和斜线,这是行不通的。 'letter'后面必须不超过一个字符 –