2

我目前正在开发一个 CodeIgniter 应用程序,但我需要搜索功能对人类和 CodeIgniter 都更具可读性。

这是我目前在提交表单时获得的 URL。

http://mydomain.com/search/?query=batman

这就是我希望得到的结果。

http://mydomain.com/search/batman

我对mod重写不是很好,但我想那是我需要走的路?

谢谢你的帮助。

4

4 回答 4

1

您应该使用 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

于 2013-10-18T15:00:38.197 回答
0

您可以使用 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
    }

}
于 2013-10-18T15:00:40.773 回答
0

不是一个很好的方法,但是:

如果您将其POST设为 a 并将变量放入单独的控制器中会怎样。例如search($s)

public function search($s){
    header('Location:http://yoursite.com/whatever/search/'. $s);
}

这应该会给你你需要的结果。

于 2013-10-18T15:43:33.433 回答
0

首先更改form methodtoPOST并在您的搜索功能中,然后您可以执行以下操作:

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;
}
于 2013-10-18T15:02:51.910 回答