如何解决tomcat子文件夹重定向问题

时间:2019-07-01 10:32:40

标签: apache tomcat redirect

我正在尝试将旧版Webapp迁移到较新的服务器。此Webapp需要通过以下URI访问: http://testing.mydomain.com/myapp/MyappServer(不带斜杠)

当请求包含斜杠时,它可以按预期工作。但是,如果没有此斜杠,则int的请求-该应用程序很常见。

测试tomcat重定向,似乎tomcat正在向URL添加(不需要的)重定向。

#with trailing slash (works)
$ curl -I localhost:8080/myapp/myapp-testing/myapp/MyappServer/
HTTP/1.1 200
Accept-Ranges: bytes
ETag: W/"7-1561971017163"
Last-Modified: Mon, 01 Jul 2019 08:50:17 GMT
Content-Type: text/html
Content-Length: 7
Date: Mon, 01 Jul 2019 08:55:09 GMT
Server:

#without trailing slash (issue) 
$ curl -I localhost:8080/myapp/myapp-testing/myapp/MyappServer
HTTP/1.1 302
Location: /myapp/myapp-testing/myapp/MyappServer/
Transfer-Encoding: chunked
Date: Mon, 01 Jul 2019 08:55:14 GMT
Server

Congfigs:

server.xml

<Host name="myapp-test"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Alias>testing.mydomain.com</Alias>

        <Valve className="org.apache.catalina.valves.RemoteIpValve"  remoteIpHeader="x-forwarded-for"  />

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="testing.mydomain.com_access" suffix=".txt"
               pattern="%t %{x-forwarded-for}i %a %m %U %r %b %s %D %I %{X-AUSERNAME}o %{User-Agent}i" resolveHosts="false" />
      </Host>

apache虚拟主机:

<VirtualHost *:80>
        ServerName testing.myapp.com

        ProxyRequests Off
        ProxyPreserveHost On

    <Proxy *>
          Order deny,allow
          Allow from all
    </Proxy>

ProxyPass /  http://localhost:8080/myapp/myapp-testing/
ProxyPassReverse / http://localhost:8080/myapp/myapp-testing/

</VirtualHost>

预期的行为是成功的重定向,带有/不带斜杠。

实际结果是: http://testing.mydomain.com/myapp/MyappServer 重定向到 http://testing.mydomain.com/myapp/myapp-testing/myapp/MyappServer,由于tomcat内部重定向而导致404错误。

我想知道我的tomcat配置和重定向规则是否缺少某些内容。 Apache URL重写是摆脱这种情况的最佳方法吗?如果是这样,您是否有一个好的摘要?

还是有更好的方法?想禁用tomcat重定向吗?

非常感谢您的帮助。

最诚挚的问候

马克

0 个答案:

没有答案