2012-12-25 72 views
1

过去几天我一直坚持创建一个基于PHP的多语言网站。我已经尝试了很多解决方案,但目前还没有运气。多语言网站php

这是我怎么会喜欢我的URL看起来:
http://www.example.com/en/about
http://www.example.com/cs/o-nas

我一直在使用这种重写规则之前,我决定实现多语言支持,它只是正常工作:

RewriteBase /kittytea/ 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([a-zA-Z0-9_-]+)$ ?page=$1 [L] 

我的链接看起来是这样的:

<a href="about"> 

有没有人有想法如何添加多语言支持?我熟悉使用GET方法传递URL参数。

我可能会补充说我正在使用一个简单的PHP SWITCH语句来加载单个网站部分。

PS - 这是一个非常小的网站,我不需要一流的解决方案。我只是想让它工作:)

谢谢!

回答

1

您可以尝试包括2个字母语言代码重写的一部分:然后

RewriteBase /kittytea/ 

# with language 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([a-z]{2})/([a-zA-Z0-9_-]+)$ ?lang=$1&page=$2 [L] 

# original, without language 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([a-zA-Z0-9_-]+)$ ?page=$1 [L] 

你的PHP脚本将需要检查在lang参数的2字母语言代码,并返回相应的内容。

然后,你需要改变你的链接:

<a href="en/about"> 
+0

甚至可以将它们组合成一个规则'重写规则^(([AZ] {2})/)([A-ZA- Z0-9 _-] +)$?lang = $ 2&page = $ 3 [L]' – Gerben

+0

谢谢!它似乎工作正常,但是,我的CSS和图像停止加载。我相信它与URL中的虚假“/ en”目录有关。我查了一些解决方案,但没有人工作。 –

+0

@OndraMatoušek因为额外的路径,您需要为您的css/images/scripts使用绝对URL,或者您可以尝试在页面的标题中添加''(或任何URI基础应该)。 –