【发布时间】:2014-11-12 22:10:19
【问题描述】:
当 URL 的开头有多余的斜杠时,我在 Apache 的 LocationMatch 指令中出现了一种奇怪的行为。根据 Apache 文档,如果我没看错的话,这应该可以:
<LocationMatch ^/appcontext/(a|b)>
SetHandler weblogic-handler
WebLogicCluster apphost01:xxxx,apphost02:xxxx
WLProxySSL ON
</LocationMatch>
但是,如果我键入以下 URL,它也会被转发到后端主机:
https://
在 Apache 文档中,它明确指出它应该仅将指令应用于 /appcontext/a/,除非我缺少正则表达式的某些内容或 mod_wl 插件存在问题
http://httpd.apache.org/docs/2.2/mod/core.html
"例如,
有没有人有任何建议来实现这一点?
【问题讨论】:
-
^/appcontext/(a|b)也将匹配///appcontext/a/(/之前的任何 # ofappcontext),因为这些被认为是多余的斜杠。它会导致什么问题? -
我可能是错的,但这似乎不是一个有效的 URI。
//之后的部分,即////////appcontext/a/,不是有效的权限组件,也不是有效的路径(因为它以//开头并且不遵循权限)。 tools.ietf.org/html/rfc3986#section-3 -
我们有一个带有 /appcontext/a 的 Location 指令的 cookie,浏览器不认为斜杠是多余的(它不会发送 ///appcontext/a/ 的 cookie 仅用于 / appcontext/a/)
-
那么最好使用重写规则将
////app重定向到/app。 -
要对客户端浏览器产生任何影响,您的意思是重定向规则是否正确? AFAIK 重写规则仍会将不正确的 URL 暴露给浏览器,并且 cookie 将不起作用。但是,如果正则表达式不适用于 LocationMatch,它是否适用于 RedirectMatch?
标签: regex apache weblogic slash locationmatch