在那我的工作一个Web应用程序,我有处理类似下面的网址:咕噜:有一段位置URL应用
http://localhost:8080/section/value.with.periods
这value.with.periods
是一个URL PARAM,像那些声明对角的routeProvider
:
angular.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/section/:param', {
templateUrl: 'url-to-template',
controller: 'ExampleCtrl',
resolve: {
...
}
});
}]);
的问题是,使用的服务器,在咕噜任务运行,不能处理期间的URL在它:
Cannot GET /section/value.with.periods
我与grunt-contrib-proxy
和connect-modrewrite
,以及livereload
任务,其配置connect-modrewrite
,运行格朗特低于一个:
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上使用的参数。任何帮助将不胜感激。
谢谢。
我用你的建议替换了正则表达式,应用程序无法找到它的任何依赖关系。他们现在都指向'index.html'作为源代码,在控制台上抛出了一些错误。我在想,如果这个原始的正则表达式应该被修改,或者它只适用于HTML标记声明的文件路径。 – 2015-01-21 00:26:24
似乎没有选项来检查文件是否存在,如在apache的mod_rewrite中。你有没有试过注释掉的版本? 'middlewares.push(modRewrite(['\\ HTML |!\\ JS |。\\ SVG | \\ CSS | \\ PNG |。\\ \\ JPG GIF | \\ SWF $ /指数.html [L]']));' – RoryKoehein 2015-01-21 11:56:51
正则表达式不是我最好的能力。是的,取消评论的工作。我没有注意到没有注释的正则表达式的可能性,团队中的某个人已经替换了另一个并导致这个问题。我可以编辑您的答案,解释并标记为正确吗? – 2015-01-21 15:51:51