咕噜声:带有句点的位置 URL 应用
Grunt: Location URL app with period
在我正在使用的一个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。任何帮助将不胜感激。
谢谢。
重写正则表达式会排除所有带有句点的路径:
^[^''.]*$
这意味着:将网址与所有字符匹配,除非它们有反斜杠或句点。所以/section/value.with.periods
会被忽略。
您应该将正则表达式更改为更宽容的内容:
middlewares.push(modRewrite(['^(.*)$ /index.html [L]']));
你应该很高兴。
编辑解决方案:
在评论中,我们得出了答案:上面的正则表达式将重写所有 url 以索引.html,导致其他文件无法提供。有一个注释掉的行,只重写文件扩展名未知的 url:
middlewares.push(modRewrite(['!''.html|''.js|''.svg|''.css|''.png|''.jpg|''.gif|''.swf$ /index.html [L]']));
这给出了预期的结果。有关详细信息,请参阅评论。
相关文章:
- 如何抓取URL的一部分并将其粘贴到页面上的某个位置
- 如何在重定向 URL 的标头中拦截和获取位置
- JavaScript-按位置查找URL中的文本
- HTML-从javascript中的URL位置读取.txt文件
- 更改url位置的最佳方式
- 根据背景位置更改光标 URL
- 我的变量保存在 URL/位置中,如何从另一个页面读取它
- 在事件发生时获取元素位置的当前页面 URL,并将该 URL 输出到另一个页面上
- 咕噜声:带有句点的位置 URL 应用
- JavaScript 位置搜索 URL 中的多个查询参数
- 从位置拆分带有javascript的URL
- 将路径添加到当前 URL 位置
- 为文档提供正确的 URL 或位置
- 使用 JavaScript 检查字符串是否包含字符串中任何位置的 URL
- 如何使用位置对象来解析 URL,而无需在 javascript 中重定向页面
- jQuery - 阻止 url 锚点更改页面位置
- Ember.js 在 App.Route 中指定位置=“历史记录”的 URL 类型时出错
- 更改位置时重写URL
- 如何创建带有位置url的谷歌地图标记
- Meteor:重定向后的最终位置/URL是什么