我有一个WordPress博客在反向代理(Apache)后面运行。
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显然没有找到/接受会话cookie,并且该行动未完成。
因此,我添加了这一行:
ProxyPassReverseCookiePath / http://192.168.101.11/blog/
(见Apache proxy cookies works only with the first app)
这似乎解决了这个问题。但是,我现在已经注意到,使用此设置,登录根本不起作用,但仅限于Safari和IE(在Opera,Firefox,Chrome中工作得很好)。我只是再次被重定向到登录页面。
一些其他信息:
wordpress_test_cookie
根本不是在Safari中创建的,只有像"__uc*"
等那样(对于博客本身)。如果没有ProxyPassReverseCookiePath
条目,它们就会被创建。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
ProxyPassReverseCookiePath
执行cookie的path
属性的转换。此属性仅包含路径,因此将完整URL传递给指令将不起作用。如果没有ProxyPassReverseCookiePath
指令,我不确定为什么它不起作用,但我认为Wordpress不尊重你设置的COOKIEPATH
。
正确的配置是:
ProxyPassReverseCookiePath /blog/ /
ProxyPassReverseCookieDomain 192.168.101.11 .blog.domain.com
这将改变你的cookie的path
和domain
,从而使你在wp-config.php
中所做的设置过时了。