我已经在以下方面苦苦挣扎了:

默认网址:

examplesite.com/folder/about.cshtml

所需网址:
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

    关于asp.net - IIS URL重写如何删除目录和扩展名?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15012893/

    10-12 00:01
    查看更多