2009-01-29 58 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