如何重写 URL

Posted

技术标签:

【中文标题】如何重写 URL【英文标题】:How to rewrite the URL 【发布时间】:2011-03-04 10:10:07 【问题描述】:

我有一个使用 Seam 2.2、Richfaces 3.3、JBoss 5.1 构建的小型应用程序。

大部分页面导航将请求参数添加到目标URL。我想隐藏对正在使用应用程序的客户隐藏的参数(例如,我希望 URL 类似于“http://localhost:8080/books/Book.seam”。参数(userId、orderId 和 cmId)当前映射到后端 bean通过 Book.page.xml。

如何防止请求参数显示在浏览器 URL 中,因为它还允许客户操纵 URL。

我们确实查看了 seam URL 重写功能,它谈到了以 REST 格式操作主键 id,不知道如何以优雅的方式完成像上述用例这样更复杂的事情。

【问题讨论】:

你疯了,使用了如此糟糕的臃肿技术。 如果有帮助,请检查此jtict.com/blog/seam-form-url-rewriting @hendry 我猜你对richfaces 和seam 有很多经验,可以称它们为“非常臃肿”? 【参考方案1】:

PrettyFaces 为 JSF 提供 url 重写。

但是,您不能“隐藏”GET 参数。除非您将它们设为 POST 参数。但是默认情况下所有提交都是在 JSF 中的 POST。

【讨论】:

我们尝试过漂亮的面孔,tuckey url 重写过滤器,但无法让它在我们的环境中工作。我们使用了 seam 中的 web:rewrite-filter 并且在生成的 URL 方面取得了相当大的成功,但是当它位于由 EntityQuery 生成的列表页面上时,它变得非常复杂,其中您有排序参数,如 dir、logic、sort除了用于运行查询本身的查询参数之外,在我们的例子中这些参数很多。 下一条评论继续 每当我们从通过 EntityQuery 生成的对象列表中加载特定对象时,我们都会传递页面参数(即,我们在 as:link 上有许多 f:param 声明指向实体本身,以及这些页面参数在 URL 中传递。您提到将其作为 POST 参数,我该怎么做? PrettyFaces 应该允许您将 GET ?parameters 转换为 /path/parameters。它非常擅长这一点。或者你可以试试ocpsoft.com/rewrite

以上是关于如何重写 URL的主要内容,如果未能解决你的问题,请参考以下文章

IIS5.1设置URL重写?

关于IIS7 URL重写的问题

web前端如何重写URL地址

如何配置iis rewrite模块的url重写规则

如何找到当前 url 被重写?

如何在 PHP 中进行 URL 重写?