我想知道如何将angularjs的ngRoute和htaccess一起重写。
我有ngRoute工作所以我得到这样的url:
http://domain.com/#/something/somestring
但是我非常喜欢这个结果:
http://domain.com/something/somestring
换句话说,我想去掉url中的/#。我以前用。htaccess和mod_rewrite.c和PHP这样做过,但我不知道如何用AngularJS实现相同的结果。任何指针,教程链接,文章等,解释如何做到这一点,或只是一个例子,将非常感谢。
一些要求:我应该仍然能够按照我到目前为止所做的方式进行路由:
blogApp.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/page/:pagePermaLink', {
templateUrl: './assets/templates/page.html',
controller: 'pageCtrl'
}).
when('/article', {
templateUrl: './assets/templates/article.html',
controller: 'articleCtrl'
}).
otherwise({
redirectTo: '/home',
templateUrl: './assets/templates/page.html',
controller: 'mainCtrl'
});
}]);
URL查询字符串,如:pagePermaLink
,应该仍然可以从作用域访问:
blogCtrl.controller('pageCtrl', ['$scope', '$routeParams', '$http',
function($scope, $routeParams, $http) {
var foo = $routeParams.pagePermaLink;
// ...
}]);
如果您已经完成了重写,您应该能够设置$locationProvider.html5Mode(true)
。看到https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions how-to-configure-your-server-to-work-with-html5mode
同样,类似的堆栈溢出问题可能会有所帮助:没有哈希的Angular直接Url$location/在html5和hashbang模式之间切换/链接重写