asp.net - IIS url 重写 |如何删除目录和扩展名?

标签 asp.net iis url-rewriting web-config iis-8

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

默认网址:

examplesite.com/folder/about.cshtml

所需网址:

examplesite.com/about

基本上我想完成两件事:

  • 1 去除文件扩展名,代码相对紧凑。
  • 2 删除包含“关于”页面的文件夹。

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

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

我们非常感谢您的每一份贡献:)

最佳答案

我不确定我完全理解您的需求,但这里至少有一些接近的东西。它删除了第一个文件夹和文件扩展名(因此 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

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

相关文章:

php - 我的 http ://localhost/redirecting to www. localhost.com

asp.net - 为网站而不是源代码部署二进制 dll 有什么好处?

.net - PowerShell 是瓶颈吗

iis - 使用 VBScript 重命名 IIS 中的虚拟目录?

asp.net - Server.TransferRequest 不保留 HttpContext.Items

php - htaccess 中带有 _escaped_fragment_ 的可抓取 AJAX

javascript - 使用 jquery/javascript 验证日期时间 asp net 文本框

asp.net - 使用 jquery + jsonp,Internet Explorer 不保存 ASP.NET sessionID

asp.net - 在 IIS 中一次请求上传大文件时的内存使用情况

node.js - IIS 反向代理从其背后的 NodeJS 获取 404