node.js - gulp 和 url 重写

标签 node.js mod-rewrite gulp

我有一个使用浏览器同步的工作 gulp 系统,我也尝试添加一个代理以允许将所有 API 调用重定向到服务器,不幸的是它的所有操作都是旋转并且不加载任何内容。我以前没有尝试过,所以很可能我做得不对,所以有更多经验的人可能能够发现我哪里出错了。

我想做的是我认为简单的事情

对 localhost:3000/Mercury 的所有调用(获取、发布、放置、修补、删除)

需要重新路由到http://angular.dev.europa-sports.net:80/Mercury

这是浏览器同步服务器部分的代码

gulp.task('browser-sync', function () {
            browserSync({
                    server: {
                        baseDir: "../public",
                        middleware: function () {
                            return [
                modRewrite([
                  '^/Mercury/(.*)$ http://angular.dev.europa-sports.net:80/Mercury/$1 [P]'
                ])
              ];
                        }
                    }
                    });
            });

gulp.task('bs-reload', function () {
    browserSync.reload();
});

如果有人对此有任何想法,我很想听听,或者如果您需要查看整个 gulp 文件,请告诉我,这是一个有效的 gulp 文件,直到我进行更改以从中间件上的 HistoryApi 添加 modRewrite

这是正确工作的原始 gulp 任务

gulp.task('browser-sync', function() {
    browserSync({
        server: {
            baseDir: "../public",
            middleware: [ historyApiFallback() ]
        }
    });
});

gulp.task('bs-reload', function () {
    browserSync.reload();
});

最佳答案

我已经完成了这个工作,并使用 gulp 和 browser-sync 找到了一个很好的简洁解决方案。

对于那些使用此类系统的人,这里是代理 api 的解决方案

首先将其添加到您的 package.json

"proxy-middleware": "^0.15.0",
"url": "^0.11.0",

在你的 gulp 文件中需要以下内容

Proxy = require('proxy-middleware'),
url = require('url'),

然后您的浏览器同步任务应如下所示,这将允许您在本地代理传入/api 的任何内容以转到 server.com/api 的目标目的地 无需配置 CORS 解决方案。

这意味着您无需更改代码即可从本地转移到开发。

gulp.task('browser-sync', function() {
var proxyOptions = url.parse('http://www.server.com/api');
    proxyOptions.route = '/api';
    browserSync({
        server: {
            baseDir: "../public",
            middleware: [ Proxy(proxyOptions), historyApiFallback() ]
        }
    });
});

关于node.js - gulp 和 url 重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33266011/

相关文章:

apache - mod_rewrite : Rewrite URL to point to cgi script, 但保持重写隐藏

javascript - 使用 Gulp 在同一目录中的多个文件扩展名

ubuntu - gulp 工作不正常,版本不显示

node.js - 使用gulp编译时出错

node.js - 运行批量迁移时,knex 迁移中使用的 ObjectionJS 模型报告 "relation does not exist"

node.js - Koa2:中间件链如何写?

node.js - 如何等待谷歌电子表格调用并将其设置在 for 循环内

Javascript Date - 如何知道 DST 在给定时区是否有效

.htaccess - htaccess 中的强制 SSL 仅转到主页

apache - 重写任意数量的路径段以查询参数