【发布时间】:2015-03-19 06:33:35
【问题描述】:
在我正在使用的一个 web 应用程序中,我处理了如下 URL:
http://localhost:8080/section/value.with.periods
这个value.with.periods 是一个URL 参数,就像你在angular 的routeProvider 上声明的那些:
angular.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/section/:param', {
templateUrl: 'url-to-template',
controller: 'ExampleCtrl',
resolve: {
...
}
});
}]);
问题在于,运行在 Grunt 任务下的服务器无法处理带有句点的 URL:
Cannot GET /section/value.with.periods
我正在使用grunt-contrib-proxy 和connect-modrewrite 运行Grunt,而配置connect-modrewrite 的livereload 任务是以下任务:
livereload: {
options: {
open: 'http://localhost:<%= connect.options.port %>',
base: [
'.tmp',
'<%= config.app %>'
],
middleware: function(connect, options) {
if (!Array.isArray(options.base)) {
options.base = [options.base];
}
// Setup the proxy
var middlewares = [proxySnippet];
var modRewrite = require('connect-modrewrite');
middlewares.push(modRewrite(['^[^\\.]*$ /index.html [L]']));
// middlewares.push(modRewrite(['!\\.html|\\.js|\\.svg|\\.css|\\.png|\\.jpg\\.gif|\\swf$ /index.html [L]']));
// Serve static files.
options.base.forEach(function(base) {
middlewares.push(connect.static(base));
});
// Make directory browse-able.
var directory = options.directory || options.base[options.base.length - 1];
middlewares.push(connect.directory(directory));
return middlewares;
}
}
}
我需要能够处理在 Angular 上使用的参数上带有句点的 URL。任何帮助将不胜感激。
谢谢。
【问题讨论】:
标签: javascript angularjs node.js gruntjs connect-modrewrite