我有一点问题,我已将这些规则放在我的.htaccess中了:
RewriteRule ^search/([A-Za-z0-9-]+)/?$ search.php?s=$1 [NC,L]
RewriteRule ^search/([A-Za-z0-9-]+)?$ search.php?s=$1 [NC,L]
RewriteRule ^search/([A-Za-z0-9-]+)/([0-9]+)/?$ search.php?s=$1&p=$2 [NC,L]
并且只要链接看起来像search/test
search/test/4
search/test/
,就会出现问题,当我尝试执行类似search/test1 test2
的操作时,会出现问题。我想我必须将搜索字符串转换为可以像search/test1%20%test2
这样的网址传递的内容。可悲的是,我不知道如何在.htaccess中实现这一点,所以如果有人能提供一些非常好的信息。提前谢谢!
答案 0 :(得分:1)
您可以将空白字符\s
附加到规则中:
RewriteRule ^search/([A-Za-z0-9-\s]+)/?$ search.php?s=$1 [NC,L]
RewriteRule ^search/([A-Za-z0-9-\s]+)?$ search.php?s=$1 [NC,L]
RewriteRule ^search/([A-Za-z0-9-\s]+)/([0-9]+)/?$ search.php?s=$1&p=$2 [NC,L]
因此,浏览到search/test1 test2
会重定向到search.php?s=test1 test2
。
var_dump($_GET) ; // array(1) { ["s"]=> string(11) "test1 test2" }