我想为我的网络应用设置一个多语言网站。但我对于从哪里开始感到困惑。我正在使用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/
我的问题是,我应该从哪里开始实施它?
感谢。
答案 0 :(得分:0)
对我而言,这看起来像是一个结构问题,而不是CI问题,但我会给你一些想法
您应该考虑每种语言是否需要不同的模型和控制器。
如果您需要不同型号等,只需创建2个不同的CI安装。例如 - 由于您使用的是Apache,我给出了一个具体示例:在文档根目录中为每种语言创建一个文件夹,并通过vhost将任何子域指向相应的目录。作为替代方案,您可以将CI用作多个应用程序环境,查看this link
如果您想选择相同的型号,控制器和视图,您必须考虑您的路由。您是否希望所有语言都使用相同的网址名称,或者您是否喜欢与语言相关的网址(为此您应该考虑一个带有数据库系统的预控制器挂钩,以便选择链路应路由到所需控制器的位置)
在您的网址http://www.en.abc.com/en/index.php/en/中有太多&#34; ens&#34;。事实上,如果你有一个语言前缀作为子域名,你就不需要&#34; en&#34;根本就是一个后缀。 En.abc.com是要走的路。