2013-01-09 53 views

回答

0

我看過這個問題被問及很多時間,所以和其他地方,我只是想出了這個不錯的伎倆,並希望分享它。

RewriteRule正則表達式將工作:

RewriteRule ^foo/{0,1}(?![a-z])(.*) 

進一步解釋說:

foo匹配的東西以foo begening。

/{0,1}表示必須有零或一個尾部斜線。你可能會認爲這隻會匹配/ foo或/ foo /,但這也匹配/ foofake,因爲它也在foo之後有任何尾隨斜線。

(?![a-z])這是這個正則表達式的主要部分。這表示方括號內的內容,即[a-z]不應該在foo之後。請注意,這仍然會匹配其他字符,如/ foo + bar。閱讀更復雜的版本。

(.*)說匹配任何東西後面的斜槓。這也可以根據需要進行優化。

這是使用相同的邏輯更復雜的版本:

foo/{0,1}(?![a-zA-Z0-9`[email protected]$%^&*()_\-\{\}\[\]\+\=\\\|:;"'>.<,'\s])(.*)$ 

這其中有我的鍵盤上的所有字符列入黑名單,這樣它們就不是/ foo後出現。

你可以看到在行動的迷你版在這裏:http://regexr.com?33blp

,您可以在這裏的行動找到擴展版本:http://regexr.com?33bme

我覺得這種方法有改善的範圍很廣,所以如果你發現任何瑕疵或者你找到一種方法來使它成爲awesomer,請做評論!

相關問題