【问题标题】:single container page referring to multiple urls引用多个 url 的单个容器页面
【发布时间】:2016-04-28 01:01:31
【问题描述】:

在 opencms 中我想访问具有多个 url 的单个容器页面

例如:考虑一个 xyz 容器页面 我想访问具有以下引用的多个 url 的容器页面

    1>localhost:8080/xyz/abc

    2>localhost:8080/xyz/abc?id=xxxabc.

建议我如何实现这一目标。 我正在尝试使用http://tuckey.org/urlrewrite/ 来实现这一目标

也建议我其他选择

【问题讨论】:

  • 你能澄清你的问题吗?如果不是容器页面,第二个 url 会显示什么?如果第一个 url 显示它很好,我不明白为什么附加任何 url 参数不应该工作,或者为什么你需要使用 urlrewrite。
  • 两个 url 将显示相同的容器页面,在这方面资源,即容器页面存在于路径 localhost:8080/xyz。但网址将如上所示。我需要在内部调用资源而不更改浏览器中的 url 我该如何实现这一目标

标签: apache url-rewriting url-routing servlet-filters opencms


【解决方案1】:

我正在使用http://tuckey.org/urlrewrite/ 过滤器来删除 url 中的 opencms/opencms。

正则表达式可用于将多个 url 分配给单个容器页面。 Tuckey过滤器提供urlrewrite.xml,这里指定规则标签

<rule>
        <from>/products/([0-9]+)</from>
        <to>/products/index.jsp?product_id=$1</to>
</rule>

【讨论】:

    【解决方案2】:

    上面提到的 tuckey urlrewrite 应该没问题;您需要将其配置为 FORWARD。

    如果您想直接在 OpenCms JSP 模板中执行此操作,您可以直接在 JSP 中执行转发,如下所示:

    <% if(request.getParameter("id")==null) request.getRequestDispatcher("/xyz/abc?id=xxxabc").forward(request, response);%>
    

    但 JSP 中的此类代码通常不是最佳实践。使用 tukey urlrewrite 可能是一种更简洁的方法。

    【讨论】:

    • 这里我在浏览器中的 url 会像 localhost:8080/xyz/abc,但是资源在 localhost:8080/xyz 所以有问题。我们不能在jsp中使用forward
    • 我不明白你为什么不能在那里使用前锋? localhost:8080/xyz/abc 是否无法通过 jsp 模板提供服务?它是 Java 编码的 servlet 吗?是什么资源?
    • 资源是 opencms 容器页面,它存在于 localhost:8080/xyz。
    • 在这种情况下,您可以在 OpenCms 中的 localhost:8080/xyz/abc 中创建一个新的 jsp 文件,并将上述转发到该 jsp 文件中,指向 localhost:8080/xyz。 (请注意,您在此处提到的 url 与您的原始帖子不同;在原始帖子中,您只有 ?id 参数作为区别,而在这里您有 /xyz/abc 应该导致 /xyz。)。这种情况实际上更简单。我不明白为什么你不能简单地在 /xyz/abc 中创建一个新资源并在其中添加一个转发。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    相关资源
    最近更新 更多