当页面刷新时,AngularJS路由返回404错误
问题描述:
我是angularJS的新手,我喜欢用它编码。我目前正在使用angularJS构建一个门户网站,并且我的每个网页都使用ngRoute
。它适用于我,但当我尝试刷新页面时,它返回了我的404 error/page not found
。我应该在这个问题上做什么?这里是我的代码:当页面刷新时,AngularJS路由返回404错误
var app = angular.module("CVSRRC", ['ngMaterial','ngRoute']);
app.controller('CVSRRC-CTRL', function($scope, $http, ...){
// some codes here...
});
app.config(function($routeProvider, $locationProvider){
$locationProvider.html5Mode(true).hashPrefix('!');
$routeProvider
.when('/', {
templateUrl: '_pages/home',
controller: 'homeCTRL',
resolve: {
delay: function($q, $timeout){
var delay = $q.defer();
$timeout(delay.resolve, 1000);
return delay.promise;
}
}
})
...etc...
.otherwise({
redirectTo: '/'
});
});
,并在我的HTML
<html>
<head>
<base href="/cvsrrc/" />
</head>
<body ng-app="CVSRRC" ng-controller="CVSRRC-CTRL">
<div class="row" id="main">
<div ng-view ng-show="statechange"></div>
<div ng-show="!statechange" cvsrrc-resolve>
<div id="_loader_"></div>
</div>
</div>
<a href="about-us">About</a>
<a href="login">login</a>
//etc
</body>
</html>
而且这里是我的.htaccess看起来像
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
ErrorDocument 404 http://localhost/cvsrrc/page-not-found
答
最后,我找到了一个解决方案,我之前已经见过这个解决方案,但因为我忘了从.htaccess
删除/localhost/
它不会对我的工作!这里是:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
# Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule^- [L]
RewriteRule (.*) /cvsrrc/index.php [L]
</IfModule>
答
既然你已经使用<base href="/cvsrrc/" />
和$locationProvider.html5Mode(true).hashPrefix('!');
您的网址删除#!从url并添加cvsrrc /。所以它会工作,如果你从应用程序重定向应用程序。
但是,当你重新加载页面时,它会尝试使用URL与cvsrrc /来找到实际上并不存在的路径。
所以,你必须使用重写模块在服务器上告诉重定向cvsrrc /到#/
答
要么试试!
- 从路径中删除的决心。
-
配置后添加以下代码:
$ locationProvider.hashPrefix(“”);
分享您用于访问该页面的网址。
删除您的基地的结尾“/”。
所以我会配置它到我的.htaccess你的意思是? Sir @Ankur Akvaliya –
是的。取决于后端。我想你正在使用PHP。 –
你可以查看这里-http://stackoverflow.com/questions/38291535/page-refresh-gives-404你可以通过这个去了解更多有趣的东西来阅读有关angularjs中html5模式和每个不同环境所需的配置https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-configure-your-server-to-work-with-html5mode另外这个问题可能会帮助你$ location /切换html5和hashbang模式/链接重写 –