我有一个.htaccess代码用于重新分配搜索结果页面。
RewriteRule ^search/([a-zA-Z0-9\-]+)$ search.php?query=$1 [L,NC]
因此,当您转到/ search / blabla时,您只需转到search.php?query = blabla
没问题,没问题。当我写地址栏/ search / blabla时,它会显示结果。
问题是,当我使用搜索表单时,它会将我发送到search.php?query = blabla(无惊奇)
这是我的表单代码:
<form id="search" name="search" action="search.php" method="get">
<table>
<tr>
<td><input type="text" size="20" maxlength="100" name="query" id="query"></td>
<td><input type="submit" value="Search"></td>
</tr>
</table>
</form>
我希望此表单将我重定向到搜索/查询而不是search.php?query = query
我怎样才能做到这一点?
我遇到了同样的问题,最终我要做的是使用JavaScript拦截提交。
form.onsubmit = function(){
var url = 'http://example.com/search/query';
// obviously you will have some logic generating the url
window.location = url;
return false;
}
一点解释。
我认为不需要重写规则,因为这是javascript中非常基本的功能,并且在所有浏览器中均受支持。您可能会丢失的事实是,对每个单个请求都执行重写规则,这意味着,如果您有更多的规则(可能要做的话),则必须在所有请求上运行所有正则表达式。这是毫无意义的,因为根据您的应用程序,大多数规则将只占很少的请求,这意味着从长远来看,这浪费了处理能力,除非在特定情况下使用正则表达式,否则应避免使用这些规则别无选择。我知道浪费可能很小,但是当您最终进行了许多这样的微优化时,最终可能会变得很有意义。
只是说而已。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句