0

当我使用 javascript 刷新到以下 url 时,无法让 codeigniter i18n 语言和 $GET url 工作

http://example.com/search?in=word&other=word2

它只是去 http://example.com/en/search并且 $GET 变量丢失了

我的 htaccess 看起来像这样

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L] 

什么是最优雅的解决方案

//部分config/routes.php

$route['^(en|fr)/(.+)$'] = "$2";
$route['^(en|fr)$'] = $route['default_controller'];
4

3 回答 3

0

更改最后一行以包含查询字符串,因为重写规则将其删除。请参阅apache 文档

RewriteRule .* index.php/$0 [PT,L,QSA] 
于 2013-02-26T06:57:44.883 回答
0

我发现的最好方法是在 javascript 中执行此操作,然后lang在我的脚本中添加

<script>
var lang="<?php echo $this->lang->lang(); ?>";
</script>
于 2013-02-26T09:43:41.017 回答
0

我找到了方法,我在 switch_uri 函数中添加了一些更改,所以现在我的函数如下所示:

function switch_uri($lang)
  {
    if ((!empty($this->uri)) && (array_key_exists($lang, $this->languages)))
    {

        if ($uri_segment = $this->get_uri_lang($this->uri))
        {
            $uri_segment['parts'][0] = $lang;
            $uri = implode('/',$uri_segment['parts']);
        }
        else
        {
            $uri = $lang.'/'.$this->uri;
        }

        // Add $_GET string
        if (count($_GET) > 0)
            $uri .= '?' . http_build_query($_GET, '', "&");
    }

    return $uri;
  }
于 2014-12-18T22:44:20.553 回答