我目前正在开发一个 CodeIgniter 应用程序,但我需要搜索功能对人类和 CodeIgniter 都更具可读性。
这是我目前在提交表单时获得的 URL。
http://mydomain.com/search/?query=batman
这就是我希望得到的结果。
http://mydomain.com/search/batman
我对mod重写不是很好,但我想那是我需要走的路?
谢谢你的帮助。
我目前正在开发一个 CodeIgniter 应用程序,但我需要搜索功能对人类和 CodeIgniter 都更具可读性。
这是我目前在提交表单时获得的 URL。
http://mydomain.com/search/?query=batman
这就是我希望得到的结果。
http://mydomain.com/search/batman
我对mod重写不是很好,但我想那是我需要走的路?
谢谢你的帮助。
您应该使用 mod_rewrite,在您的脚本路径中创建一个脚本 .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^([a-zA-Z0-9]+)$ /index.php?query=$1 [L]
</IfModule>
查看 mod_rewrite 文档以获取更多信息 http://httpd.apache.org/docs/current/mod/mod_rewrite.html
您可以使用 javascript 捕获 onsubmit() 事件,然后重定向到您想要的 url。
$('#myform').on('submit', function(e){
e.preventDefault();
var value = $('#input').val()
window.location = 'http://mydomain.com/search/' + value;
})
当然,您的控制器必须如下所示:
class Search extends CI_Controller
{
public function index($term)
{
// code code
}
}
不是一个很好的方法,但是:
如果您将其POST
设为 a 并将变量放入单独的控制器中会怎样。例如search($s)
public function search($s){
header('Location:http://yoursite.com/whatever/search/'. $s);
}
这应该会给你你需要的结果。
首先更改form method
toPOST
并在您的搜索功能中,然后您可以执行以下操作:
function search(){
if( $this->input->post(null) ){
$keyword = $this->input->post('keyword');
#do you processing with the post
}else{
$keyword = $this->uri->segment(3);
}
#for pagination
$config['base_url'] = base_url()."controller/search/".$keyword."/page/";
$config['uri_segment'] = 5;
}