使用重定向 301 将 Wordpress 迁移到 HTTPS

Migrating Wordpress to HTTPS with redirect 301

我刚刚将我的 wordpress 站点移动到与以前相同的服务器上的 HTTPS,一切正常。我设置了重定向 301 规则并使其正常工作,但是在检查 "flow" 流量时,我注意到从 http://www.domainhttps://domain 我至少有两个重定向,而不是只有一个。从 http://domainhttps://www.domain 到同一个 https://domain 页面不会发生这种情况。

我使用的规则是:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

我用了this link to test redirects count

我害怕失去 and/or 的 google 排名。任何建议表示赞赏。

您可以在 wp-config.php 中设置站点 url 和 wp-content(主页)url 常量,如下所示:

define('WP_SITEURL', 'https://example.com'); 
define('WP_HOME', 'https://example.com');

(确保此规则没有重复项,并将其添加到文件中的 'stop editing, happy blogging' 注释之前。此外,备份 您的旧文件,然后再更改它.)

然后我会建议将您的 .htaccess 规则分开,因为您当前的设置可能无法在更新后继续存在,因为您已经删除了 # END WordPress 语句,如果启用了漂亮的永久链接,WP 核心就需要它。

#REDIRECT TO HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{ENV:HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
</IfModule>

在其正下方是标准的 WordPress 部分:

# 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

这就是我设置许多网站的方式,它总是工作正常,有些服务器确实喜欢它们以不同的顺序,但建议首先转到 https,然后提供 WP 文件,理想情况下你的网络服务器是设置为仅通过 https 为您的网站提供服务,这将有效地消除此解决方法的需要:

HTTP_Strict_Transport_Security

有一个名为 Really Simple SSL 的插件可以很容易地做到这一点,根据我的经验,当我转向 HTTPS 时,我失去了一些 google 排名,但随着时间的推移你会再次获得排名,

发生的情况是,您所有的 HTTP 定位链接都将在 google 中消失,然后所有 HTTPS 链接都将出现,所以在某种程度上就像拥有了一个新网站

我推荐使用SRDB工具。我不知道你是否知道。使用这个很棒的工具,您可以全局更改数据库中的 url。这是 GitHub search replace database 上的 link。每次我使用 SSL 证书迁移 WP 站点时,我都会像您写的那样在 .htaccess 中使用此工具和类似代码。我总是对此有 HTTP 200 响应。 只需通过浏览器在 ftp 和 运行 索引上复制 srdb。您必须设置您的数据库连接,并将所有出现的旧域替换为带有 h​​ttps 的新域。 希望对您有所帮助。

两个重定向是:

非 https www.domain 到 https www.domain 由 htaccess

完成

www.domain 到由 WP 完成的域(均为 https)。

您应该重定向到非 www 域。在您的重定向规则之前添加如下内容:

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ https://%1/ [R=301,L]