gpt4 book ai didi

apache - 如何使用带有 URL 参数的 SetEnv

转载 作者:行者123 更新时间:2023-12-04 17:42:11 26 4
gpt4 key购买 nike

我正在尝试在 .htaccess 中实现语言切换,现在唯一剩下的就是处理不支持 cookie 的客户端。为此,我必须设置 prefer-language 当用户单击带有 language 的链接时范围。

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} (?:^|&)language=(en|fr|no)
RewriteRule ^(.*)$ $1? [cookie=language:%1:.example.com,env=language:%1,R]

SetEnv prefer-language $language

问题出在最后一行 - 该值始终设置为空。如果我对它进行硬编码,它会起作用,但如果我尝试引用一个变量,它就不起作用。在此上下文中是否有一些特殊的语法来引用环境变量,或者是否有其他方法可以设置 prefer-language ?

编辑:交叉发布到 Apache users list .

最佳答案

您也可以使用 mod_rewrite 设置环境变量。实际上,您已经这样做了(请参阅 env / E flag )。

我自己不能用 mod_negotiation 测试它,但以下应该可以工作并设置 prefer-language :

RewriteCond %{QUERY_STRING} ^((?:[^&]&)*)language=(en|fr|no)&?([^&].*)?$
RewriteRule ^ %{REQUEST_URI}?%1%3 [L,CO=language:%2,R]
RewriteCond %{HTTP_COOKIE} (^|[,\s])language=([^\s,;]+)
RewriteRule ^ - [L,E=prefer-language:%2]
SetEnvIf REDIRECT_prefer-language (.+) prefer-language=$1

但是,如果您将语言标识符放入 URL 路径中,如 /en/… 会容易得多。 :
SetEnvIf Request_URI ^/(en|fr|no)/ prefer-language=$1
SetEnvIf REDIRECT_prefer-language (.+) prefer-language=$1

不知道你是否需要额外的/秒 SetEnvIf多变的。

关于apache - 如何使用带有 URL 参数的 SetEnv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1280220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com