Я пытаюсь добавить маршрут для запуска AngularJS $stateProvider
.В настоящее время, если я использую http://localhost:8080/external-login
, сервер возвращает "Cannot GET / external-login" .Если я использую http://localhost:8080#external-login
, $stateProvider
подхватывает это и использует правильный контроллер.Я хотел бы иметь возможность настроить правило перезаписи маршрута или URL-адреса для принудительного использования хеш-символа.
До сих пор я пытался использовать connect-modrewrite
и grunt-connect-route
с небольшим успехом.
Вот текущие настройки подключения без изменений:
// The actual grunt server settings
connect: {
options: {
port: 8080,
// Change this to '0.0.0.0' to access the server from outside.
hostname: 'localhost',
livereload: 35730
},
livereload: {
options: {
open: true,
middleware: function (connect) {
return [
connect.static('<%= yeoman.tmp %>'),
connect().use(
'/bower_components',
connect.static('./bower_components')
),
connect().use(
'/app/styles',
connect.static('./app/styles')
),
connect.static(appConfig.app)
];
}
}
},
Сначала я попытался добавить var modRewrite = require('connect-modrewrite');
, а затем добавил это в раздел middleware
:
connect().use(
modRewrite(
[
'^\/external-login\(.*)$ /index.html\#external-login/$1 - [L]'
])),
Это почти сработало, но побочным эффектом было то, что приложение не загружалось и не работало должным образом.
Затем я удалил его и попытался добавить grunt.loadNpmTasks('grunt-connect-route');
, а затем правила в разделе options
:
rules: {
'^/external-login$': '/index.html/#external-login'
},
Как указано выше, я хотел бы настроить Gruntfile.js, чтобы понять, как маршрутизировать приложение, чтобы приложение могло направлять браузер на нужный контроллер.