【经验随笔】两种修复wordpress后台无限301/302方法

原因(来自chatGPT):

✅ 为什么会无限重定向(301 / 302)?

📌 重点:WordPress 判断当前请求是否是 HTTPS,是靠 $_SERVER['HTTPS']$_SERVER['SERVER_PORT'] == 443

但你的网站结构是这样的:

浏览器(访问 https://joyce09.com) 

Cloudflare(加密 HTTPS)

你的服务器(实际接收到的请求是 HTTP)

所以 WordPress 的视角是这样的:

$_SERVER['HTTPS'] = null; // 它不知道用户原来是 HTTPS 访问的

这时候你后台设置的是 https://joyce09.com,WordPress就会:

“你访问的是 HTTP?那我重定向你去 HTTPS 吧!”(302 重定向)

➡️ 但 Cloudflare 发来的本来就已经是 HTTPS!于是形成了一个死循环。


✅ 为什么加上这段代码就有用了?

if (
isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
$_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https'
) {
$_SERVER['HTTPS'] = 'on';
}

这段代码的作用是:

✅ 利用 Cloudflare 提供的请求头 X-Forwarded-Proto 来判断原始请求是不是 HTTPS。

Cloudflare 会自动在请求头里加上:

X-Forwarded-Proto: https

所以上面的 PHP 代码就会告诉 WordPress:

“别担心,虽然你看到的是 HTTP,但我确认用户原始是用 HTTPS 访问的。”

于是 WordPress 就不会继续尝试重定向了,问题自然解决。

因此 这种问题一般只出现在反代/使用了cdn的站点中

可以使用下面两端代码解决,一般第一段就行,第二段是gpt给的,会判断请求头,更智能但没必要,两段都是加在wp-config.phprequire_once ABSPATH . 'wp-settings.php';的前面(一般是最后一段)

// 强制后台使用 HTTPS 协议访问
define('FORCE_SSL_ADMIN', true);

// 强制登录页(wp-login.php)使用 HTTPS
define('FORCE_SSL_LOGIN', true);

// 告诉 WordPress:当前请求使用的是 HTTPS
$_SERVER['HTTPS'] = 'ON';

// 禁用 JS/CSS 合并(防止后台加载异常)
define('CONCATENATE_SCRIPTS', false);

// 定义 WordPress 的绝对路径常量 ABSPATH,如果尚未定义
if ( ! defined( 'ABSPATH' ) ) {
	define( 'ABSPATH', __DIR__ . '/' );
}

// 判断是否是通过代理来的 HTTPS 请求(Cloudflare、CDN、反代)
if (
    (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') ||
    (!empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] === 'on')
) {
    $_SERVER['HTTPS'] = 'on';
}

// 强制后台和登录走 HTTPS
if (!defined('FORCE_SSL_ADMIN')) {
    define('FORCE_SSL_ADMIN', true);
}
define('FORCE_SSL_LOGIN', true);

// 禁用 JS/CSS 合并(防止后台加载异常)
define('CONCATENATE_SCRIPTS', false);
如果您觉得本文对您有帮助,可以支持下博主进行创作(一分也是爱啊啊啊啊啊啊)
博主QQ:3784773930(点击跳转qq添加)
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇