2012-08-27 32 views
2

我使用我的htaccess的正则表达式的任何字符:.htaccess的正则表达式匹配

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([A-Za-z0-9_-\s]+)/([A-Za-z0-9_-\s]+)/?$ index.php?param1=$1&param2=$2 [L,NC] 

问题是这样的作品与此的任何变动:

example.com/search/test product 123 
example.com/search/test+product+123 
example.com/search/testproduct123 
example.com/search/test%20product%2

但是当我扔了期间(。)进入它不匹配,我得到一个404消息。我是正则表达式的新手,无法找出添加到[A-Za-z0-9 _- \ s]以允许所有字符的语法。我相信[。*]会起作用,但它仍然会让我变成404.我想在重写规则中允许我现在拥有的一段时间。

更新时间:

因此,如何将我借此:

^([A-Za-z0-9_-\s]+)/([A-Za-z0-9_-\s]+)/?$ 

,并使其认识到这样的字符串:(。)

search/st.+charles 

回答

4

要允许一个点你有为了逃避它,所以使用\.而不是.。您也可以使用[^abc]来允许所有字符,但abc

编辑:

为了允许在路径点,使用:

^([A-Za-z0-9_-\s\.]+)/([A-Za-z0-9_-\s\.]+)/?$

+0

我想在重写规则中允许我现在拥有的时间段。 那么我会如何看待这个:^([A-Za-z0-9 _- \ s] +)/([A-Za-z0-9 _- \ s] +)/?$ 并允许它识别出这样的字符串:search/st。+ charles – csteel

+0

谢谢!这工作! – csteel

0

重写规则^([A-ZA-Z0-9 - ] +)([/] *) $