6

我已经为以下问题苦苦挣扎了一段时间:

默认网址:

examplesite.com/folder/about.cshtml

所需网址:

examplesite.com/about

基本上我想完成两件事:

  • 1 使用非常紧凑的代码删除文件扩展名。
  • 2 删除包含关于页面的文件夹。

我发现了一些不常见的规则来实现上述所有目标,但它们大多包含大量冗余代码,当我使用 IIS 8.0 测试它时会导致我的网站崩溃。

所以我希望有人可以分享一个紧凑且适合我需要的规则。或具有相同结果的单独规则。

非常感谢每一个贡献:)

4

1 回答 1

5

我不确定我是否完全理解您的需求,但这里有一些至少很接近的东西。它去掉了第一个文件夹和文件扩展名(因此examplesite.com/folder/about.cshtml变成examplesite.com/aboutexamplesite.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.

于 2013-02-21T23:13:00.607 回答