我正在尝试添加一条路由来触发AngularJS $stateProvider
。当前,如果我使用http://localhost:8080/external-login
,服务器将返回“无法获取/ 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以了解如何路由到应用程序,以便应用程序可以将浏览器定向到正确的控制器。