如何使用umbraco中配置文件中编写的IIS规则进行URL重写?

时间:2015-06-27 06:44:36

标签: .net url-rewriting rewrite umbraco umbraco7

我想使用配置文件中编写的规则进行URL重定向和重写,我使用的是Umbraco(.Net的CMS),这里是2个配置文件,它们是RewriteRules.config和UrlRewriting.config。

我实际需要什么

我有一个像这样的网址: http://localhost:50777/node1/node2/node3/node4/node5/

应该是: http://localhost:50777/node5/

OR

http://localhost:50777/node1/node2/node3/node4/

应该是: http://localhost:50777/node4/

我想从URL中删除父节点,并仅显示显示正确页面内容的最后一个节点URL,但在我的情况下,它给我404错误,找不到页面。

所以我必须在配置文件中编写一些规则,将截断的URL路径重写为确切的路径。

请给我任何解决方案,谢谢。

1 个答案:

答案 0 :(得分:0)

这两个可以通过添加UrlRewriting.config来完成您的需要:

<add name="FiveNodeRewriteRewrite"
  virtualUrl="^~/node1/node2/node3/node4/(.*)"
  rewriteUrlParameter="ExcludeFromClientQueryString"
  destinationUrl="~/$1"
  ignoreCase="true" />

<add name="FourNodeRewriteRewrite"
  virtualUrl="^~/node1/node2/node3/(.*)"
  rewriteUrlParameter="ExcludeFromClientQueryString"
  destinationUrl="~/$1"
  ignoreCase="true" />

这些假设您的节点在您的示例中是静态命名的。如果你需要更具动感的东西,也许就是这个例子:

<add name="FiveDynamicNodeRewriteRewrite"
  virtualUrl="^~/(.*)/(.*)/(.*)/(.*)/(.*)"
  rewriteUrlParameter="ExcludeFromClientQueryString"
  destinationUrl="~/$5"
  ignoreCase="true" />

 <add name="FourDynamicNodeRewriteRewrite"
      virtualUrl="^~/(.*)/(.*)/(.*)/(.*)"
      rewriteUrlParameter="ExcludeFromClientQueryString"
      destinationUrl="~/$4"
      ignoreCase="true" />