多语言子域。如何实施?
我有一个要求,当用户更改英语以外的语言时,它需要作为子域显示在 URL 中。示例:
英文网站 = www.abc.com
西班牙语网站(美国西班牙语)= esp-us.abc.com
西班牙语网站(Spanish spanish)= esp-es.abc.com
如何实现这个?我正在使用代码点火器 php。我有一个名为 L_languages
的表,它是语言查找表。它有两列:一列用于语言代码 (esp),另一列用于国家/地区代码 (us),因此我可以根据用户的语言从数据库中提取该代码。
但是如何将其写入子域并使该过程完全由数据库驱动,以便明天如果我添加一种新语言子域将起作用?
- 站点在 CentOS 上运行 Apache。
谢谢。
I have a requirement that is when the user changes the language except English it needs to show up in the URL as a sub-domain. Example:
English site = www.abc.com
Spanish site (US spanish) = esp-us.abc.com
Spanish site (Spanish spanish) = esp-es.abc.com
How to implement this? I am using code ignitor php. I have a table called L_languages
which is the language lookup table. It has two columns: one for the language code (esp) and another column for the country code (us) so I can pull this from the database according to the user's language.
But how to write it to the sub-domain and make this process fully database driven so tomorrow if I add a new language the subdomain will work?
- Site is running Apache on CentOS.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以让 HTACCESS 执行 mod_rewrite 规则来识别这些实例,或者您可以在 HTACCESS 中应用一揽子规则,然后让 PHP 执行繁重的工作。或者两者的结合。
HTACCESS mod_rewrite 解决
方案 使用此规则的示例:
PHP 解决方案
将此代码包含在页面顶部的某个位置(在生成特定于语言的内容之前)。
然后,您可以使用
$lang
变量(如果 A)没有子域,或 B)使用“www”子域,则该变量将为false
。此外,您可以根据可接受的语言数组检查
$lang
变量的值,如果不存在,则再次将其重置为 false。You can have HTACCESS perform a
mod_rewrite
rule identify these instances, or you can apply a blanket rule within HTACCESS and then have PHP do the heavy lifting from there. Or a combination of the two.HTACCESS mod_rewrite Solution
Examples using this rule:
PHP Solution
Include this code somewhere towards the top of the page (before language-specific content is generated).
You can then use the
$lang
variable (which will befalse
if either A) no subdomain, or B) the "www" subdomain is used.Additionally, you can check the value of the
$lang
variable against an array of acceptable languages, and, if it is not present, again, reset it to false.您可以使用 PHP 来服务不同的语言,但如果您希望这些子域正常工作,则需要配置您的网络服务器(Apache、IIS 等)来设置这些子域。您需要将您选择的网络服务器添加到您的问题中。 :)
You can use PHP to serve different languages, but if you want those subdomains to work, you'll need to configure your webserver (Apache,IIS, etc.) to setup those subdomains. You'll want to add your webserver of choice to your question. :)