从URL中删除应用程序名称

时间:2011-07-01 10:47:57

标签: url jsf url-rewriting friendly-url prettyfaces

我的网站使用JSF,网址似乎是http://mysitename.com/wompower6/faces/home.xhtml

我正在使用prettyfaces,所以如果我在pretty-config.xml中使用以下内容,我可以将名称更改为http://mysitename.com/ wompower6 / home

<url-mapping id="home">
    <pattern value="/home" />
    <view-id value="/faces/home.xhtml" />
</url-mapping>

我的问题是

  1. 如何删除该应用程序 名字wompower6,这样的网址 成为mysitename.com/home?

  2. 在我的web.xml中,我有     <welcome-file>home.xhtml</welcome-file>,     但这似乎不起作用。什么时候     我打字,mysitename.com,它没有     得到映射到home.xhtml。任何线索     这里吗?

1 个答案:

答案 0 :(得分:10)

  

如何删除应用程序名称wompower6,以便网址成为mysitename.com/home?

这是一个webapp <Context>设置,配置取决于所使用的servletcontainer。如果您使用Tomcat,那么基本上有两个选项可以让您的webapp成为root webapp。

  1. 将WAR文件重命名为ROOT.war,Tomcat默认将其部署在上下文根目录上。

  2. path中的<Context>元素的Webapp/META-INF/context.xml属性(或Tomcat/conf/server.xml,取决于您要定义的位置)设置为空字符串。 E.g。

    <Context path="" ...>
    
  3. 其他容器支持类似的构造。详细了解其文档。如果您正在使用Eclipse之类的IDE,那么您也可以在项目属性的 Web项目设置属性中进行设置(右键单击项目并选择属性)。将上下文根值设置为/


      

    在我的web.xml中,我有home.xhtml,但这似乎不起作用。当我键入mysitename.com时,它不会映射到home.xhtml。这里有什么线索吗?

    我认为您正在谈论<welcome-file>设置。这必须指向实际存在的文件,而不是虚拟URL,例如/faces/*。基本上有两种方法可以解决这个问题:

    1. 提供实际存在的 /faces/home.xhtml文件(甚至可以保留为空)。

    2. /faces/*FacesServlet映射的丑陋web.xml网址格式替换为*.xhtml,以便它只会针对XHTML文件的每个请求启用

      <url-pattern>*.xhtml</url-pattern>
      

      这样您就不需要摆弄/faces/*网址格式。