您应该始终使用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 OnRewriteCond %{HTTPS} !onRewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] |
选项2:
|
1个
2
3
|
RewriteEngine OnRewriteCond %{SERVER_PORT} ^80$RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] |
说明
这两个选项1和2将重定向任何人访问http://www.domain.com到https://www.domain.com
选项1代码将检查连接是否为TLS / SSL,而选项2代码将检查站点是否在80默认情况下为HTTP端口号的端口上运行。
注意:通常最好使用选项1代码。语法更具表现力,并且无论端口号如何,它都将重定向到HTTPS,因为从技术上讲,站点可以在port外部使用HTTP进行加载80。
“非www”>“ www”和HTTP> HTTPS
如果要强制将“非www”强制为“ www”,而将HTTP强制为HTTPS,则上述.htaccess代码将无法满足要求。
为了明确起见,如果您的目标是重定向以下URL:
http://www.domain.comhttp://domain.com
至:
https://www.domain.com
然后,您将需要使用下面的.htaccess代码。
|
1个
2
3
4
5
6
|
RewriteEngine OnRewriteCond %{HTTP_HOST} ^domain.com$ [NC]RewriteRule (.*) http://www.domain.com/$1 [R=301,L]RewriteCond %{HTTPS} !onRewriteRule (.*) 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.comhttp://www.domain.comhttp://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 httpsRewriteCond %{HTTPS} !onRewriteCond %{HTTP_HOST} ^domain.com$ [OR]RewriteRule (.*) https://www.domain.com/$1 [R=301,L]### subfolderRewriteRule ^$ /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 OnRewriteBase /RewriteRule ^index/.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . /index.php [L]</IfModule># END WordPress |
将以下.htaccess代码放在顶部和“#BEGIN WordPress”之前
|
1个
2
3
4
5
6
|
<IfModule mod_rewrite.c>RewriteEngine On## http to httpsRewriteCond %{HTTPS} !onRewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]</IfModule> |
有了这两套代码,它将确保输入的所有URL都将包含在www和HTTPS中。
我敦促您不要在实时站点上实现此功能。在暂存/测试站点上尝试多次,确保在现场部署之前获得所需的结果。
还有一件事,为确保重定向正确无误,请确保在开始每个测试之前清除浏览器cookie和缓存。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/260168.html