如何通过允许mod_rewrite作为查询字符串和页码来进行.htaccess搜索?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过允许mod_rewrite作为查询字符串和页码来进行.htaccess搜索?相关的知识,希望对你有一定的参考价值。

我的原始文件是一个名为search.php的PHP页面。

通常,搜索功能将是:

mydomain.com/search.php cid=&type=search&q=keyword+text&page=2

但是,是否可以将其重写为mydomain.com/all.html?q=keyword+text&page=[1-anypage]

我试着把这段代码放到.htaccess中:

RewriteRule ^all.html?q=([^.*]+)&p=([0-9]+)$ search.php?cid=&type=search&q=$1&p=$2 [L]

但出了点问题。

请帮我找到解决方案。谢谢。

答案

是的可能但你无法匹配RewriteRule模式中的查询字符串,你需要使用RewriteCond指令检查%{QUERY_STRING}类似如下

RewriteEngine On

RewriteCond %{QUERY_STRING} ^q=([^&]+)&page=(.+)$ [NC]
RewriteRule ^all.html$ /search.php?cid=&type=search&q=%1page=%2 [L]

以上是关于如何通过允许mod_rewrite作为查询字符串和页码来进行.htaccess搜索?的主要内容,如果未能解决你的问题,请参考以下文章

如何 mod_rewrite 并保留查询字符串?

ini 使用mod_rewrite(和mod_setenvif)通过temp env vars操作查询字符串参数的示例

使用 mod_rewrite 将带有哈希字符的路径转换为查询字符串

如何从 mod_rewrited url 查询字符串中获取

如何根据查询字符串在 apache mod_rewrite 中禁止 url?

使用 mod_rewrite 重定向查询字符串(反之亦然)