我正在尝试将旧版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重定向吗?
非常感谢您的帮助。
最诚挚的问候
马克