WordPress中将HTTP强制为HTTPS(Apache Server)

您应该始终使用HTTPS加载网站。除了保护您的网站与站点用户之间的数据完整性外,HTTPS现在是许多新的浏览器API(例如Geolocation API)的要求。

HTTPS 在Google SERP排名信号中也有一定分量。因此,确保您的站点将始终从HTTPS加载至关重要。在本教程中,我们将向您展示如何使用Apache。

请注意,在执行此步骤之前,请确保已在服务器中安装并加载了SSL证书。否则,请查看我们的网站SSL证书新手指南中的教程。

如果已全部设置,则可以继续进行下一步。

HTTP到HTTPS

如果您的WordPress网站可以直接从访问,http://www.domain.com并且您要将所有访问者从HTTP定向到HTTPS,请尝试以下.htaccess代码之一。

选项1:
1个
2
3
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
选项2:
1个
2
3
RewriteEngine On
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
说明

这两个选项1和2将重定向任何人访问http://www.domain.comhttps://www.domain.com

选项1代码将检查连接是否为TLS / SSL,而选项2代码将检查站点是否在80默认情况下为HTTP端口号的端口上运行。

“非www”>“ www”和HTTP> HTTPS

如果要强制将“非www”强制为“ www”,而将HTTP强制为HTTPS,则上述.htaccess代码将无法满足要求。

为了明确起见,如果您的目标是重定向以下URL:

  • http://www.domain.com
  • http://domain.com

至:

  • https://www.domain.com

然后,您将需要使用下面的.htaccess代码。

1个
2
3
4
5
6
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
RewriteRule (.*) http://www.domain.com/$1 [R=301,L]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
说明

首先,它将所有“非www”重定向到“ www”,然后检查HTTPS,确保最终结果是:www + HTTPS。

“非www”>“ www”和HTTP> HTTPS(在子文件夹中)

现在,如果您像我们一样在一个子文件夹(即www.domain.com/blog/)中托管WordPress网站,则上述.htaccess代码将无法完美运行。

此处的目标是将所有URL(无论是首页还是帖子页)都重定向到www + HTTPS URL。

让我们看一下将“  ”重定向 “” 并将URL 重定向 “” 的URL的所有可能性。

条件1

我们需要重定向以下所有URL:

  • http://domain.com
  • http://www.domain.com
  • http://domain.com/blog/
  • http://www.domain.com/blog/

统一为以下网址:

  • https://www.domain.com/blog/
条件2

并发布以下网址:

  • http://domain.com/blog/example-page/
  • http://www.domain.com/blog/example-page/

至:

  • https://www.domain.com/blog/example-page/

当您的WordPress托管在子文件夹(Eg /blog/)中时,您将有两个.htaccess文件,即在子文件夹外部有一个.htaccess文件,而在安装WordPress的子文件夹内部有一个.htaccess文件。我们将需要同时更改它们两者。

.htaccess
博客/
博客/.htaccess
.htaccess子文件夹外

将以下代码插入子文件夹外部的.htaccess中。

1个
2
3
4
5
6
7
8
RewriteEngine On
### non-www to www, http to https
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^domain.com$ [OR]
RewriteRule (.*) https://www.domain.com/$1 [R=301,L]
### subfolder
RewriteRule ^$ /blog/ [R=301]

这是这段代码的作用。首先,确保使用HTTPS将域重定向到www,然后将其重定向到子文件夹。这将满足上面提到的#condition 1,但至少在条件#2之前还不起作用。

.htaccess在子文件夹内

接下来,我们将需要更改子文件夹中的.htaccess代码。

默认情况下,它看起来应该像这样:

1个
2
3
4
5
6
7
8
9
10
# 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

将以下.htaccess代码放在顶部和“#BEGIN WordPress”之前

1个
2
3
4
5
6
<IfModule mod_rewrite.c>
RewriteEngine On
## http to https
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

有了这两套代码,它将确保输入的所有URL都将包含在www和HTTPS中。

我敦促您不要在实时站点上实现此功能。在暂存/测试站点上尝试多次,确保在现场部署之前获得所需的结果。

还有一件事,为确保重定向正确无误,请确保在开始每个测试之前清除浏览器cookie和缓存。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/260168.html

(0)
上一篇 2022年5月23日
下一篇 2022年5月23日

相关推荐

发表回复

登录后才能评论