[英]AngularJS routes returns 404 error when page is being refresh
我是angularJS的新手,我喜歡用它進行編碼。 我目前正在使用angularJS構建一個Web門戶,我的每個頁面都使用ngRoute
。 它對我來說很好用,但是當我嘗試刷新頁面時,它返回404 error / page not found
。 在這個問題上我該怎么辦? 這是我的代碼:
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
由於您已使用<base href="/cvsrrc/" />
和$locationProvider.html5Mode(true).hashPrefix('!');
您的網址已刪除#! 從網址添加cvsrrc /。 因此,如果您從應用程序重定向應用程序,它將起作用。
但是,當您重新加載頁面時,它將嘗試將url與cvsrrc /一起使用,以查找實際上不存在的路徑。
因此,您必須使用服務器上的重寫模塊來告訴將cvsrrc /重定向到#!/
嘗試以下任一方法:
在配置后添加以下代碼:
$ locationProvider.hashPrefix(“”);
分享您用於訪問頁面的網址。
刪除基數中的結尾“ /”。
終於我找到了一個解決方案,我之前已經遇到過這個解決方案,但是它對我不起作用,因為我忘記了從.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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.