URL 匹配多个位置。如何仅从第一个位置执行指令?
Posted
技术标签:
【中文标题】URL 匹配多个位置。如何仅从第一个位置执行指令?【英文标题】:URL matches several Locations. How to perform instructions from the first Location only? 【发布时间】:2012-01-20 05:48:05 【问题描述】:我们在 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”指令之后停止处理?
我尝试在指令“Location /app/srv”之后添加指令“ProxyPass /app/srv !”,但它没有帮助。
更新: 我不知道 /app 的完整上下文路径是什么。 它可能是 /app/page1、/app/page2 等。 我只知道存在 /app/srv 和 /app/something 上下文路径。 我想对 /app/srv 和 /app/something 上下文路径有不同的说明。
【问题讨论】:
【参考方案1】:你应该可以使用LocationMatch 来获得你想要的东西:
<LocationMatch "^/app/?$" >
应该匹配 /app 和 /app/ 但不匹配 /app/srv。
【讨论】:
实际上我不知道 /app 的完整上下文路径。它可能是/app/page1。我只知道可能有 /app/srv 和 /app/以上是关于URL 匹配多个位置。如何仅从第一个位置执行指令?的主要内容,如果未能解决你的问题,请参考以下文章
如何仅从 google adword api 整合地理位置?