使用编码器的多语言站点


Multi language site using codeigniter

我想为我的web应用程序设置一个多语言网站。但我对从哪里开始相当困惑。我正在使用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/ 

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

谢谢。

对我来说这更像是一个结构问题而不是CI问题但我会给你一些思考

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

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

  3. 如果你希望选择相同的模型、控制器和视图,你真的必须考虑你的路由。您是否希望所有语言都使用相同的url名称,或者您是否喜欢依赖于语言的url(为此目的,您应该考虑一个带有DB系统的预控制器钩子,以选择链接应该路由到所需控制器的位置)

  4. 在你的url http://www.en.abc.com/en/index.php/en/有太多的"ens"。事实上,如果你有一个语言前缀作为子域,你根本不需要"en"作为后缀。