我在htaccess上使用这个正则表达式:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9_-'s]+)/([A-Za-z0-9_-'s]+)/?$ index.php?param1=$1¶m2=$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-]+)([/]*)$