首页 > 解决方案 > .htaccess RewriteRule 用于搜索查询页面

问题描述

我想为我的搜索页面编写一个重写规则,它必须满足以下条件:

显示网址:

/search?q=SEARCH-QUERY

实际网址:

/search.php?q=SEARCH-QUERY

我尝试了以下但没有奏效:

RewriteRule ^search?q=(.*)$ search.php?q=%1 [QSA]

我检查了许多相关问题,但找不到答案。

标签: apache.htaccessredirectmod-rewriteurl-rewriting

解决方案


根据您显示的示例,您能否尝试以下操作。请在测试您的 URL 之前清除您的浏览器缓存。您正在检查 rewriterule 中的查询字符串,这将不起作用,因为查询字符串可以在条件中与变量QUERY_STRING或在变量中匹配,THE_REQUEST所以我在这里使用稍后的选项。

RewriteEngine ON
RewriteCond %{THE_REQUEST} \s/(search)\?q=SEARCH-QUERY\s [NC]
RewriteRule ^ %1.php [L,QSA]

推荐阅读