【问题标题】:Tomcat: not appending trailing "/" when finding a directoryTomcat:查找目录时不附加尾随“/”
【发布时间】:2011-12-12 17:40:27
【问题描述】:

我在 Tomcat 7.0.22(Java 1.6,MacOS Lion)中部署了一个 .war 存档。这场战争被称为“myapp.war”,因此 Tomcat 服务于http://localhost/myapp(在 /webapps/myapp 中扩展了战争)。这是通常的行为

访问与目录对应的 url 时,应附加 "/" 。为了使静态文件(.css、.js..)正常工作,这是必需的,但是在我的网站上,虽然使用 Tomcat 附带的示例站点,这可以工作(例如访问http://127.0.0.1:8080/examples 突然重新映射到http://127.0.0.1:8080/examples/) tomcat 没有添加任何“/”,从而破坏了对静态文件的搜索。当手动调用localhost:8080/myapp/

应该怎么办?请注意,我没有触及任何 Tomcat 设置,我只是在试验直接从 Apache 的 zip 文件中输出的内容!

谢谢

【问题讨论】:

  • 你是说http://localhost/myapp不会生成302重定向到http://localhost/myapp/吗?
  • 是的,完全正确。感谢您的关注
  • 嗨,开心果! .war 文件大致是一个重命名的 zip 文件。考虑到这一点,如果您打开它并检查其中 WEB-INF/web.xml 文件上的 URL 映射,您可以试验它的功能。 This post about trailing slash 提供选项,当您发现那里有什么时,您可以做什么!
  • 我认为您需要发布更多信息,最好是您的 web.xml 和/或 @Servlet 映射。您是否删除了 index.jsp?尝试在不添加任何 servlet 的情况下创建 .war 并查看是否可行(保留 index.jsp 不变)。

标签: tomcat


【解决方案1】:

首先,您应该详细说明您的情况。正如@mico 所说,这是一个解决方案:

<filter>
    <filter-name>Jersey Filter</filter-name>
     <filter-class>com.sun.jersey.spi.container.servlet.ServletContainer</filter-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>your package name(s)</param-value>
        </init-param>
    <init-param>
            <param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name>
            <param-value>.*\.jsp|.*\.css|.*\.png|.*\.js|.*\.gif|.*\.jpg</param-value>
        </init-param>
</filter>

<filter-mapping>
    <filter-name>Jersey Filter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>

 <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

解决思路基于:

将 Jersey ServletContainer 定义为过滤器而不是 servlet

您可以在这里阅读更多内容:http://jersey.576304.n2.nabble.com/Tomcat-trailing-slashes-and-welcome-files-td4684494.html

Here 说:If you have a '/*' mapping, then Tomcat won't redirect

还有一个:你应该看看 tomcat 如何记录你的请求并确定主要问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 2021-02-22
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    相关资源
    最近更新 更多