Sto cercando di creare URL cosiddetti "SEO-friendly" in AngularJS.
Nei miei script.js per l'instradamento ho:
app.config(['$routeProvider',
function($routeProvider) {
$routeProvider.html5Mode(true);
when('/blog', {
templateUrl: 'blog.html',
controller: 'BlogController'
}).
when('/page/ideas', {
templateUrl: 'ideas.html',
controller: 'IdeasController'
}).
otherwise({
templateUrl: 'home.html'
});
}]);
app.controller("BlogController", function($scope) {
$scope.title = 'Blog';
});
app.controller("IdeasController", function($scope) {
$scope.title = 'Ideas';
});
Per rimuovere la # dall'URL, sto abilitando la modalità HTML5 con:
$routeProvider.html5Mode(true);
tuttavia, questo si traduce in il seguente errore:
Failed to instantiate module exampleApp due to: TypeError: $routeProvider.html5Mode is not a function
Qualcuno ha una soluzione per questo problema? Significa che il contenuto non verrà visualizzato dalle visualizzazioni a causa di esso.
Edit: per chiunque chiedendo, il codice di lavoro è:
app.config(['$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider) {
$routeProvider.
when('/blog', {
templateUrl: 'blog.html',
controller: 'BlogController'
}).
when('/page/ideas', {
templateUrl: 'ideas.html',
controller: 'IdeasController'
}).
otherwise({
templateUrl: 'home.html'
});
$locationProvider.html5Mode(true);
}]);
Provare a utilizzare il '$ locationProvider.html5Mode (true);' invece. html5Mode è un metodo di $ locationProvider. –
Hmm, ora ottengo: ReferenceError: when non è definito OR ReferenceError: $ locationProvider non è definito – JWDev
È necessario iniettare $ locationProvider nello stesso modo in cui si fa con $ routeProvider –