我有一个系统环境变量,我想在mod_rewrite
中使用它。在我的情况下,LOC
设置为0
。
如果8080
为LOC
,我想将请求路由到端口0
,否则路由到9001
。以下重写条件不起作用:
RewriteCond %{ENV:LOC} ^0
RewriteRule ^/app/ui(.*) http://app:8080/ui$1 [QSA,P,L]
RewriteRule ^/app/ui(.*) http://app:9001/ui$1 [QSA,P,L]
但是,由于每个请求都路由到端口9001
,因此该条件永远不会匹配。
实现这一目标的更好方法是什么?
答案 0 :(得分:0)
有两种影响Apache的环境变量 HTTP服务器。
首先,有一些环境变量由 底层操作系统。这些是在服务器启动之前设置的。
我假设LOC是OS的环境变量。如果你设置了这个,在启动web服务器之后,apache对它一无所知。
这解释了为什么条件永远不匹配。
答案 1 :(得分:0)
RewriteCond "%{ENV:LOC}" "=0"
RewriteRule ^/app/ui(.*) http://app:8080/ui$1 [QSA,P,L]
RewriteCond "%{ENV:LOC}" "!=0"
RewriteRule ^/app/ui(.*) http://app:9001/ui$1 [QSA,P,L]
或
RewriteCond "%{ENV:LOC}" "=0"
RewriteRule ^/app/ui(.*) http://app:8080/ui$1 [QSA,P,L]
RewriteCond "%{ENV:LOC}" "=1"
RewriteRule ^/app/ui(.*) http://app:9001/ui$1 [QSA,P,L]