【发布时间】:2014-09-28 13:25:37
【问题描述】:
在了解到如果 CDN 是自托管的,裸 WP 域将出现“无 cookie 子域”问题后,我需要/不得不将我的 MultiSite 上的根站点切换到 www。
我关注了this guide:
编辑 wp-config.php 并更改 从 定义(‘DOMAIN_CURRENT_SITE’,‘example.com’); 到 定义(‘DOMAIN_CURRENT_SITE’, ‘www.example.com’);
从https://github.com/interconnectit/Search-Replace-DB 获取搜索和替换脚本,并阅读网站上的使用说明。
除了访问网络管理员仪表板之外,一切都按预期工作。
所有站点的仪表板(使用子域,而不是文件夹)和永久链接结构在根站点 (www.example.com) 和子域站点(子域.example.com)。但是,当我尝试访问 Network Admin(即 http://www.example.com/wp-admin/network/)时,会出现 302 重定向循环。
同样,所有子域站点的仪表板都正常运行,但网络仪表板却不正常。
我在 Google 和 SO 上做了一些窥探,但没有任何效果(或适合这种情况)。我认为这可以在 .htacces 中解决,但我对此并不擅长,因此我们将不胜感激任何帮助或建议!
以下是我的配置:
.htaccess:
. . .
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# Disable trace and track
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]
# Forbid Proxy comment posting
RewriteCond %{REQUEST_METHOD} =POST
RewriteCond %{HTTP:VIA}%{HTTP:FORWARDED}%{HTTP:USERAGENT_VIA}%{HTTP:X_FORWARDED_FOR}%{HTTP:PROXY_CONNECTION} !^$ [OR]
RewriteCond %{HTTP:XPROXY_CONNECTION}%{HTTP:HTTP_PC_REMOTE_ADDR}%{HTTP:HTTP_CLIENT_IP} !^$
RewriteCond %{REQUEST_URI} !^/(wp-login.php|wp-admin/|wp-content/plugins/|wp-includes/).* [NC]
RewriteRule .* - [F,NS,L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
</IfModule>
# END WordPress
. . .
...在我的 config.php 中:
. . .
/* Multisite */
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'www.example.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
define('ADMIN_COOKIE_PATH', '/');
define('COOKIE_DOMAIN', '');
define('COOKIEPATH', '');
define('SITECOOKIEPATH', '');
. . .
【问题讨论】:
-
如果有人知道以下是一个坏主意,请随时评论原因。 Thnx! 我在 .../wp-admin/network/admin.php 中注释了第 18 行: $redirect_network_admin_request = 0 !== strcasecmp( $current_blog->domain, $current_site->domain ) || 0 !== strcasecmp($current_blog->path, $current_site->path);显然,每次更新我都需要这样做:P 但是直到有更好的解决方案......
标签: .htaccess redirect http-status-code-302 wordpress