我有很多生产服务器,每台服务器都运行 RMI 应用程序,还有 4 个 Java Web 应用程序,例如:
Server A:
RMI app by JNLP file;
webapp_1 (connected by RMI with local RMI app);
webapp_2 (connected by RMI with local RMI app);
webapp_3 (connected by RMI with local RMI app);
webapp_4 (connected by RMI with local RMI app);
Server B:
...the same..OK
Run Code Online (Sandbox Code Playgroud)
所有用户都在默认上下文(例如“主区域”)中直接通过 8080 端口(直接到 Jetty)访问此服务器,在其中可以通过一些 html 链接访问所有应用程序(RMI 应用程序、webapp_1、webapp_2 等)。
当某些用户访问“/”页面时,例如:
www.foo.com:8080/
main-area/
webapp_1/
webapp_2/
webapp_3/
...
Run Code Online (Sandbox Code Playgroud)
Jetty 返回包含所有应用程序的列表(就像 Apache 的目录列表)。
有什么方法可以阻止它,或者重定向到“主区域”上下文?
不匹配的 webapp 上下文列表"/"将作为以下责任的一部分呈现给您org.eclipse.jetty.server.handler.DefaultHandler
DefaultHandler默认情况下启用,以保持符合 Servlet 规范。
禁用默认处理程序:
如果你只想要一个简单的 404,DefaultHandler 没有提供任何信息,那么只需在${jetty.home}/etc/jetty.xml
<!-- =========================================================== -->
<!-- Set handler Collection Structure -->
<!-- =========================================================== -->
<Set name="handler">
<New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
<Set name="handlers">
<Array type="org.eclipse.jetty.server.Handler">
<Item>
<New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
</Item>
<!-- Disable the DefaultHandler to avoid listing of non-matching contexts
<Item>
<New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
</Item>
-->
</Array>
</Set>
</New>
</Set>
Run Code Online (Sandbox Code Playgroud)
呈现"/"(ROOT)上下文的静态内容:
如果您希望根上下文"/"(ROOT)显示其他内容,请创建一个${jetty.home}/webapps/ROOT目录并在其中放入一个index.html 文件。
[jetty-distribution-7.6.13.v20130916]$ cat webapps/ROOT/index.html
<h1>This is ROOT</h1>
Run Code Online (Sandbox Code Playgroud)
这将部署一个静态内容 Web 应用程序,您可以在其中放置任何您想要的内容,图像、CSS 等。
自动重定向"/"(ROOT)到另一个路径:
${jetty.home}/webapps/ROOT注意:这不会与上面的选项、他的这个选项或那个选项同时起作用,但不能同时起作用。
如果您希望 Jetty"/"自动重定向到另一个 URL,请使用重写处理程序。
确保启用了重写选项,并包含一组重写规则 xml
[jetty-distribution-7.6.13.v20130916]$ grep rewrite start.ini
OPTIONS=Server,jsp,jmx,resources,websocket,ext,rewrite
etc/jetty-rewrite.xml
Run Code Online (Sandbox Code Playgroud)
接下来,您需要定义重写规则......
to的内容${jetty.home}/etc/jetty-rewrite.xml将访问重定向至"/""/test/"
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
"http://www.eclipse.org/jetty/configure.dtd">
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<Get id="oldhandler" name="handler"/>
<Set name="handler">
<New id="Rewrite" class="org.eclipse.jetty.rewrite.handler.RewriteHandler">
<Set name="handler"><Ref id="oldhandler"/></Set>
<Set name="rewriteRequestURI">true</Set>
<Set name="rewritePathInfo">false</Set>
<Set name="originalPathAttribute">requestedPath</Set>
<!-- redirect from the welcome page to a specific page -->
<Call name="addRule">
<Arg>
<New class="org.eclipse.jetty.rewrite.handler.RedirectRegexRule">
<Set name="regex">^/$</Set>
<Set name="replacement">/test/</Set>
</New>
</Arg>
</Call>
</New>
</Set>
</Configure>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4736 次 |
| 最近记录: |