如何在Glassfish v3服务器中集成URL重写?
我想知道这一点的原因是我正在使用Quercus将PHP应用程序部署到我的Glassfish服务器中。
但Quercus依赖Apache服务器中的mod_rewrite
来提供URL重写,这在Glassfish中不可用。
答案 0 :(得分:1)
嗯,你有两个选择:
我猜前者不是一个选项(或者你不会发布这个问题)。关于后者,您可以调整Drupal on Glassfish with clean urls using Url Rewrite Filter中给出的解决方案。基本上,你必须:
WEB-INF/lib
内,urlrewrite.xml
放在WEB-INF
下web.xml
中声明过滤器(请参阅说明书)urlrewrite.xml
文件答案 1 :(得分: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做)一样好。
您将与类过滤器结合使用(有一个google项目存储库,感谢链接文章的作者,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或更高版本中。除非您链接到新的Server 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