UrlRewriting.net 将 .htm 重写为无扩展名,但忽略 umbraco 目录

UrlRewriting.net rewrite .htm to extensionless, but ignore umbraco directories

我需要将我网站的所有遗留 .htm 网址重定向到无扩展网址,因此:

http://www.website.com/page.htm  -->  http://www.website.com/page

我在 config/UrlRewriting.config 中创建了以下规则,该规则解决了上述问题,但造成了所有后台路径都返回 404 的问题:

<add name="HtmToExtensionless"
     redirect="Domain"
     ignoreCase="true" 
     rewriteUrlParameter="IncludeQueryStringForRewrite"
     virtualUrl="http://www.website.com/(.*)(\.htm)"
     redirectMode="Permanent"
     destinationUrl="http://www.website.com/" />

所以像这样的请求返回 404:

http://www.website.com/umbraco/views/components/application/umb-navigationl?umb__rnd=7.4.2.1536555776

我很确定我的问题出在我的正则表达式上,但我不确定。有人愿意提供建议吗?

原来我是个骗子。 Umbraco 实际上请求具有 .html 扩展名的资源,而我的正则表达式正在获取这些资源并从中剥离 .htm。只需检查字符串的开头和结尾,现在我们大功告成了:

<add name="HtmToExtensionless"
     redirect="Domain"
     ignoreCase="true" 
     rewriteUrlParameter="IncludeQueryStringForRewrite"
     virtualUrl="^http://www.website.com/(.*)(\.htm)$"
     redirectMode="Permanent"
     destinationUrl="http://www.website.com/" />