我正在尝试在 apache 服务器上的 VHost 中设置语言环境变量,以便请求的路径将定义使用的语言环境。要求是使用更“消费者友好”的语言环境代码,而不是 ISO 格式——但我们需要将它们映射到框架中支持的 ISO 格式。
例如:
http://site.com/uk/path/to/page.html
将环境变量设置为REQ_LOCALE=en_GB
如果发现意外的语言环境,我们希望将其默认为美国英语。
我目前正在尝试以SetEnvIfNoCase
这种方式使用 apache 指令:
SetEnvIfNoCase Request_URI ^/eu REQ_LOCALE=en_US
SetEnvIfNoCase Request_URI ^/es REQ_LOCALE=es_ES
SetEnvIfNoCase Request_URI ^/de REQ_LOCALE=de_DE
SetEnvIfNoCase Request_URI ^/fr REQ_LOCALE=fr_FR
SetEnvIfNoCase Request_URI ^/it REQ_LOCALE=it_IT
SetEnvIfNoCase Request_URI ^/uk REQ_LOCALE=en_GB
SetEnvIf REQ_LOCALE ^$ REQ_LOCALE=en_US
由于某种原因,只有最后一个指令被调用。但是,如果我^/
从正则表达式中删除,de
则始终调用该正则表达式。
所以..我现在有点不知所措:)
任何人都可以帮忙吗?(注意:我已经尝试使用REQUEST_URI
以及Request_URI
- 结果没有变化)
编辑 我认为以下重写规则可能导致我的问题:
RewriteRule .* index.php [L]
查看重写日志 - 似乎这导致了重定向并且环境变量没有被传递。所以...