如何使用http代理中间件重定向/代理来自browsersync的相对url

How to redirect / proxy a relative url from browsersync using http-proxy-middleware?

本文关键字:代理 browsersync 相对 url 何使用 http 中间件 重定向      更新时间:2023-09-26

我有一个设置,我使用browsersync(带gulp)来测试html模板。现在我有一个html模板,它有一个带有相对路径的链接标记:../css/style.css

该模板位于子文件夹/service/iframe中。

我想使用中间件(或其他解决方案)将请求从/service/css/style.css重定向到/css/_selfservice/style.css。但我就是搞不明白这是怎么做到的。。。

我现在拥有的:

...
var proxyOptions = proxyMiddleware('/service/css', {
    target: "/css/_selfservice",
    changeOrigin: true,
    pathRewrite: {
        '/service/css/' : ''      // remove old path
    }
});
...
browserSync( {
    server: {
        baseDir: './build',
        middleware: [ proxyOptions ]
    }

});

任何帮助都将不胜感激!

http-proxy-middleware是一个代理,它将(某些)请求代理到target服务器。它提供了一些额外的功能,可以在需要时重写路径。

已更正pathRewrite配置。您只需要设置正确的目标服务器。我曾经http://localhost:8000'在示例中:

var proxyOptions = proxyMiddleware('/service/css', {
    target: 'http://localhost:8000',
    changeOrigin: true,
    pathRewrite: {
        '^/service/css/' : '/css/_selfservice'      // rewrite path
    }
});

文档/配方:

https://github.com/chimurai/http-proxy-middleware/blob/master/recipes/pathRewrite.md


或者;如果不需要将请求代理到另一台服务器,您可以使用:https://www.npmjs.com/package/http-rewrite-middleware

var rewriteModule = require('http-rewrite-middleware');
var rewriteMiddleware = rewriteModule.getMiddleware([
    {from: '^/service/css/(.*)$', to: '/css/_selfservice/$1'}
]);