Redirect Apache/IHS HTTP服务器:如何启用区分大小写的上下文uri
我有一个multi-tenent应用程序,该应用程序根据已加载tenent的首选项创建上下文uri。例如,如果赞助商选择abcd作为上下文uri,则URL将如下所示: hxxxx://host.domain/abcd/login 有一个Liberty服务器集群,它在后端运行,将满足特定tenent的请求 问题是: 我们的应用程序对上下文url不区分大小写,因此以下任何url都应有效: hxxxx://host.domain/abcd/login hxxxx://host.domain/ABCD/login hxxxx://host.domain/Abcd/login 等等 当我想要根据上下文uri将请求从IHS IBM HTTP服务器转发到相关tenent的集群时。使用mod_proxy,我可以执行以下操作: ProxyPass/abcdhxxxx://hostname.domain:port/abcd ProxyPassReverse/abcdhxxxx://hostname.domain:port/abcd [我已将实际值替换为主机名、域、端口] 如果我这样做,我必须提供字符串abcd的所有组合,以便将它们转发到正确的群集,例如: ProxyPass/Abcdhxxxx://hostname.domain:port/Abcd ProxyPassReverse/Abcdhxxxx://hostname.domain:port/Abcd ProxyPass/aBcdhxxxx://hostname.domain:port/aBcd ProxyPassReverse/aBcdhxxxx://hostname.domain:port/aBcd 等等 在我看来,这似乎是一个普遍的问题,并期待一些默认的解决方案相同 解决方案1: 拼写检查 [没有为我工作] 我尝试启用mod_speling.so,并将其添加到httpd.conf中。 解决方案2:使用“重写”,我添加了以下内容: RewriteMap lc int:tolower RewriteRule.*?[A-Z]+.${lc:$1}[R] 参考,http://httpd.apache.org/docs/current/rewrite/rewritemap.htmlint 这将hostname.domain:port/之后的所有内容转换为小写。这不是我想要的,我只是想更改上下文uri字符串abcd的大小写。 我在下面添加对我有效的解决方案。如果您有更好的解决方案,请更新此问题 ================================================================================== 对我有效的解决方案是以下重写: 重新启动发动机 重写映射lc int:tolower 重写规则 .*.[A-Z]+.\/[^/]+${lc:$1}$2[R] 此解决方案将abcd的任何混合大小写转换为小写abcd。之后,我可以在/abcd上执行代理传递。ProxyPass的示例已经提供 ================================================================================== 如果你有更好的解决办法,请回答这个问题 谢谢, 维沙伦杜 PS:1在所有URL中,hxxxx指的是https,Stackoverflow是 不允许我将其作为https提供。2堆栈溢出不可用 允许我回答我的问题,在 问题Redirect Apache/IHS HTTP服务器:如何启用区分大小写的上下文uri,redirect,url-rewriting,mod-proxy,case-insensitive,Redirect,Url Rewriting,Mod Proxy,Case Insensitive,我有一个multi-tenent应用程序,该应用程序根据已加载tenent的首选项创建上下文uri。例如,如果赞助商选择abcd作为上下文uri,则URL将如下所示: hxxxx://host.domain/abcd/login 有一个Liberty服务器集群,它在后端运行,将满足特定tenent的请求 问题是: 我们的应用程序对上下文url不区分大小写,因此以下任何url都应有效: hxxxx://host.domain/abcd/login hxxxx://host.domain/ABCD