URI多语言CodeIgniter

问题描述:

我们使用Codeingiter库i18n(link)创建多语言网站。URI多语言CodeIgniter

在此之前,我们有例如www.thedomain.com/register和register是我们控制器中的一个函数。现在,当我们放置这个库时,它会抓取域,语言字符串,控制器名称和函数名称:www.thedomain.com/es/homegf/register(其中homegf是我们的控制器)。

我们希望这个URI在没有我们的控制器名称的情况下工作(www.thdomain.com/es/register),就像在图书馆的例子中一样,但我们认为这个问题在我们的routes.php中。

这是我们在routes.php文件

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
$route['default_controller'] = "homegf"; 
$route['404_override'] = ''; 
$route['^(en|es|de)/(.+)$'] = "$2"; 
$route['^(en|es|de)$'] = $route['default_controller']; 

这是我们的.htaccess

RewriteEngine on 
RewriteCond $1 !^(index\.php|files|robots\.txt) 
RewriteRule ^(.*)$ /index.php/$1 [L] 

您可以在https://bitbucket.org/ticketcomunicacion/grinfood/src/17ddde60e340a1f2bc389f54ec579e1e903ee86b?at=multilenguaje

+0

所以,如果你没有得到重新路由到您想要的,你在哪里结束? – 2014-10-07 22:36:32

+0

我在www.thedomain.com/es/homegf/register找到的内容,我想要www.thedomain.com/es/register,我想消失homegf – codiaf 2014-10-07 22:47:47

问题出在我们的路线上。

这就是我们如何设法使其工作:

$route['^es/(.+)$'] = "homegf/$1"; 
$route['^en/(.+)$'] = "homegf/$1"; 

$route['^es$'] = $route['default_controller']; 
$route['^en$'] = $route['default_controller']; 

$route['(:any)'] = 'homegf/$1'; 

按照我的理解找到我们的代码审查,你想要没有控制器名称的控制器url。如果你要的网址从您的控制器名称到其他改变

在routes.php文件写入以下

$route['homegf/register'] = "register"; 

,您可以访问

domain.com/ es/register

+0

该网站是dinamical,有很多功能,如注册(验证,忘记密码,new_order ...)的计划是不必写每一个...是使用正则表达式或东西 – codiaf 2014-10-07 22:38:16

+0

尝试添加 RewriteRule ^(。*)$/homegf/$ 1 [L] 在htaccess – 2014-10-07 22:43:19

+0

是的,我试过但没有工作,我认为是在routes.php中的东西,因为www.thdomain.com/es/register显示404错误页面(找不到) – codiaf 2014-10-07 22:54:45