URL匹配多个位置。如何仅从第一个位置执行说明?

时间:2011-12-14 12:46:09

标签: apache apache2 httpd.conf

我们在Apache httpd.conf中有以下配置:

<Location /app/srv>
   ...   
   ProxyPass http://localhost:123/srv
   ProxyPassReverse http://localhost:123/srv

   Header edit Set-Cookie JSESSIONID srv.${ENV}.JSESSIONID
   RequestHeader edit Cookie srv.${ENV}.JSESSIONID JSESSIONID
</Location>

#Following instructions do not work!
#ProxyPass /app/srv !
#ProxyPass /app !

<Location /app >
   ...
   ProxyPass http://localhost:123/app
   ProxyPassReverse http://localhost:123/app

   Header edit Set-Cookie JSESSIONID app.${ENV}.JSESSIONID
   RequestHeader edit Cookie app.${ENV}.JSESSIONID JSESSIONID
</Location>

据我所知,如果请求上下文路径/ app / srv coockie,JSESSIONID将被编辑两次。
结果将重命名为 srv。$ {ENV} .app。$ {ENV} .JSESSIONID

但我需要将coockie重命名为 srv。$ {ENV} .JSESSIONID

我可以在我们的测试盒上看到这种行为 是否可以在“Location / app / srv”指令​​后停止处理?

我尝试在指令“位置/ app / srv ”之后添加指令“ ProxyPass / app / srv!”,但它没有帮助。

更新
我不知道/ app的完整上下文路径是什么 它可以是/ app / page1,/ app / page2等。
我只知道存在/ app / srv和/ app / something上下文路径 我想对/ app / srv和/ app / something上下文路径有不同的说明。

1 个答案:

答案 0 :(得分:1)

您应该可以使用LocationMatch来获得您想要的内容:

<LocationMatch "^/app/?$" >

那应该匹配/ app和/ app /但不匹配/ app / srv。