Mod rewrite 用mod rewrite重写GET请求?

Mod rewrite 用mod rewrite重写GET请求?,mod-rewrite,url-rewriting,Mod Rewrite,Url Rewriting,有人能告诉我如何在搜索表单中重写get请求吗 这是我表格的代码 <form action="searchpage.php" method="get "> <input type="text" name="search" placeholder="Search" required> <button type="submit">Search</button> </form> 但这似乎不起作用。如果有人能帮

有人能告诉我如何在搜索表单中重写get请求吗

这是我表格的代码

<form action="searchpage.php" method="get ">
        <input type="text" name="search"  placeholder="Search" required>
        <button type="submit">Search</button>
</form>

但这似乎不起作用。如果有人能帮我解决这个问题,我将不胜感激。

表单会请求
/searchpage.php?search=term
,因此您首先需要一个外部重定向,将用户从该url重定向到您的自定义url。然后你需要一个内部重写来正确解释它。然而,对用户的每个搜索请求进行外部重定向对我来说似乎适得其反

#The external redirect
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /searchpage\.php\?search=(.*)\ HTTP
RewriteRule ^searchpage\.php$ /searchpage-search-%2.html? [R,L]

#Internal rewrite
RewriteRule searchpage-search-(.*)\.html$ searchpage.php?search=$1 [L]

当用户执行搜索请求时,是否确实要从外部重定向用户?这似乎适得其反。它可以工作,但仍然会在
.html
之后的url末尾显示
?search=term
extension@zack在第一条规则中做了一个小改动。忘记添加尾随的
以清除当前查询字符串。非常感谢。它就像一个符咒。再次感谢你的帮助。
#The external redirect
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /searchpage\.php\?search=(.*)\ HTTP
RewriteRule ^searchpage\.php$ /searchpage-search-%2.html? [R,L]

#Internal rewrite
RewriteRule searchpage-search-(.*)\.html$ searchpage.php?search=$1 [L]