通过 wp-config.php 在 wordpress 上正确强制 SSL
如果我编辑wp-config.php
我应该添加:
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
但是,我的网站有.htaccess
规则,可以在整个网站上强制使用 https 和 www:
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{SERVER_PORT} 80 [OR]
RewriteCond %{HTTP_HOST} ^website.com
RewriteRule ^(.*)$ https://www.website.com/$1 [L,R=301]
我知道还有其他重写器可用,但又不确定哪个是正确的。
我应该在wp-config.php
使用以下哪三个
1 – 不带 isset(),带大括号,带 server_port
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$_SERVER['HTTPS'] = 'on';
$_SERVER['SERVER_PORT'] = 443;
}
2 – 没有大括号和没有 server_port?
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS'] = 'on';
3 – 需要大括号/更好还是“更正确”并且需要 server_port 吗?
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$_SERVER['HTTPS'] = 'on';
$_SERVER['SERVER_PORT'] = 443;
}
我在互联网上发现了一些其他略有不同的关于 wordpress SSL 的变体,但我无法弄清楚哪个是正确的/主要的……
解决方案
在这种情况下,PHP 代码根本不必处理 SSL。 这里应用了经典的SoC原则:如果您的代码没有明确地使用连接(在 WP 中它没有),您应该将协议检查留给 Web 服务器。
您还应该避免在重写规则中定义端口。 如果您不使用多站点 WP 设置,您可以尝试:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
我用过这个。 可以继续。
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS']='on';
如果您的服务器端口与 443 不同,您可以指定它。 否则,无需再次使用它。
更正的 .htaccess 规则:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://mysslcertdomainname.com/$1 [R,L]
通常,Wordpress 不需要您的代码示例 (1,2,3),但看起来您有某种基于问题的代理。
- 不好如果 Web 服务器未设置
HTTP_X_FORWARDED_PROTO
生成 PHP 警告(标准 php 配置)。 - 在检查值之前, Good Checks 变量存在。 不产生警告。
- 好最好**
** 作为一般规则,不鼓励更改_SERVER
变量(如SERVER_PORT
和HTTPS
),除非您有一个不太常见的设置(即在代理后面 – 这是任何此代码的唯一原因)。
为此,我必须注释掉$_SERVER['HTTPS']='on';
行周围的 if 语句行$_SERVER['HTTPS']='on';
我正在使用 Zevenet CE 5.9,它不提供 x-forwarded-for 或 x-forwarded-proto 的选项,因此为了将它放在反向代理后面,我们只是以这种方式强制 https :)。
如果您使用 docker 并避免手动配置(由人工),这对我有用:
if ( getenv('ENABLE_HTTPS') === "true" ) {
define( 'FORCE_SSL_ADMIN', true );
$_SERVER['HTTPS']='on';
}
我只需要传递一个新变量ENABLE_HTTPS
docker run -d --name wordpress -it --rm -p 80:80
-e DB_HOST=10.10.10.10:3306
-e DB_USER=root
-e DB_PASSWORD=secret
-e DB_NAME=wordpress
-e AUTH_KEY=$RANDOM_KEY
-e SECURE_AUTH_KEY=$RANDOM_KEY
-e NONCE_KEY=$RANDOM_KEY
-e LOGGED_IN_KEY=$RANDOM_KEY
-e AUTH_SALT=$RANDOM_KEY
-e SECURE_AUTH_SALT=$RANDOM_KEY
-e LOGGED_IN_SALT=$RANDOM_KEY
-e NONCE_SALT=$RANDOM_KEY
-e WP_DEBUG=true
-e DISABLE_WP_CRON=true
-e ENABLE_HTTPS=true wordpress:5.7.2
在functions.php中使用此代码
add_action('template_redirect', 'f_force_ssl');
function f_force_ssl()
{
if (!is_ssl())
{
wp_redirect('https://' . $_SERVER['HTTP_HOST'] .
$_SERVER['REQUEST_URI'], 301);
exit();
}
}
你可能还喜欢下面这些文章

//demo.imwpweb.com/wpnovo/多设备支持主题支持PC和移动端界面,独立设置,互不干扰。移动端首页(右)图:小说页面PC端和移动端的展示付费订阅主题支持付费订阅功能,支持付费单章订阅、整本小说订阅模式。

什么是内链内链,顾名思义就是在同一网站域名下的内容页面之间的互相链接(自己网站的内容链接到自己网站的内部页面,也称之为站内链接)。自动内链工作原理简单来说,我们设定一些词表以及词表对应的链接,比如词是wordpress插件,链接是http

这款插件的核心功能就是一点:找出文章中的违禁词、敏感词等措辞不当的词语,替换成你设置的更合适的词或者直接替换“*”号。请注意,需要同时下载站长工具箱和违禁词屏蔽插件,安装插件时也需要两个插件同时安装。

2、自动生成的图片并非真实在磁盘中的图片,而是动态生成的,如果保存到磁盘会占用大量空间,这个空间没必要浪费,因此修改主题代码,直接将缩略图的地址改为wpac自动生成的缩略图地址是一个非常好的方案。

wprec利用相似度算法计算每篇文章之间的相似度,找到与当前文章最相似的一些文章,展现在文章底部作为相关文章。我们知道,相关推荐插件推荐的原理是根据当前文章的特征(文章的高权重标签),从文章库中召回相关文章,再根据相关性评分,最后选出To