WordPress SSL安全组证书配置后 后台正常 前台重定向死循环

2021.04.27 分享 1813 人浏览 留言

不知道什么原因,一般wordpress开启ssl都是很简单的,但是有时候还是会碰到莫名其妙的死循环。往上google 百度了一大圈,看别人都是前台https访问正常,后台访问重定向死循环,他们的解决方法是装 Really Simple SSL 插件 或者修改wp-config.php配置

$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

但这个对我这个问题没什么卵用。

后面搜了一大圈,最终找到解决方案,至于原因不明(个人猜测是网站本地部署后,搬移到线上配置问题,导致template_redirect函数死循环,但http又没什么问题),这里记录下修改方法。

注释 wp-include/template-loader.php 13行 do_action( 'template_redirect' );即可。

同时附上开启全站ssl的.htaccess代码

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{SERVER_NAME}$1 [L,R=301]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Cloudflare中死循环

服务器自己装证书,然后再开cloudflare SSL,模式选full

wp-config.php加$_SERVER['HTTPS']='on'; ->这个不确定需不需要

貌似用cloudflare的证书,然后打开Always Use HTTPS也是可以

 

还有一个原因就是安装 memcached 和 object-cache.php后,是缓存内存数据库的时候,数据库前缀都是同一个(默认的_wp)导致。

解决方案:

  1. 修改数据库表前缀
    以wp_前缀改成_hl为例 执行以下SQL

    RENAME TABLE wp_comments TO hl_comments;
    RENAME TABLE wp_commentmeta TO hl_commentmeta;
    RENAME TABLE wp_links TO hl_links;
    RENAME TABLE wp_options TO hl_options;
    RENAME TABLE wp_postmeta TO hl_postmeta;
    RENAME TABLE wp_posts TO hl_posts;
    RENAME TABLE wp_terms TO hl_terms;
    RENAME TABLE wp_termmeta TO hl_termmeta;
    RENAME TABLE wp_term_relationships TO hl_term_relationships;
    RENAME TABLE wp_term_taxonomy TO hl_term_taxonomy;
    RENAME TABLE wp_usermeta TO hl_usermeta;
    RENAME TABLE wp_users TO hl_users;
    UPDATE hl_options SET option_name = REPLACE(option_name, 'wp_', 'hl_') WHERE option_name LIKE 'wp_%';
    UPDATE hl_usermeta SET meta_key = REPLACE(meta_key, 'wp_', 'hl_') WHERE meta_key LIKE 'wp_%';

    然后在wp-conconfig.php中修改对应的前缀 $table_prefix = 'hl_';
    注意看有没有其他插件生成的表,需要额外替换

  2. 在不同站点的 wp-config.php 文件定义不同的 WP_CACHE_KEY_SALT 值,
    define('WP_CACHE_KEY_SALT', 'xxx'); //不同站设成不一样

文章地址:https://huilang.me/wordpress-ssl-redirect-loop/

回复本文

您的电子邮箱地址不会被公开。 必填项已用 * 标注

icon_wink.gif icon_neutral.gif icon_mad.gif icon_twisted.gif icon_smile.gif icon_eek.gif icon_sad.gif icon_rolleyes.gif icon_razz.gif icon_redface.gif icon_surprised.gif icon_mrgreen.gif icon_lol.gif icon_idea.gif icon_biggrin.gif icon_evil.gif icon_cry.gif icon_cool.gif icon_arrow.gif icon_confused.gif icon_question.gif icon_exclaim.gif