2

我在我的 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
4

2 回答 2

4

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

编辑:

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

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

于 2012-08-27T15:01:20.853 回答
0

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

于 2012-08-27T16:23:53.293 回答