问题更多是关于理解最佳实践。我有一个带有多个视图的简单 Spring MVC Web 应用程序。在本地开发\本地tomcat时,从IDE启动服务器时,页面之间的过渡正常(地址如localhost:8080/index、localhost:8080/welcome等),但是部署到VDS时,遇到了这样的情况转换现在发生在 localhost:8080/APP_NAME/index、localhost:8080/APP_NAME/welcome 等。因此,有两个问题:
- Apache 和 Tomcat 正在服务器上运行,在 .htaccess 中使用重定向我创建了一个从 site.ru 到 site.ru:8080/index 的入口点。这是对的吗?
- 如何确保在服务器上页面之间的转换遵循与本地部署相同的路径,而不包括应用程序名称?google了几种方法,比如用自己的应用程序替换服务器上的根应用程序或编辑server.xml文件,但我认为这并不完全正确。是否可以使用 Maven 或部署描述符来实现这一点?如果是这样,我将不胜感激。
回答第二个问题。由于 Tomcat 文档一开始就声明强烈不建议将项目直接放在 server.xml 文件中,因此我在 /conf/Catalina/localhost/ 中添加了一个名为 ROOT.xml 的文件,此 ROOT.xml 将覆盖默认值此引擎和主机(Catalina 和 localhost)的根上下文 tomcat 安装的设置。
在 ROOT.xml 文件中输入以下内容:
这是应用程序的名称。
不要忘记更改文件的权限,以便 Tomcat 可以读取它。我刚换了所有权。
该应用程序现在是默认应用程序,将显示在http://localhost:8080
但是,有一个副作用 - 应用程序将被下载两次。一次用于 localhost:8080,一次用于 localhost:8080/yourApp。要解决此问题,您可以将应用程序放在 /webapps 之外,并在 ROOT.xml docBase 标记中使用相对或绝对路径。类似的东西;
一切正常。