我已经部署了一个 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,这尤其有用。