Htaccess正则表达式匹配任何字符

时间:2012-08-27 14:57:59

标签: php regex .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%20123

但是当我把一段时间(。)放进去时它就不匹配了,我收到了一条404消息。我是正则表达式的新手,无法弄清楚要添加到[A-Za-z0-9 _- \ s]以允许所有字符的语法。我相信[。*]会起作用,但它仍然会把我送到404.I我希望在重写规则中允许使用我目前所拥有的时间段。

更新

那我该怎么做呢:

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

并允许它识别这样的字符串:

search/st.+charles

2 个答案:

答案 0 :(得分:4)

要允许点(。),您必须将其转义,因此请使用\.代替.。您也可以使用[^abc]允许所有字符,但 abc

编辑:

要允许路径中的点,请使用:

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

答案 1 :(得分:0)

RewriteRule ^([a-zA-Z0-9 - ] +)([/] *)$