我正在使用GETTEXT实现整个PHP站点的翻译。我有一堆PHP文件(每个部分一个),我通过GET变量控制语言:
http://www.domain.com/section.php?lang=en [for english]
我的第一个目标是以一种干净利落的方式,例如:
http://www.domain.com/en/section
我设法通过.htcaccess做到了(不太好),但后来我提出了两个问题:
我希望每个页面都能通过查看HTTP_REFERER来识别所使用的语言(可能吗?),所以我不需要依赖SESSION和COOKIES,以防有人让他们关掉。我想另一个选择是回应每个href前面的当前语言/ en / ...
如何告诉htcaccess同时重写:
此:
http://www.domain.com/XX/path/to/whatever/?var1=a&var2=b
要:
http://www.domain.com/path/to/whatever.php?lang=en&var1=a&var2=b
而且:
http://www.domain.com/XX/assets/js/functions.js
要:
http://www.domain.com/assets/js/functions.js?lang=en
或换句话说:
如果路径在域名后面有一个2-char文件夹并且没有扩展名,请删除2-char文件夹,将.php附加到路径的末尾,然后? lang = XX,然后是进来的GET变量。也许它可以先检查它是否作为一个带有自己的index.php的文件夹存在?
如果路径在域名后面有一个2-char文件夹并且有扩展名,请执行相同操作,但保留原始扩展名
我知道这是一个很长的问题要问,但我真的迷失在这里......我读了很多关于它的内容,但是REGEX / htaccess对我来说太难了......我&#39 ;感谢任何帮助
答案 0 :(得分:0)
RewriteEngine On
RewriteBase /
RewriteRule ^([a-z]{2})/(.*)$ $2?lang=$1 [QSA,L]
对于无扩展部分,我只需将whatever.php
放在名为whatever
的文件夹中,并将php重命名为index.php
。比使用htaccess更容易