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


Htaccess Regular expression to match any character

我在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。我想在重写规则中允许使用我目前拥有的句点。

更新时间:

那么我该如何看待这个:

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

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

search/st.+charles

要允许点(.),必须对其进行转义,因此使用'.而不是.。您也可以使用[^abc]来允许除abc之外的所有字符。

编辑:

要在路径中允许点,请使用以下命令:

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

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