我已经在以下方面苦苦挣扎了:
默认网址:
examplesite.com/folder/about.cshtml
所需网址:
examplesite.com/about
基本上,我想完成两件事:
我发现了实现上述所有目标的一些不常见的规则,但是它们中大多数包含大量的冗余代码,当我使用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
。关于asp.net - IIS URL重写如何删除目录和扩展名?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15012893/