繁体   English   中英

codeigniter不会重定向到utf-8 url

[英]codeigniter doesn't redirect to utf-8 url

我正在尝试使用Codeigniter 3.0在我的网站上实现搜索表单,并且我在redirect()方法上遇到了一些问题。

我想做的是当我键入一些字符串并按Enter时,它将向控制器发出发布请求 ,然后控制器将获取字符串并将当前URL重定向到http://example.com/search/string

所以,这是我拥有的代码:

搜索表格:

<form action="/search" method="post" accept-charset="UTF-8">

一个获取搜索字符串并进行重定向的控制器:

public function do_search() {
    $search = $this->input->post('search');

    log_message('debug', 'search: ' . $search);

    if ($search) {
       redirect('search/' . $search, 'refresh');
    } else {
       redirect('/', 'refresh');
    }
}

config.php文件:

$config['permitted_uri_chars'] = 'üÜöÖğĞıİəƏçÇşŞ a-z 0-9~%.:_\-';

另外,我的基本控制器上有以下代码:MY_Controller

$this->output->set_header('Content-Type: text/html; charset=utf-8');

现在,当我在搜索表单中键入“həə”时,它会重定向,但是url变得像“hÉÉ” 如您所见,我正在控制器上记录搜索字符串,该字符串可以正确打印。 (例如“həə” )。

我想念什么吗? 任何想法如何解决这个问题?

不支持ascii是软件中的普遍问题,并且是与浏览器相关的软件中的一个非常特殊的问题。 您应该做的是,获取传入的值,并具有某种逻辑并进行重新映射。 Codeigniter具有内置的重映射功能。

称为:

function _remap($method)
    {
      // here your logic

    }

您可以在每个控制器中都具有此功能。

一个小提示:如果您支持多语言,则应在每个请求上转移GET或POST或Cookie中的语言,并具有某种逻辑。 否则您会遇到麻烦。

我写了一个小的jQuery代码进行重定向,在我的情况下它确实起作用。

$("form[name=search]").submit(function (e) {
  e.preventDefault();
  window.location = "/search/" + $("input[name=search]").val();
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM