在我的ASP.NET SPA应用程序中,我使用web.config来设置重写规则,因此我可以无错误地刷新页面(使用Angularjs时),但我也想重定向到应用程序的主页,手动输入不存在的页面,请告知我应该如何修改以下代码以适应这个:
<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>
答案 0 :(得分:1)
正如Fedaykin所建议的(非常感谢),以下代码解决了这个问题:
<system.webServer>
<httpErrors errorMode="Custom">
<remove statusCode="404"/>
<error statusCode="404" path="/Default.aspx" responseMode="ExecuteURL"/>
</httpErrors>
</system.webServer>
由于我在单页应用程序上工作,在我的情况下,路径将等于&#34; /&#34;,如下所示:
<error statusCode="404" path="/" responseMode="ExecuteURL"/>
然后Angularjs路由将负责其余部分。
答案 1 :(得分:0)
您可以使用404错误处理重定向到您的主页(此处我假设是Default.aspx,但将其更改为您的主页),在您的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 : '/'})
}
希望有所帮助。