1

当 URL 的开头有额外的斜杠时,我对 Apache 的 LocationMatch 指令有一个奇怪的行为。根据 Apache 文档,如果我没看错,这应该可行:

    <LocationMatch ^/appcontext/(a|b)>

            SetHandler weblogic-handler
            WebLogicCluster apphost01:xxxx,apphost02:xxxx
            WLProxySSL ON

    </LocationMatch>

但是,如果我键入以下 URL,它也会被转发到后端主机:

https:// <主机名:端口> ///////appcontext/a/

在 Apache 文档中,它明确指出它应该仅将指令应用于 /appcontext/a/,除非我缺少正则表达式的某些内容或 mod_wl 插件存在问题

http://httpd.apache.org/docs/2.2/mod/core.html

“例如,<LocationMatch ^/abc> 将匹配请求 URL /abc 但不匹配请求 URL //abc”

有没有人有任何建议来实现这一目标?

4

1 回答 1

2

是的,Apache 确实在重写规则中折叠了额外的斜杠。您可以使用THE_REQUEST变量来匹配和删除多余的斜线。将它放在根 .htaccess 中:

RewriteEngine On

RewriteCond %{REQUEST_URI} ^(.*?)//+(.*)$
RewriteRule ^ %1/%2 [R=302,L,NE]
于 2014-09-20T09:24:20.233 回答