IIS网址重写|如何删除目录和扩展名?
问题描述:
我一直在挣扎相当一段时间如下:IIS网址重写|如何删除目录和扩展名?
默认网址:
examplesite.com/folder/about.cshtml
所需的URL:
examplesite.com/about
基本上我要完成两两件事:
- 1使用实际紧凑的代码删除文件扩展名。
- 2删除放置关于页面的文件夹。
我发现了一些不常见的规则来实现上述所有功能,但是当我使用IIS 8.0对其进行测试时,它们大多包含大量冗余代码,导致网站崩溃。
所以我希望有人可以分享一个紧凑的规则,适合我的需求。或者以相同的结果分开规则。
每一个贡献是非常赞赏:)
答
我不能肯定我完全了解你的需求,但这里的东西是至少接近。它删除第一个文件夹和文件扩展名(所以examplesite.com/folder/about.cshtml
变成examplesite.com/about
和examplesite.com/folder/help/about.cshtml
变成examplesite.com/help/about
)。如果你想剥离所有文件夹,然后删除?
。
<rule name="Remove Directory and Extension">
<match url="^(.*?)/(.*)\.cshtml$" />
<action type="Rewrite" url="{R:2}" />
</rule>
更新:
好吧,我想你想要的东西是那么两个规则的组合:
<rules>
<rule name="Redirect requests to friendly URLs">
<match url="^(.*?)/(.*)\.cshtml$" />
<action type="Redirect" url="{R:2}" />
</rule>
<rule name="Rewrite friendly URLs to phsyical paths">
<match url="^(.*)$" />
<action type="Rewrite" url="folder/{R:0}.cshtml" />
</rule>
</rules>
的第一条规则将确保所有的请求都以友好的URL。第二个采用友好的URL并将其重写为物理路径,物理路径为folder/[FRIENDLY_PATH].cshtml
。
IIRC with Razor你可以放弃'.cshtml' - 无论如何 - http://www.asp.net/web-pages/tutorials/working-with-pages/creating-readable-urls-in-aspnet-web- pages-sites – Lloyd 2013-02-21 22:10:07