2014-06-28 105 views
0

我使用Yeoman包管理器來創建一個角度的web應用程序。這是我的主控制器:apache的AngularJS路由問題

'use strict'; 

angular 
    .module('resFourApp', [ 
    'ngCookies', 
    'ngResource', 
    'ngSanitize', 
    'ngRoute', 


    ]) 
    .config(function ($routeProvider, $locationProvider) { 
    $routeProvider 
     .when('/', { 
     templateUrl: 'views/main.html', 
     controller: 'MainCtrl' 
     }) 

     .when('/about', { 
     templateUrl: 'views/about.html', 
     controller: 'AboutCtrl' 
     }) 

     .when('/contact', { 
     templateUrl: 'views/contact.html', 
     controller: 'ContactCtrl' 
     }) 
     .otherwise({ redirectTo: '/' }); 

     // use the HTML5 History API 
    // use the HTML5 History API 
    $locationProvider.html5Mode(true); 
    }); 

如果我從基本目錄訪問應用程序,但如果我從URL訪問它,去www.base.com/route我得到一個404錯誤,工作正常。我理解的是因爲Angular是一個客戶端應用程序,所以服務器上沒有任何東西可以處理這些請求。我已經閱讀了很多關於必須重新路由服務器或mod用apache重寫的內容,但是我仍然沒有得到它的工作。

事情我已經試過

Apache rewrite rules not being applied for angularjs

https://groups.google.com/forum/#!msg/angular/GmNiNVyvonk/mmffPbIcnRoJ

我的Apache Web服務器的.htaccess:

# BEGIN angularJS 
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)  /index.html/#/$1 
</IfModule> 
# END angularJS 

回答

2

我已經嘗試了一些事情重寫和不能得到它的工作,但找到了一個可行的解決方案,使用重定向和NE flag

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$  #/$1 [NC,R,NE] 

似乎有不少其他有趣的鏈接來自這對於哈希/ URL片段SO回答:https://stackoverflow.com/a/15135130