我写多语种网站。我有几个服务器上的文件,如:

/index.php
/files.php
/funny.php

并想补充的语言支持通过把语言编码进入URL这样的:

http://mywebsite/en/index.php

将向:

http://mywebsite/index.php?lang=en

http://mywebsite/en/files.php

将向:

http://mywebsite/files.php?lang=en

我要把更多的语言,例如:

http://mywebsite/ch-ZH/index.php

我想这一工作,只有为文件php和php5扩展。其余的文件应该是相同的,因为它们。

因此,例如,当我会去的地址

http://mywebsite/ch-ZH/index.php

我想我PHP认识到,目前的道路是

http://mywebsite

而不

http://mywebsite/ch-ZH

这是必要的,对我来说因为在我PHP code我涉及在目前的道路,并愿他们的工作,因为他们是现在的工作。

能不能请你写如何准备就文件Apache满足这种标准?

有帮助吗?

解决方案

试试这个:

RewriteEngine on
RewriteRule ^([a-z]{2}(-[A-Z]{2})?)/(.*) $3?lang=$1 [L,QSA]

当前的路径 问题,你必须知道如何相对Uri解决:相对Uri解决 通过的客户 从一个基URI是URI(不文件系统的道路!)当前的资源,如果不声明的。

因此,如果一个文件URI /en/foo/bar 相对路径 ./baz 在这, 客户 解决了这个 /en/foo/baz (因为显然的客户并不知道有关的实际文件系统的路径)。
对于具有 ./baz 决心 /baz, 你必须改变基URI可以做的 HTML元素 BASE.

其他提示

如果你不想使用ModRewrite,你可以把Web文件夹(ln -s . en)符号链接和查询的网址在PHP。

这样的事情应该做的伎俩,

RewriteEngine on
RewriteRule ^(.[^/]+)/(.*).php([5])?$ $2.php$3?lang=$1 [L]

这将只匹配.php然后.php5文件,这样你的文件的其余部分将不会受到影响。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top