'redirect' 和 'proxy' 与 Tuckey URLRewrite 中的 'forward' 和 'passthrough'
'redirect' and 'proxy' vs 'forward' and 'passthrough' in Tuckey URLRewrite
请注意,在我尝试显示代码示例时,我会 redact/edit 删除任何对我工作的公司的引用,以掩盖他们的身份,而不是隐藏我什至在问的事实。还应该注意的是,我对这个 UrlRewrite/Tuckey/dotCMS.
的游戏很陌生
我一直无法使重定向正常工作。它通过 dotCMS 使用 Tuckey URLRewrite。尝试是为了 SEO 目的重定向,但作为转发而不是代理。
我发现以下作品('redirect' 和 'proxy' 在这里可以互换):
<to type="proxy">http://[redacted]:8080?%{query-string}</to>
但是,以下会导致 404('forward' 和 'passthrough' 在这里可以互换):
<to type="forward">http://[redacted]:8080?%{query-string}</to>
规则全文如下:
<!-- EN with Query Params -->
<rule>
<from>^/([^/]+)/en/([^/]+)?$</from>
<to type="proxy" qsappend="true">[redacted]:8080&%{query-string}</to>
</rule>
<!-- EN without Query Params -->
<rule>
<from>^(.*)(\/en)(\/.*)?$</from>
<to type="proxy">[redacted]:8080?%{query-string}</to>
</rule>
我最初的一些问题(可能会出现更多问题):
- 'proxy'/'redirect' 和 'forward'/'passthrough' 之间是否存在差异,需要实施更专业的努力来实现有意义的重定向?
- 我是否遗漏了其他配置文件中可能影响这些重定向尝试结果的内容?
编辑:RegEx 的不同之处在于我正在尝试查看是否可能是断开连接发生的地方
因为dotCMS 中的url 并不真正存在,转发规则使用的servlet requestdispatcher 不起作用。您需要设置一个请求属性 CMS_FILTER_URLMAP_OVERRIDE,dotCMS 将遵守该属性。在代码中,这看起来像:
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 );
请注意,在我尝试显示代码示例时,我会 redact/edit 删除任何对我工作的公司的引用,以掩盖他们的身份,而不是隐藏我什至在问的事实。还应该注意的是,我对这个 UrlRewrite/Tuckey/dotCMS.
的游戏很陌生我一直无法使重定向正常工作。它通过 dotCMS 使用 Tuckey URLRewrite。尝试是为了 SEO 目的重定向,但作为转发而不是代理。
我发现以下作品('redirect' 和 'proxy' 在这里可以互换):
<to type="proxy">http://[redacted]:8080?%{query-string}</to>
但是,以下会导致 404('forward' 和 'passthrough' 在这里可以互换):
<to type="forward">http://[redacted]:8080?%{query-string}</to>
规则全文如下:
<!-- EN with Query Params -->
<rule>
<from>^/([^/]+)/en/([^/]+)?$</from>
<to type="proxy" qsappend="true">[redacted]:8080&%{query-string}</to>
</rule>
<!-- EN without Query Params -->
<rule>
<from>^(.*)(\/en)(\/.*)?$</from>
<to type="proxy">[redacted]:8080?%{query-string}</to>
</rule>
我最初的一些问题(可能会出现更多问题):
- 'proxy'/'redirect' 和 'forward'/'passthrough' 之间是否存在差异,需要实施更专业的努力来实现有意义的重定向?
- 我是否遗漏了其他配置文件中可能影响这些重定向尝试结果的内容?
编辑:RegEx 的不同之处在于我正在尝试查看是否可能是断开连接发生的地方
因为dotCMS 中的url 并不真正存在,转发规则使用的servlet requestdispatcher 不起作用。您需要设置一个请求属性 CMS_FILTER_URLMAP_OVERRIDE,dotCMS 将遵守该属性。在代码中,这看起来像:
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 );