我使用与AngularJS路由的漂亮网址,这是我的angularJS代码
var app = angular.module('app.home', ['ngRoute', 'ngAnimate']);
app.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
$routeProvider.
when('/', {
templateUrl: 'static/home.html',
controller: 'AppController'
}).
when('/about', {
templateUrl: 'static/about.html',
controller: 'AppController'
}).
when('/contact', {
templateUrl: 'static/contact.html',
controller: 'AppController'
}).
when('/tutorial', {
templateUrl: 'static/tutorial.html',
controller: 'AppController'
}).
otherwise({
redirectTo: '/'
});
$locationProvider.html5Mode(true);
}]);
app.controller('AppController', function ($scope) {
});
它工作正常,但是当我导航到/ about(或除#&;;'以外的任何网址)并点击刷新时,它显示服务器无法找到资源错误。我使用的是ASP.NET 5.有没有办法重定向到刷新后用户点击刷新的页面?
答案 0 :(得分:1)
您需要将服务器配置为返回与您的angularjs路由匹配的任何路由的主html文件。所以你的服务器应该返回/index.html或你的文件,对于任何请求:/ about,/ tutorial,... etc
答案 1 :(得分:1)
确保在web.config
<system.webServer>
<rewrite>
<rules>
<rule name="AngularJS" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
</system.webServer>
请务必在<base href="/">
中加入<head>
(或其他适用的,如果使用&gt; 1.2.x)。嗯? Why would we need that?
以下简短的博客文章是一篇不错的文章,简单地说明了为什么我们需要这样做...
Deep Linking AngularJS on Windows Azure IIS
关于ASP.NET 5,仍然支持web.config
,但它应该进入wwwroot文件夹。您可能缺少IIS的Url Rewrite模块。