wordpress - 本地主机:8080始终重定向到本地主机:3000

标签 wordpress macos docker localhost browser-sync

我有一个Docker 的 WordPress开发环境。如此简单,只有docker与Wordpress和MySQL组成。

这是我的docker-compose文件。一切都完美无缺,起初我可以在本地主机上看到我的WordPress:8080

version: '3.1'

services:

  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8080:80
    volumes:
      - /Users/ivan/Developer/theme:/var/www/html/wp-content/themes/theme
    environment:
      WORDPRESS_DB_PASSWORD: password

  mysql:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password

我还使用gut_strong与Gulp浏览器同步
来实时重新加载站点。我在浏览器同步设置中配置了代理,然后可以通过实时重新加载在 localhost:3000 和my_local_ip:3000中看到我的WordPress。
browsersync: {
    browser: 'google chrome',
    proxy: "localhost:8080",
},

问题是我在WordPress网址设置中做了一些更改(然后我将其还原了),但是现在重定向工作不正常。
  • 如果我尝试转到localhost:8080或my_local_ip:3000,则浏览器将始终重定向到localhost:3000并显示“重定向过多”错误。 (即使使用BrowserSync和Docker关闭,也可以使用)。
  • 在运行Docker和BrowserSync的情况下,my_local_ip:3000 / wp-admin和localhost:3000 / wp-admin 可以完美地实现,但我看不到我的博客。 localhost:3000始终显示错误

  • 我已经尝试清除浏览器缓存,但没有解决。我现在不是 Docker BrowserSync MacOS 的错误或错误配置(High Sierra是我的操作系统)

    最佳答案

    我刚才遇到了同样的问题,并已解决。所以这是我的发现。

    WordPress使用Host header 确定流量的来源,并根据配置集将其重定向。

    由于您将BrowserSync用作代理,因此BrowserSync会以localhost:8080 header 值为Host的形式向localhost:8080发送请求,而不是从何处发送请求。

    所以首先要做的是让BrowserSync使用正确的主机。我们可以像这样从原始请求中获取主机

    proxy: {
        target: 'http://localhost:8080/',
        proxyReq: [
            function(proxyReq, req, res) {
                    proxyReq.setHeader('Host', req.headers.host);
            }
        ]
    },
    

    接下来确保WordPress Address (URL)
    Site Address (URL)中正确设置了WP-Admin -> Settings -> General网址
    [host:port]/wp-admin/options-general.php
    那应该做。至少为我工作。

    关于wordpress - 本地主机:8080始终重定向到本地主机:3000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49007302/

    相关文章:

    javascript - 为 WordPress WPBakery Visual Composer Post Grid 调用 JavaScript 自定义添加类?

    php - WordPress 的 super 菜单

    swift - Realm + NSTableView + NSArrayController

    objective-c - Cocoa:NSOutlineView 未突出显示为蓝色条

    docker - 从 docker 安装的 Nextcloud。如何下载和安装自定义应用程序?

    node.js - 如何访问在同一Pod中运行的NodeJS服务器?

    javascript - eekTo() 不是函数 YouTube iframe API 错误

    amazon-web-services - 如何降低亚马逊Cloudfront成本?

    在 MAC 上编译 SDL

    docker - Docker Go SDK ContainerExecAttach返回时间戳