当我使用javascript刷新到以下网址时,无法获取codeigniter i18n语言和$ GET网址
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'];
答案 0 :(得分:0)
更改最后一行以包含查询字符串,因为重写规则删除了该字符串。请参阅apache docs
RewriteRule .* index.php/$0 [PT,L,QSA]
答案 1 :(得分:0)
我发现的最佳方式是在javascript中执行此操作,只需在我的脚本中添加lang
<script>
var lang="<?php echo $this->lang->lang(); ?>";
</script>
答案 2 :(得分: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;
}