ASP.NET重定向不存在的页面中使用重写规则在web.config中主页(ASP.NET redi

2019-09-30 08:00发布

在我的ASP.NET应用程序的SPA,我使用的web.config设置重写规则,这样我就可以刷新页面没有错误(同时使用Angularjs),但我也想重定向到应用程序的主页,手工输入时不存在的页面URL,请指教我应该如何修改下面的代码,以适应这一点:

<rewrite>
    <rules>
      <rule name="Products" stopProcessing="true">
        <match url="^products" />
        <action type="Rewrite" url="/" />
      </rule>
      <rule name="Orders" stopProcessing="true">
        <match url="^orders" />
        <action type="Rewrite" url="/" />
      </rule>
      <rule name="Home" stopProcessing="true">
        <match url="^home" />
        <action type="Rewrite" url="/" />
      </rule>
      <rule name="List" stopProcessing="true">
        <match url="^list" />
        <action type="Rewrite" url="/" />
      </rule>
    </rules>
  </rewrite>

Answer 1:

您可以使用一个404错误处理重定向到您的主页(这里假设I'm Default.aspx的it's,但将其更改为无论是你的家),在你的webconfig文件放:

<configuration>

   <system.web>
      <compilation targetFramework="4.0" />

      <customErrors mode="On" redirectMode="ResponseRewrite">
         <error statusCode="404" redirect="Default.aspx" />
      </customErrors>
   </system.web>

   <system.webServer>
      <httpErrors errorMode="Custom">
         <remove statusCode="404"/>
         <error statusCode="404" path="/Default.aspx" responseMode="ExecuteURL"/>
      </httpErrors>
   </system.webServer>

</configuration>

此外,在您的角度配置使用以下重定向到家里:

$routeProvider.
   when('/',{'templateUrl' : 'a.html'})
  .when('/b',{'templateUrl' : 'b.html'})
  .otherwise({redirectTo : '/'})
}

希望帮助。



Answer 2:

正如Fedaykin建议(非常感谢)下面的代码解决了这个问题:

<system.webServer>
    <httpErrors errorMode="Custom">
       <remove statusCode="404"/>
       <error statusCode="404" path="/Default.aspx" responseMode="ExecuteURL"/>
    </httpErrors>
</system.webServer>

由于我在单页应用工作,在我的情况下,路径将等于“/”,就像这样:

<error statusCode="404" path="/" responseMode="ExecuteURL"/>

然后Angularjs路由将完成剩余的工作。



文章来源: ASP.NET redirect non existing pages to homepage in web.config using rewrite rules