我有一个带有Docker的 WordPress开发环境。这么简单,只有一个docker与Wordpress和MySQL组成。
这是我的docker-compose文件。一切都很完美,起初我可以在 localhost:8080
中看到我的WordPressversion: '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
我还与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是我的操作系统)的错误或配置错误
答案 0 :(得分:0)
使用此代码更改浏览器同步选项:
const browserSync = require('browser-sync').create(); // npm install browser-sync --save-dev
const
// source and build folders
dir = {
watch: 'source-theme/',
build: 'build-theme/'
},
// Browsersync options:
const syncOpts = {
port: 3000,
proxy: 'http://site1.ss',
files: dir.watch + '**/*',
open: true,
notify: false,
ghostMode: false,
ui: {
port: 8001, //default port 8080
weinre: {
port: 8002 //default weinre port 9090
}
},
};
// browser-sync task
gulp.task('browserSync', () => {
browserSync.init(syncOpts);
});
答案 1 :(得分:0)
我刚才遇到了同样的问题,并解决了。所以这是我的发现。
WordPress使用Host
标头确定流量的来源,并根据配置集将其重定向。
由于您使用BrowserSync作为代理,BrowserSync会将localhost:8080
标头值为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
应该这样做。至少为我工作。