在我的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>
您可以使用一个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 : '/'})
}
希望帮助。
正如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