您将重定向代码放错了位置。它需要在# BEGIN WordPress
部分通过将重定向代码放在WordPress前端控制器之后,它将永远不会被处理,除非请求是物理文件。
但是,您的第一次尝试是不正确的(它缺少对HTTPS的检查),因此将导致重定向循环(如果已执行)。
HTTP到HTTPS的标准格式如下:
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
然而,理想情况下,您还应该将其与规范的www/非www重定向相结合,以避免重复内容或多次重定向。例如,如果首选项是www(并且您没有其他子域),则如下所示:
# Redirect bare domain to www and HTTPS
RewriteCond %{HTTP_HOST} !^www\\.
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
# Redirect HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
UPDATE: 如果您首选非www版本,则可以将第一条规则更改为如下内容:
# Redirect www to non-www (and HTTPS)
RewriteCond %{HTTP_HOST} ^www\\.
RewriteRule (.*) https://example.com/$1 [R=301,L]
(假设您还更改了WordPress中的必要设置。)