如何翻译/en/file.php 要文件。php?lang=en在就是Apache
-
22-08-2019 - |
题
我写多语种网站。我有几个服务器上的文件,如:
/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文件,这样你的文件的其余部分将不会受到影响。
不隶属于 StackOverflow