1

如何在 Glassfish v3 服务器中集成 URL 重写?

我想知道这一点的原因是我正在使用 Quercus 将 PHP 应用程序部署到我的 Glassfish 服务器中。

但是 Quercus 依赖于mod_rewriteApache 服务器来提供 URL 重写,而这在 Glassfish 中不可用。

4

2 回答 2

1

好吧,你有两个选择:

  • 要么在你的 GlassFish 实例前面使用 Apache 并使用 mod_rewrite
  • 或使用 Tuckey 的Url Rewrite Filter

我想前者不是一个选择(或者你不会发布这个问题)。关于后者,您可以使用 Url Rewrite Filter 调整 Drupal on Glassfish 中给出的解决方案,并使用干净的 url。基本上,您必须:

  • 获取 Quercus 的战争并打开它
  • 下载过滤器并在 Quercus 中解压(这将把过滤器罐放在里面WEB-INF/liburlrewrite.xml下面WEB-INF
  • 在中声明过滤器web.xml(参见说明)
  • 将您的重写规则“移植”到urlrewrite.xml文件中
  • 重新打包并部署战争(或将其部署为爆炸档案)
于 2010-07-09T22:56:30.597 回答
0

几个星期以来,我一直在寻找这个问题的答案。遵循 JBoss 的这些说明:http: //tapomay.blogspot.com/2011/11/clean-urls-with-drupal-urlrewritefilter.html

他链接到一篇为 Tomcat 完成此操作的文章:http ://www.brianshowalter.com/blog/running_drupal_on_quercus

简而言之,只有当系统上不存在所请求的文件或目录时,您才想重写 URL。这就是为什么仅仅 UrlRewriteFilter 是不够的。您必须向 UrlRewriteFilter 添加一个类过滤器来检查这一点。

我链接到的说明使用旧版本的 UrlRewriteFilter (3.2.0),它可能与新版本一样好用(我用 3.2.0 做的)。

您将与类过滤器一起使用它(有一个谷歌项目存储库,感谢链接文章的作者,位于https://code.google.com/p/drupalrewritefilter/

说明说要将文件添加到 Eclipse,但我使用了 Netbeans(只需使用现有源启动一个新项目)。

您需要将 servlet.api.jar(系统上的某个位置,如果您安装了 J2EE)和您正在使用的 UrleRewriteFilter.jar 文件添加到构建的类路径中。

将生成的drupalrewritefilter.jar文件和UrlRewriteFilter.jar您正在使用的文件放在 WEB-INF/lib

你的 WEB-INF/web.xml 应该有这个过滤器指令:

<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    <init-param>
        <param-name>logLevel</param-name>
        <param-value>TRACE</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

使用这个而不是 UrlRewriteFilter 网站说要使用的那个。

注意: Quercus 安装在 Servlet API 2.2 或 2.3 的开头包含一个 DOCTYPE 标记。但该<filter>标签在 Servlet API 2.4 或更高版本中。除非您链接到新的服务器 API DTD 或(这就是我所做的)只是一起删除 DOCTYPE 标记,否则您的应用程序将出错。

然后你应该有一个 WEB-INF/urlwrite.xml :

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
        "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">

<urlrewrite>
    <class-rule class="com.brianshowalter.drupalrewrite.DrupalRule" />
</urlrewrite>

重新加载您的 drupal 应用程序,然后启用干净的 URLS

于 2012-09-02T13:08:14.410 回答