Comment dire à gulp-connect d'ouvrir index.html quelle que soit l'URL ?
Question
J'ai la tâche gulp suivante :
gulp.task('connect', function() {
connect.server({
root: __dirname,
livereload: true
});
});
et les itinéraires angulaires suivants :
angular.module("MyApp", ["ngRoute"]).config(function($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);
$routeProvider
.when("/", {
controller: "DashboardCtrl",
templateUrl: "templates/dashboard.html"
})
.when("/advertiser", {
controller: "AdvertiserCtrl",
templateUrl: "templates/advertiser.html"
})
.otherwise({
redirectTo: "/"
});
});
Quand je visite /
tout fonctionne bien (le tableau de bord apparaît).
Mais, en visitant /advertiser
le résultat est "404 - Impossible d'obtenir /annonceur".
Mon fichier angulaire principal est index.html
, qui est ouvert correctement pour /
, mais pas pour /advertiser
.
Comment pourrais-je dire à Gulp d'ouvrir index.html
quelle que soit l'URL ?
La solution
Vous pouvez utiliser le middleware
possibilité d'utiliser le connect-history-api-fallback
intergiciel.Une fois que vous avez installé et requis la solution de secours, vous l'ajoutez comme ceci :
gulp.task('connect', function() {
connect.server({
root: __dirname,
livereload: true,
middleware: function(connect, opt) {
return [ historyApiFallback ];
}
});
});
Autres conseils
Alternativement, vous pouvez utiliser gulp-connect
propre option appelée fallback
pour ça:
gulp.task('connect', function() {
connect.server({
root: 'path/',
livereload: true,
fallback: 'path/index.html'
});
});
Pas besoin d'un autre forfait.