angularjs ngroute 和 htaccess 重写
angularjs ngroute and htaccess rewrite
我想知道如何工作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
此外,类似的堆栈溢出问题可能会有帮助:
$location / switching between html5 and hashbang mode / link rewriting
我想知道如何工作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
此外,类似的堆栈溢出问题可能会有帮助: