2016-01-31 181 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'後面必須不超過一個字符 –