簡體   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