mod_rewrite 搜索 url 问题

mod_rewrite search url issue

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

我的URL

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

我的规则

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

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

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

正确的做法是什么?

RewriteRule 仅匹配 path,不匹配查询参数。您需要使用 QSA:

将原始查询参数附加到重写的 URL
RewriteRule ^members/search/ index.php?view=members-search [L,QSA]

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

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

(不太确定这是否会完全按原样工作,但按照这些思路。QSA 无论哪种方式都会简单得多。)