我正在使用Yeoman包pipe理器来创build一个angular度的Web应用程序。 这是我的主要控制者:
'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重写规则不适用于angularjs
https://groups.google.com/forum/#!msg/angular/GmNiNVyvonk/mmffPbIcnRoJ
我的.htaccess的Apache Web服务器:
# BEGIN angularJS <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*) /index.html/#/$1 </IfModule> # END angularJS
我已经尝试了一些重写的东西,不能得到它的工作,但找到了一个可行的解决方案,使用重定向和NE标志
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)$ #/$1 [NC,R,NE]
这似乎有很多其他有趣的链接从这个哈哈/ URL片段的回答: https : //stackoverflow.com/a/15135130