如何阻止.htaccess捕捉正斜线

时间:2014-07-08 02:59:05

标签: php

我正在创建用户可以搜索帖子并使用各种参数对其进行排序的网站。

我原来的网址看起来像这样。

www.mydomain.com/posts.php?mode=search&category=all&q=this is search query&verified=true

所以我在htaccess文件中创建了这样的重写规则。

RewriteRule ^search/all/(.*)/verified/$ posts.php?mode=search&category=all&q=$1&verified=true [L]

但是当我通过

检查$ _GET数组时
print_r($_GET);

将正则表达式后的evrything发送到参数" q"。

Array
(
    [mode] => search
    [category] => all
    [q] => this is search query/verified
)

我怎样才能使它工作,不要在重写规则中的正则表达式之后发送evrything到" q"参数和特定参数,如。

我希望我的输出像

Array
(
    [mode] => search
    [category] => all
    [q] => this is search query
    [verified] => true
)

1 个答案:

答案 0 :(得分:2)

搜索字符串=> B标志

由于您的搜索字符串正在编码和解码,我们需要使用B标记。

试试这个:

RewriteRule ^search/all/([^/]+)/verified/?$ posts.php?mode=search&category=all&q=$1&verified=true [L,B]

我还修复了您的捕获组:[^/]+匹配一个或多个不是/的字符

<强>参考

B (escape backreferences)