2014-10-07 179 views
0

我們使用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

回答

0

問題出在我們的路線上。

這就是我們如何設法使其工作:

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

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

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

按照我的理解找到我們的代碼審查,你想要沒有控制器名稱的控制器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