我正在编写多语言网站。我在服务器上有几个文件,例如:
/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 代码中,我与当前路径相关,并希望它们像现在一样工作。
您能否写下如何在 Apache 上准备 htaccess 文件以满足此条件?
最佳答案
试试这个:
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 element BASE
来完成。 .
关于php - 如何在 htaccess Apache 中将/en/file.php 翻译成 file.php?lang=en,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/536483/