我在我的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.I我希望在重写规则中允许使用我目前所拥有的时间段。
那我该怎么做呢:
^([A-Za-z0-9_-\s]+)/([A-Za-z0-9_-\s]+)/?$
并允许它识别这样的字符串:
search/st.+charles
答案 0 :(得分:4)
要允许点(。),您必须将其转义,因此请使用\.
代替.
。您也可以使用[^abc]
允许所有字符,但 abc 。
要允许路径中的点,请使用:
^([A-Za-z0-9_-\s\.]+)/([A-Za-z0-9_-\s\.]+)/?$
答案 1 :(得分:0)
RewriteRule ^([a-zA-Z0-9 - ] +)([/] *)$