2009-01-29 76 views

回答

1

要在应用程序中重写URL,可以使用UrlRewrite。然而,在这种情况下,它看起来像你想删除您的Web应用程序的上下文路径,在这种情况下,你有两个选择:

  1. 应用程序部署到上下文路径/(如何为特定应用服务器)
  2. 在端口80上运行Apache,并使用mod_proxy将某些URL代理到在不同端口上运行的应用程序服务器,使用类似下面的配置。

Apache的配置:

<Proxy http://localhost:8080/*> 
    Order Allow,Deny 
    Allow From All 
</Proxy> 

ProxyPreserveHost On 
ProxyPass/http://localhost:8080/WebApplication/ 
ProxyPassReverse/http://localhost:8080/WebApplication/ 
+0

+1的UrlRewrite链接的URL进行调查。我一直在寻找那样的东西! – 2009-11-19 15:52:00

1

注意,/面/是由于在web.xml的映射。这是JSF的标准映射,但您也可以使用扩展映射 - 即URL末尾的.faces

例如,在应用程序我这里,这是在web.xml文件:

<servlet-mapping> 
    <servlet-name>Persistent Faces Servlet</servlet-name> 
    <url-pattern>*.faces</url-pattern> 
</servlet-mapping> 

这是使用ICEfaces的,但它会随着RichFaces的你相似。你的可能看起来像这样:<url-pattern>/faces/*</url-pattern>。如果你改变它具有*.faces如上述,您的最终网址看起来会像这样:

http://localhost/WebApplication/folder1/page.faces

如果您使用的是与答案相结合,彼得希尔顿给有关部署为根Web应用程序,您的最终URL会是这个样子:

http://localhost/folder1/page.faces

这几乎正是你想要的。

1

PrettyFaces让你重写你的网址。 如果您更喜欢更轻量级的东西,请扩展NavigationHandler并覆盖 handleNavigation,例如通过调用context.getExternalContext()。redirect()

-2

您还可以从脸上更改文件夹名称,以在jsp例如像这样:

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>/jsp/*</url-pattern> 
</servlet-mapping> 
<session-config> 
    <session-timeout> 
     30 
    </session-timeout> 
</session-config> 
<welcome-file-list> 
    <welcome-file>jsp/index.jsp</welcome-file> 
</welcome-file-list> 

然后你的URL将是这样的:

http://localhost/WebApplication/jsp/folder1/page.jsp 

如果将应用程序部署到应用程序服务器的上下文路径中,它将如下所示:

http://localhost/jsp/folder1/page.jsp 

这将是现在很难找出你使用JSF的是lamers ;-)但黑客可以通过自己的浏览器指向这样http://localhost/folder1/page.jsp