【发布时间】:2014-11-25 14:45:30
【问题描述】:
我正在尝试删除我的网站上的 Hashbangs,但我似乎无法完全正确。例如,如果我登陆我的home page,然后单击“CSS”菜单并选择“Origami Element”菜单选项,我会在被定向到 GitHub 404 页面之前短暂看到页面加载。
如果我直接输入 url (http://eat-sleep-code.com/css/origami),我会直接发送到 GitHub 404。
我错过了什么,或者这在 GitHub Pages 托管的 AngularJS 网站上是不可能的?
下面是我的 app.js 的一部分
var app = angular.module('eatsleepcode', ['ngRoute', 'ngSanitize']);
/* Routing */
app.config(['$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider) {
$routeProvider.
when('/', {templateUrl: 'views/blog.html', controller: 'BlogController'}).
when('/blog', {templateUrl: 'views/blog.html', controller: 'BlogController'}).
when('/blog/:postID', {templateUrl: 'views/blog.html', controller: 'BlogController'}).
when('/contact', {templateUrl: 'views/contact.html', controller: 'DefaultController'}).
when('/privacy', {templateUrl: 'views/privacy.html', controller: 'DefaultController'}).
when('/resources', {templateUrl: 'views/resources.html', controller: 'DefaultController'}).
when('/terms', {templateUrl: 'views/terms.html', controller: 'DefaultController'}).
when('/css/origami', {templateUrl: 'views/css/origami.html', controller: 'DefaultController'}).
otherwise({
redirectTo: '/404'
});
$locationProvider.html5Mode(true);
}]);
/* Controllers */
app.controller('DefaultController', function($scope) {});
【问题讨论】:
-
如果您只是请求 http://.../css/origami,服务器不会读取您的 javascript。服务器不知道如何使用您的 js 定义进行路由。这就是
#(http://.../#/css/origami)的目的;它破坏了 url,因此它使用 javascript 加载初始页面,然后加载正确的路由。
标签: javascript angularjs angularjs-routing github-pages