首页 > 解决方案 > 当使用外部 url 通过 BrowserSync 访问 WordPress 时,它会重定向到 localhost

问题描述

我正在本地系统上的 WordPress 网站上工作,并使用 Gulp 和 Browsersync 来自动刷新浏览器的更改。为此,我使用本地 Apache 服务器的代理。

这在我的本地机器上运行良好,但是当我尝试从外部 url 访问该站点时,我遇到了问题。我可以通过外部 url 很好地访问主页,但是当我点击任何链接时,即使 href 指向外部 url,它也会重定向到 localhost。

我知道 WordPress 总是提供完整的 url,这可能会导致链接绕过 browsersync,但为了确保不会发生这种情况,我已将 WP_HOME 和 WP_SITEURL 配置为指向 BrowserSync 侦听的端口 3000。

define( 'WP_HOME', 'http://flare-dev.local:3000' );
define('WP_SITEURL','http://flare-dev.local:3000' );

这是我的浏览器同步设置:gulpfile.js 中的相关部分

var browserSync = require( 'browser-sync' ).create();
var cfg = require( './gulpconfig.json' );
gulp.task( 'browser-sync', function() {
  browserSync.init( cfg.browserSyncWatchFiles, cfg.browserSyncOptions );
} );

gulpconfig.json 中的相关部分:

  "browserSyncOptions" : {
    "proxy": {
      "target": "localhost:80/"
    },
    "notify": false,
    "open": false,
    "host": "flare-dev.local",
    "port": 3000
  },
  "browserSyncWatchFiles" : [
    "./css/*.min.css",
    "./js/*.min.js",
    "./**/*.php"
  ]

我在 BrowserSyncOptions 中为代理、中间件和 rewriteRules 尝试了多种不同的设置,但没有任何改变这种行为。任何帮助将非常感激!

标签: wordpressgulp-browser-sync

解决方案


可能您正在 localhost:80 上运行并且您没有使用正确的代理 url。不要写 localhost:80/yoursite 而是只写 localhost/yoursite

browserSync.init({
        proxy: {
            target: "http://localhost/yoursite/"
        }
});

Rest you know, use reload with gulp.watch.

export const reload = (done) => {
    browserSync.reload();
    done();
}

休息一下,使用 reload 和 gulp.watch。例如 gulp.watch('**/*.php', reload);


推荐阅读