0

请注意,在我尝试显示代码示例时,我将编辑/编辑对我工作的公司的任何引用,以掩盖他们的身份,而不是隐藏我什至询问的事实。还应该注意的是,我对这个 UrlRewrite/Tukey/dotCMS 游戏非常陌生。

我一直无法重定向到工作。它通过 dotCMS 使用 Tuckey URLRewrite。出于 SEO 的目的,尝试是重定向,但作为转发与代理。

我发现以下作品(“重定向”和“代理”在这里可以互换):

<to type="proxy">http://[redacted]:8080$1$3?%{query-string}</to>

但是,以下会导致 404(“转发”和“直通”在这里可以互换):

<to type="forward">http://[redacted]:8080$1$3?%{query-string}</to>

整个规则如下:

      <!-- EN with Query Params -->
  <rule>
    <from>^/([^/]+)/en/([^/]+)?$</from>
    <to type="proxy" qsappend="true">[redacted]:8080$1$3&amp;%{query-string}</to>
  </rule>
  <!-- EN without Query Params -->
  <rule>
    <from>^(.*)(\/en)(\/.*)?$</from>
    <to type="proxy">[redacted]:8080$1$3?%{query-string}</to>
  </rule>

我最初的一些问题(可能会出现更多问题):

  1. 'proxy'/'redirect' 和 'forward'/'passthrough' 之间是否存在这样的区别,以至于需要实施更专业的努力来实现有意义的重定向?
  2. 我是否遗漏了其他配置文件中可能影响这些重定向尝试结果的内容?

编辑:RegEx 的不同之处在于我试图看看这是否可能是发生断开连接的地方

4

1 回答 1

1

因为 dotCMS 中的 url 并不真正存在,所以转发规则使用的 servlet requestdispatcher 不起作用。您需要设置 dotCMS 将尊重的请求属性 CMS_FILTER_URLMAP_OVERRIDE。在代码中,这看起来像:

    NormalRule forwardRule = new NormalRule();
    forwardRule.setFrom( "^/example/forwardDotCMS/(.*)$" );
    SetAttribute attribute = new SetAttribute();
    attribute.setName("CMS_FILTER_URLMAP_OVERRIDE");
    attribute.setValue("/about-us/index");
    forwardRule.addSetAttribute(attribute);
    addRewriteRule( forwardRule );
于 2017-09-07T23:10:54.130 回答