启用WordPress多站点后出现ERR_TOO_MANY_REDIRECTS错误的求助
WordPress子目录多站点后台ERR_TOO_MANY_REDIRECTS问题修复
问题描述
主站点后台http://54.183.207.102/wp-admin可正常访问,但子目录站点后台http://54.183.207.102/site1/wp-admin触发ERR_TOO_MANY_REDIRECTS错误,浏览器检测到多次重定向循环。
当前配置信息
.htaccess 代码
# BEGIN WordPress # The directives (lines) between "BEGIN WordPress" and "END WordPress" are # dynamically generated and should only be modified via WordPress filters. # Any changes to the directives between these markers will be overwritten. RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] # Add a trailing slash to /wp-admin RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L] RewriteRule . index.php [L] # END WordPress
wp-config.php 代码
define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', false); define( 'WP_HOME', 'http://' . $_SERVER['HTTP_HOST'] . '/' ); define( 'WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] . '/' ); define( 'WP_AUTO_UPDATE_CORE', 'minor' ); define('WP_ALLOW_MULTISITE', true); define( 'MULTISITE', true ); define( 'SUBDOMAIN_INSTALL', false ); define( 'DOMAIN_CURRENT_SITE', '54.183.207.102' ); define( 'PATH_CURRENT_SITE', '/' ); define( 'SITE_ID_CURRENT_SITE', 1 ); define( 'BLOG_ID_CURRENT_SITE', 1 ); define('COOKIE_DOMAIN', false); define('ADMIN_COOKIE_PATH', '/'); define('COOKIEPATH', ''); define('SITECOOKIEPATH', ''); /* That's all, stop editing! Happy publishing. */
错误原因
- 重定向规则冲突:现有.htaccess中的规则对多站点路径处理逻辑有误,导致子目录后台请求被反复重定向。
- 全局URL设置干扰:动态定义的
WP_HOME和WP_SITEURL会覆盖子站点的独立URL配置,引发路径匹配错误。 - Cookie配置异常:部分Cookie参数设置混乱,干扰多站点的会话识别,加重重定向循环。
修复步骤
1. 替换.htaccess为标准多站点配置
用以下代码覆盖现有.htaccess内容,确保子站点路径被正确解析:
# BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] # Add trailing slash to wp-admin RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] # Handle multisite uploaded files RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L] # Skip existing files/directories RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] # Route multisite core files RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L] RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L] RewriteRule . index.php [L] # END WordPress
2. 调整wp-config.php配置
- 删除全局的
WP_HOME和WP_SITEURL定义(多站点下这些参数由数据库自动管理):// 移除以下两行 // define( 'WP_HOME', 'http://' . $_SERVER['HTTP_HOST'] . '/' ); // define( 'WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] . '/' ); - 简化Cookie配置,统一路径参数:
define('COOKIE_DOMAIN', ''); define('ADMIN_COOKIE_PATH', '/'); define('COOKIEPATH', '/'); define('SITECOOKIEPATH', '/');
3. 清除浏览器缓存与Cookie
强制清除当前浏览器的缓存及该站点相关Cookie,避免旧的重定向缓存或无效会话残留。
4. 验证子站点数据库配置
登录主站点后台,进入网络管理 > 站点 > site1 > 编辑,确认子站点的**站点地址(URL)**为http://54.183.207.102/site1,配置无误。
验证修复
完成上述步骤后,重新访问http://54.183.207.102/site1/wp-admin,检查重定向错误是否消除。若问题持续,可查看wp-content/debug.log文件,根据日志中的具体错误信息进一步排查。
内容的提问来源于stack exchange,提问作者Ayush Baghel
相关产品推荐
相关产品推荐

