将WordPress从服务器复制到本地后始终重定向至HTTPS的问题求助
解决WordPress本地MAMP环境HTTP强制重定向HTTPS的问题
我之前处理过好几个类似的迁移后重定向问题,大概率是这些地方的设置残留导致的,你可以一步步排查:
检查wp-config.php文件
打开本地站点根目录的wp-config.php,看看有没有以下代码:define('FORCE_SSL_ADMIN', true); define('FORCE_SSL_LOGIN', true);如果有,把
true改成false,或者直接注释掉这两行。另外还要确认文件里的站点地址定义:define('WP_HOME','http://localhost:8888'); define('WP_SITEURL','http://localhost:8888');确保这里是
http而不是https,如果之前没有这两行,也可以手动加上覆盖数据库的设置。重新检查数据库选项
虽然你说没找到,但可能漏看了细节:- 打开MAMP的phpMyAdmin,找到你的WordPress数据库
- 查看
wp_options表(前缀可能不是wp_,根据你的实际设置调整) - 找到
siteurl和home这两个选项,确认它们的值是http://localhost:8888而不是https开头 - 另外可以搜索表中是否有带
ssl或https的选项,比如有些SSL插件(比如Really Simple SSL)会留下rsssl_enabled之类的键,把这些值改成0或者直接删除
清理.htaccess文件
服务器上的.htaccess可能带有强制HTTPS的重写规则,复制到本地后还在生效。打开根目录的.htaccess,看看有没有类似这样的代码:RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]把这些强制HTTPS的规则删掉或者用
#注释掉,保留WordPress默认的 permalink 规则即可:# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress清除浏览器缓存和Cookie
浏览器可能缓存了之前的HTTPS重定向规则,即使你改了服务器设置,它还是会自动跳转到HTTPS。试试用隐私/无痕窗口访问localhost:8888,或者手动清除当前站点的缓存和Cookie。检查主题和插件的残留代码
有些主题会在functions.php里添加强制HTTPS的代码,比如:function force_ssl_redirect() { if (!is_ssl()) { wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 301); exit(); } } add_action('template_redirect', 'force_ssl_redirect');找到这类代码并删除。另外,即使你禁用了插件,有些插件可能已经把重定向设置写到了数据库里,所以前面的数据库检查要仔细。
如果以上步骤都试过还是不行,你可以打开浏览器的开发者工具(F12),查看网络请求的重定向响应头,看看是哪里发起的重定向,这样能更精准定位问题。
内容的提问来源于stack exchange,提问作者Tim Kohlen
相关产品推荐
相关产品推荐

