不带应用程序名称的 Apache Tomcat URL

不带应用程序名称的 Apache Tomcat URL

我已经部署了一个 tomcat 应用程序并对 web 服务器进行了必要的配置(用于消除端口等)。

我可以通过以下方式访问应用程序

http://www.domain.com/appname/

但我想访问该应用程序,即使用户输入

http://www.domain.com(仅 url,无应用程序名称)
http://domain.com(仅域名)

我对 Apache 配置还不熟悉,任何指示或示例都会有很大帮助。

我认为“代理通行证”可以解决问题......
我需要寻找重写规则还是其他任何规则?

答案1

index.html我通过将文件放入webapps/ROOT包含正常 HTML 重定向的文件夹来解决这个问题:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>appname</title>
    <meta http-equiv="REFRESH" content="0;url=./appname/"></HEAD>
<body>
</body>
</html>

答案2

您可以将应用程序部署为 Tomcat 中的 ROOT webapp,以消除您仍拥有的前缀。只需将您的应用程序解压缩到$CATALINA_HOME/webapps/ROOT文件夹,或者 - 如果部署为压缩的 .war 文件 - 只需在将文件ROOT.war放入webapps文件夹时将其重命名即可。然后它将在没有应用程序前缀的情况下可用。

关于您的域名是否带有“www”部分:如果您在 Tomcat 前面使用 Apache,那么mod_rewrite参考文档有一个很好的描述规范主机名的部分

答案3

对于那些可能需要解决方案的人,我只需将以下内容添加到 httpd.conf 中,它可以很好地解决我的问题:

RewriteEngine on  
RewriteCond %{HTTP_HOST} !^www\. [NC]  
RewriteCond %{HTTP_HOST} !^$  
RewriteRule ^/?(.*) http://www.%[HTTP_HOST}/$1 [L,R,NE]  

ProxyPass         /appname  http://localhost:8080/appname  
ProxyPassReverse  /recsconnect  http:...  
ProxyPass / http...  
ProxyPassReverse / http....  

我之前忘了添加最后两行。

答案4

另一个值得考虑的选择是UrlRewrite过滤器. 如果您已经了解 mod_rewrite 但不想使用 apache,这尤其有用。

相关内容