Webserver httpd.conf文件重写不起作用

时间:2016-08-05 02:23:52

标签: mod-rewrite webserver httpd.conf

我已在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不起作用

1 个答案:

答案 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是明智的。