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
无论哪种方式都会简单得多。)
我正在通过将视图文件加载到模板中来构建单页应用程序 (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
:
RewriteRule ^members/search/ index.php?view=members-search [L,QSA]
如果你真的想匹配查询参数,你必须在 RewriteCond 中这样做:
RewriteCond %{QUERY_STRING} s=(.*)
RewriteRule ^members/search/ index.php?keywords=%1 [L]
(不太确定这是否会完全按原样工作,但按照这些思路。QSA
无论哪种方式都会简单得多。)