我正在使用AngularJS路由和部分来建立我的站点的页面结构。我正在使用HTML5模式来避免hashbang。从一个页面到下一个页面的导航通过单击链接工作,但是当刷新页面或直接键入url时,我会得到一个404,页面找不到错误。我该如何纠正这个问题?
下面是已剥离的HTML:
<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
<meta charset="utf-8">
<title>site</title>
<base href="/">
</head>
<body ng-controller="MyController">
<a href="/home">Site</a>
<ul>
<li><a href="/home">Home</a></li>
<li><a href="/about">About</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
<div ng-view></div>
<script src="js/angular.min.js"></script>
<script src="js/angular-route.min.js"></script>
<script src="js/app.js"></script>
</body>
</html>
这是我的app.js:
angular.module('myApp', ['ngRoute'])
.config(function($locationProvider, $routeProvider) {
$locationProvider.html5Mode(true);
$routeProvider.
when('/home', { templateUrl: 'partials/home.html', }).
when('/about', { templateUrl: 'partials/about.html', }).
when('/contact', { templateUrl: 'partials/contact.html', }).
otherwise({ redirectTo: '/home' });
});
function MyController($scope) {
}
部分页面只发出一行:
home partial
或
about partial
或
contact partial
我在IIS7和Apache上都尝试过这种方法,每次结果都是一样的。
如能提供任何协助,将不胜感激。谢谢您抽时间见我。
发布于 2014-01-29 20:50:14
此行为听起来似乎没有配置服务器来处理您使用html5模式的问题。您的服务器没有为路径(如/home、/about和/contact )上的请求提供服务的资源。(因此404.)您需要配置服务器端重写,以便这些请求只为索引页服务。这样,如果您粘贴到url /about中,服务器将服务索引页(它确实存在),客户端代码负责显示“约”部分。
尽管用户界面路由器文档是一个第三方库,但它为一些服务器类型(包括Apache)提供了很好的示例。
https://stackoverflow.com/questions/21447499
复制相似问题