【问题标题】:Language(saved in cookie), specific navigation语言(保存在 cookie 中),特定导航
【发布时间】:2013-06-29 13:46:39
【问题描述】:

我不是 Apache/.htaccess 的大师。

对于 URL:base-url/destination/,我需要以保存在 cookie 中的那种语言显示页面。如果我们在 cookie 中没有保存任何语言或 cookie 不存在,我需要显示与浏览器语言相同的页面。

现在,为了实现这一点,我在.htaccess 文件中写了规则:

RewriteCond %{REQUEST_URI} /destination/$ 
RewriteCond %{HTTP_COOKIE} language_uiAAA(\w{3}).*?BBB
RewriteRule ^(.*)\$ $httpbase/%1/destination.html

这会以 cookie 中保存的语言正确显示页面。

但是,我被要求使用SetEnvIf, SetEnvIfNoCase or prefer-language 编写规则。

因此,我用谷歌搜索并写下了这些规则:

SetEnvIf ^Cookie$ "(.+)" HTTP_MY_COOKIE=$1
SetEnvIf HTTP_MY_COOKIE ".+language_uiAAA(.+?)BBB.+" saved_language=$1
SetEnvIf saved_language "^(.+)$" prefer-language=$1

但是,这些规则不起作用。请帮忙。

请提出更好的方法。

【问题讨论】:

  • 你为什么要标记这个“perl”?
  • 我使用 Perl 编写了这个 .htaccess 文件。我想,伟大的 Perl Monks 可能对此有答案!

标签: perl apache .htaccess cookies setenv


【解决方案1】:

瞧!

完成!!

代码如下:

SetEnvIf ^Cookie$ "(.+)" HTTP_MY_COOKIE=$1
SetEnvIf HTTP_MY_COOKIE ".+language_uiAAA(.+?)BBB.+" saved_language=$1
SetEnvIf saved_language "^(\w{2}).+$" prefer-language=$1
SetEnvIf REDIRECT_prefer-language (.+) prefer-language=$1

【讨论】:

    猜你喜欢
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多