我已在Websphere应用服务器上部署了我的应用程序,我的appserver和webserver相互通信。
我已经使用/ toms上下文根部署了一个应用程序,并使用/ tomsmt上下文根部署了其他应用程序。现在我在httpd.conf中更改了重写规则以运行该应用程序。但是应用程序在/ toms context root上运行,但是当我运行由/ tomsmt context root部署的应用程序时,我就会收到错误。
有人可以帮忙。
我的重写规则如下
RewriteRule ^ /(toms | tomsmt)$(toms | tomsmt)/backend/index.cfm [R]
现在URL / toms / backend / index.cfm有效但URL / tomsmt / backend / index.cfm不起作用
答案 0 :(得分:0)
无论你有什么必须到达你的后端,你没有指明并且可能会影响到它。
您需要引用用括号捕获的值,而不是尝试在目标URL中捕获它
如:
RewriteRule ^/(toms |tomsmt)$ /$1/backend/index.cfm [R]
$ 1引用捕获的组:(toms OR tomsmt)并将使用客户端请求的任何值,并使用它来进行重定向。
还有另一种方法,使用RedirectMatch:
RedirectMatch ^/(toms |tomsmt)$ /$1/backend/index.cfm
的图片的标题说明:强>
在你的RewriteRule中,你没有使用标志L,考虑到重写不会停止,如果还有进一步的重写,请注意重写循环。
如上例所示,我更喜欢使用mod_alias Redirect / RedirectMatch进行简单的外部重定向,它们可以完成工作并且对于这种简单的重定向并不过分。除非你真的需要,否则不要使用mod_rewrite是明智的。