mod_rewrite搜索网址问题

时间:2015-01-23 13:38:49

标签: php .htaccess mod-rewrite

我通过将视图文件加载到模板(index.php)来构建单页应用程序 - 这种方法效果很好 - 除了搜索。

我的网址

http://testdomain.loc/members/search/?s=foo+bar

我的规则

RewriteRule ^members/search/(.*)$ index.php?view=members-search&keywords=$1 [L]

这是加载正确的视图,但它没有传递关键字参数,所以当我print_r($_GET)时,这就是我看到的......

(
    [view] => members-search
    [keywords] => 
)

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

RewriteRule仅匹配路径,而不是查询参数。您希望使用QSA将原始查询参数附加到重写的网址:

RewriteRule ^members/search/ index.php?view=members-search [L,QSA]

如果你真的想匹配查询参数,你必须在RewriteCond中这样做:

RewriteCond %{QUERY_STRING} s=(.*)
RewriteRule ^members/search/ index.php?keywords=%1 [L]

(不太确定这是否会完全正常,但沿着这些方向发展。QSA无论哪种方式都会更简单。)