我有一个在反向代理 (Apache) 后面运行的 WordPress 博客。
httpd.vhosts.conf:
<VirtualHost *:80>
ServerName blog.domain.com:80
ServerAlias www.blog.domain.com
ProxyPass / http://192.168.101.11/blog/
ProxyPassReverse / http://192.168.101.11/blog/
</VirtualHost>
博客工作正常,我可以以管理员身份登录,但是当尝试保存设置或删除插件(并且发生 wp_redirect )时,我被重定向到登录页面,因为 wordpress 显然没有找到/接受 session cookie,并且操作没有完成。
因此,我添加了这一行:
ProxyPassReverseCookiePath / http://192.168.101.11/blog/
(参见 Apache proxy cookies works only with the first app )
这似乎解决了问题。 但是,我现在注意到,使用此设置,登录根本不起作用,但仅在 Safari 和 IE 中(在 Opera、Firefox、Chrome 中工作得很好)。我刚刚再次重定向到登录页面。
一些附加信息:
- 管理部分的 session cookie 和
wordpress_test_cookie
根本不会在 Safari 中创建,仅创建像"__uc*"
等(对于博客本身) 。如果没有ProxyPassReverseCookiePath
条目,它们就会被创建。 - 我激活了第三方网站的 Cookie(在两种浏览器中),但这并没有解决问题。
- 我已经这样配置了 WP-cookie:
wp-config.php
define('COOKIE_DOMAIN', '.blog.domain.com');
define('COOKIEPATH', '/');
define('SITECOOKIEPATH', '/');
define('ADMIN_COOKIE_PATH', SITECOOKIEPATH . 'wp-admin' );
最佳答案
解决了:
我在 cookie 路径配置中犯了一个小错误。它必须是:
ProxyPassReverseCookiePath http://192.168.101.11/blog http://blog.domain.com
关于WordPress 背后的反向代理 : Session-cookies not set in Safari & IE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21575725/