将GET值发送到没有参数和额外字符的URL?

时间:2013-10-18 14:55:22

标签: php codeigniter mod-rewrite

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

以下是我目前在提交表单时获取的URL。

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

这就是我最终想要的结果。

http://mydomain.com/search/batman

我对mod重写不太好,但我想这是我需要采取的路线?

感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

您应该使用mod_rewrite,在脚本路径中创建脚本.htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^([a-zA-Z0-9]+)$ /index.php?query=$1 [L]
</IfModule>

查看mod_rewrite docs获取更多信息 http://httpd.apache.org/docs/current/mod/mod_rewrite.html

答案 1 :(得分:0)

您可以使用javascript捕获onsubmit()事件,然后重定向到您想要的网址。

$('#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
    }

}

答案 2 :(得分:0)

首先将form method更改为POST,然后在搜索功能中,您可以执行以下操作:

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;
}

答案 3 :(得分:0)

不是一个非常好的方法,但是:

如果将其设为POST并将变量放入单独的控制器,该怎么办?例如search($s)

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

这可以为您提供所需的结果。