[英]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.