Url使用纯文本重写问题

时间:2018-02-17 19:35:54

标签: php .htaccess url url-rewriting

我有一点问题,我已将这些规则放在我的.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中实现这一点,所以如果有人能提供一些非常好的信息。提前谢谢!

1 个答案:

答案 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" }