【问题标题】:Resin welcome-file doesn't load servlet!Resin 欢迎文件不加载 servlet!
【发布时间】:2009-05-27 02:38:58
【问题描述】:

Resin (3.0.27) 是否可以将欢迎文件映射到 Servlet?

我在 Caucho 文档中找不到任何说明不支持此功能的内容。非常感谢您的帮助。

<servlet-mapping>
    <servlet-name>td</servlet-name>
    <url-pattern>*.htm</url-pattern>
</servlet-mapping>

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

编辑:如果从我的帖子中看不出来,则上述内容不起作用。 :)

编辑:如果我将 index.htm 放在文件系统中,则 servlet 映射有效。就好像Resin找不到物理文件就终止请求一样。

【问题讨论】:

  • 一个愚蠢的问题,但你确定索引文件是 index.htm 而不是 index.html?我确定你已经检查过了,但想检查一下以防万一。
  • 不用担心。是的,它是一个 .htm 文件。我正在使用 Spring MVC Disaptcher Servlet 来响应对 .htm 文件的所有请求。 index.htm 实际上不是磁盘上的文件,而只是映射到控制器的 URL。不幸的是,如果 URL 是从欢迎文件生成的,就好像 Resin 忽略了 servlet 映射。

标签: resin


【解决方案1】:

由于 caucho_module 加载其配置的方式,它很可能会忽略欢迎文件。欢迎文件映射由 servlet 容器完成(例如,在您的情况下为 Resin)。但是 caucho_module 似乎正在寻找一个存在的显式映射,以帮助它决定什么去和什么不去 Resin,以及 Apache 将尝试为自己提供什么。

也许这是 caucho_module 中的一个错误,它不考虑欢迎文件处理?

如果这是真的,那么您可以解决此问题的一种方法是使用 Apache 的 mod_rewrite 来处理您希望映射到“欢迎文件”的 URL。确实,尝试这样做很可能会证明这一点。例如,类似:

RewriteEngine on
RewriteRule ^/your/url/$  /your/url/index.htm [R=permanent,L]

您可能想尝试以斜线结尾和不以斜线结尾的 URL 版本……我对 mod_rewrite 不够熟悉,不知道这是否会有所作为。无论如何,这将告诉 Apache 告诉客户端重定向(重新加载页面到)以您的欢迎页面结尾的 URL。如果这种事情解决了问题,那么 IMO 这是 cacho_module 中的一个错误。

作为测试要尝试的另一件事是直接进入 Resin(通常在端口 8888 上)绕过 Apache HTTP 以查看是否正确处理直接进入 Resin 的欢迎页面。

【讨论】:

  • 是的,我已经尝试了重写规则,它确实有效。不幸的是,有时索引文件是 .jsp 而不是 .htm,所以我的重写规则列表可能会变得很长。
  • 好了,现在我们知道问题所在了。下一步是找出 caucho_module 中是否存在已确认的错误或解决方法来处理此类问题。
  • 我认为这是 Resin 的错误。我会尝试联系 Caucho。
  • 在您使用的虚拟主机的 Apache HTTP 配置文件中是否有“DirectoryIndex index.htm”指令?如果没有,这有什么不同吗?
  • 我在那儿。不会改变任何东西。
猜你喜欢
  • 2013-06-11
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-07
  • 1970-01-01
  • 2017-02-11
相关资源
最近更新 更多