ASP.NET 4.0重写Global.aspx文件中的规则重写问题

时间:2013-02-10 04:47:58

标签: url-rewriting

我在IIS7上的ASP.NET 4.0中使用了重写规则:

<system.webServer>
<rewrite>
  <rules>
    <rule name="Rewrite default to aspx" stopProcessing="true">
      <match url="^$" ignoreCase="false" />
      <action type="Rewrite" url="home.aspx" />
    </rule>
  </rules>
</rewrite>
<defaultDocument>
  <files>
    <add value="home.aspx" />
  </files>
</defaultDocument>
</system.webServer>

此规则需要:(http:/example.com/aboutus.aspx),它会从URL末尾删除.aspx。我遇到了在我的子域上安装wordpress的问题(http:/www.example.com/blog)由于我的重写规则,我收到以下错误:

  

描述:HTTP 404.您正在查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。请查看以下网址,确保拼写正确。

     

请求的网址:/blog/.aspx

有谁知道我如何修复网址重写规则,以便安全到达(http://www.example.com/blog/)而不是在最后添加.aspx?

是否有某种语法可以搜索blog子目录以忽略目录'/ blog /'?

非常感谢!谢谢! :)

1 个答案:

答案 0 :(得分:0)

如果您希望将规则应用于除/blog/*之外的所有网址,则可以使用否定选项:

<rule name="Rewrite default to aspx" stopProcessing="true">
  <match url="^blog/" ignoreCase="false" negate="true" />
  <action type="Rewrite" url="home.aspx" />
</rule>

http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference#Rule_pattern_properties