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