【发布时间】:2015-08-17 23:25:23
【问题描述】:
当我提交表单时,我会得到类似http://localhost/offstreams/search/?search=fuzz 的网址。我希望 URL 看起来像这样:http://localhost/offstreams/search/fuzz。
这是我的 HTML 表单:
<form action="<?php echo BASE_URI . "search/"; ?>" method='get' class='searchbarForm'>
<input type='text' name='search' id='searchbar' placeholder='Search...'/>
</form>
我的 PHP 代码:
if (isset($_GET['search'])) {
echo $_GET['search'];
}
我的 .htaccess:
RewriteEngine On
RewriteBase /
RewriteRule ^search/(.*)$ ./offstreams/searchs/search.php?search=$1 [QSA]
事情是这样的:
当我转到http://localhost/offstreams/search/fuzz 时会打印结果 - 它工作得非常好,但我希望页面提交到该链接而不是顶部的丑陋 URL。 如何提交表单并让 $_GET['search'] 与 mod_rewrite 一起使用?
【问题讨论】:
-
您必须使用 GET 还是可以使用 POST?
-
您需要使用 javascript 并单击搜索/提交按钮,更改表单的操作属性以包含搜索框的值。可能我会将提交按钮更改为“按钮”按钮(因此它不会提交),然后在我的按钮中单击处理程序函数自己处理导航,如
location.href=encodeURIComponent(value);。 -
大多数框架使用 Route 和 { Slug } 解决方案。您可能可以执行一些 hacky 函数来剥离和读取正常的 url
-
@bassxzero 使用 post 可以工作,但不会在 url 中显示,我不喜欢这样,因为如果用户点击新页面,我不希望搜索数据消失后退按钮或类似的东西。
标签: php .htaccess mod-rewrite