htaccess - 使用{HTTP_REFERER}切片使用重写规则

时间:2011-12-05 13:29:34

标签: regex .htaccess

我正在使用GETTEXT实现整个PHP站点的翻译。我有一堆PHP文件(每个部分一个),我通过GET变量控制语言:

http://www.domain.com/section.php?lang=en [for english]

我的第一个目标是以一种干净利落的方式,例如:

http://www.domain.com/en/section

我设法通过.htcaccess做到了(不太好),但后来我提出了两个问题:

  1. 我希望每个页面都能通过查看HTTP_REFERER来识别所使用的语言(可能吗?),所以我不需要依赖SESSION和COOKIES,以防有人让他们关掉。我想另一个选择是回应每个href前面的当前语言/ en / ...

  2. 如何告诉htcaccess同时重写:

  3. 此:

    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 ;感谢任何帮助

1 个答案:

答案 0 :(得分:0)

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

对于无扩展部分,我只需将whatever.php放在名为whatever的文件夹中,并将php重命名为index.php。比使用htaccess更容易