晚上好。
是否有标准的方法将特定网址重定向/重写到另一个网址?
想象一下,用户访问以下视图:http://www.something.com/us/download.xhtml?id=2
我想从上一个视图设置区域设置并重定向到http://www.something.com/download.xhtml?id=2
<page view-id="/us/download.xhtml*" action="<action to set the locale>">
<navigation>
<redirect view-id="#{facesContext.viewRoot.viewId}" />
</navigation>
</page>
嗯,基本上,我想设置语言环境(例如:us),传递给viewId /us/download.xhtml并重定向到没有语言环境引用的viewId。
由于
答案 0 :(得分:1)
使用侦听/*
的过滤器,该过滤器从URL中提取区域设置,并将请求转发到没有区域设置前缀的新URL。你真的不应该重定向,带有语言环境的URL会丢失,这对SEO来说非常糟糕,因为你会在同一个GET URL后面提供多个内容,而GET应该是幂等的。它还会使本地化页面无法被标记。只需转发请求。
答案 1 :(得分:1)
您应该考虑使用PrettyFaces URL-rewriting,除了映射<rewrite match="oldurl" substitute="newurl" />
等漂亮的网址以替换/login
之类的标准网址之外,它们还具有/faces/login.jsf
功能,可以让您完成此操作{1}}。
<url-mapping id="store">
<pattern value="/store/" />
<view-id>/faces/shop/store.jsf</view-id>
</url-mapping>
重写功能的文档:Reference Guide