URI多语言CodeIgniter

时间:2014-10-07 22:22:48

标签: php .htaccess codeigniter multilingual

我们正在使用Codeingiter库i18n(link)来创建多语言网站。

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

我们希望这个URI在没有控制器名称的情况下工作(www.thdomain.com/es/register),就像在图书馆的例子中一样,但我们认为问题出在我们的路线上.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

找到我们的代码进行审核

2 个答案:

答案 0 :(得分:0)

据我所知,您需要没有控制器名称的控制器网址。

如果要将控制器名称中的URL更改为其他名称,

你的routes.php中的

写下面的

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

您可以访问

domain.com/es/register

答案 1 :(得分:0)

问题出在我们的路线上。

这就是我们设法使其发挥作用的方式:

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

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

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