使用codeigniter的多语言站点

时间:2015-07-24 06:16:39

标签: php .htaccess codeigniter

我想为我的网络应用设置一个多语言网站。但我对于从哪里开始感到困惑。我正在使用Codeigniter并在cpanel服务器中托管我的域。

我想要的是具有子域的多语言,例如:

en.abc.com for english
id.abc.com for indonesia

到目前为止,我已经设置了高级DNZ区域编辑器并将子域指向服务器IP地址。但是,我不知道接下来该做什么。我已经阅读了一些教程来设置.htaccess等等。但是它没有用。

这是我的.htaccess文件:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^(/index\.php|/assets|/robots\.txt|/favicon\.ico)
RewriteRule ^(.*)\.html$ /index.php/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^(/index\.php|/assets|/robots\.txt|/favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]

RewriteCond %{HTTP_HOST} ^en\.lokadok\.co.id$
RewriteCond %{REQUEST_URI} !^/en/
RewriteRule (.*) /en/$1

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>

<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>

每次访问重定向到以下地址的子域时,我都会收到 404 not found 错误:

http://www.en.abc.com/en/index.php/en/ 

我的问题是,我应该从哪里开始实施它?

感谢。

1 个答案:

答案 0 :(得分:0)

对我而言,这看起来像是一个结构问题,而不是CI问题,但我会给你一些想法

  1. 您应该考虑每种语言是否需要不同的模型和控制器。

  2. 如果您需要不同型号等,只需创建2个不同的CI安装。例如 - 由于您使用的是Apache,我给出了一个具体示例:在文档根目录中为每种语言创建一个文件夹,并通过vhost将任何子域指向相应的目录。作为替代方案,您可以将CI用作多个应用程序环境,查看this link

  3. 如果您想选择相同的型号,控制器和视图,您必须考虑您的路由。您是否希望所有语言都使用相同的网址名称,或者您是否喜欢与语言相关的网址(为此您应该考虑一个带有数据库系统的预控制器挂钩,以便选择链路应路由到所需控制器的位置)

  4. 在您的网址http://www.en.abc.com/en/index.php/en/中有太多&#34; ens&#34;。事实上,如果你有一个语言前缀作为子域名,你就不需要&#34; en&#34;根本就是一个后缀。 En.abc.com是要走的路。