首先,我将解释不使用 .htaccess 文件的过程:
假设你有你的 wordpress 网站,说“http://example.com”
- 安装 ssl 证书(按照
发行人)
- 转到您的数据库; wp_options 表和更改
'siteurl' 和 'home' 选项值以 https 开头,而不是
http 和 offcourse 保存更改。
- 登录到您的 WordPress 管理面板,然后转到 设置 » 常规。单击保存选项。这将确保在其他任何需要的地方更正网站网址。
然后转到设置 » 永久链接并点击保存以确保所有帖子链接都正常工作。
安装此插件Search & Replace 并激活。该插件应该通过更新路径来帮助修复图像和断开的链接,而无需您编写代码;这很不言自明。
- 安装此插件Easy HTTPS Redirection 并激活。无论什么,此插件都会将所有流量从 http 重定向到 https;您还可以定义不想强制 https 的页面。
是的,我同意你的观点,WP Force SSL 插件对网站有很大的好处,我已经尝试过了,但我没有学到任何教训,但我还是会尝试一下。此时,您的“https://example.com”将完美运行
其次,我将解释在不使用任何插件的情况下执行相同的过程。我的假设和上面一样。
- 重复上述第 1 步和第 2 步。
-
不要离开你的数据库,我们需要在 MySQL 中使用 SQL Query 进行搜索和替换。我在下面的 SQL 查询中列出了一些需要替换的东西
UPDATE wp_posts
SET guid = replace(guid, 'http://example.com', 'https://example.com');
UPDATE wp_posts
SET post_content = replace(post_content, 'http://example.com', 'https://example.com');
UPDATE wp_postmeta
SET meta_value = replace(meta_value,'http://example.com', 'https://example.com');
注意:根据您拥有的表,对每个表进行搜索和替换总是好的
-
要从 http 重定向到 https,我们将使用 .htaccess 文件。在您的 .htaccess 文件中使用 mod_rewrite 尝试以下操作
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
或在
中给出的各种方法中的任何一种
http://www.askapache.com/htaccess/http-https-rewriterule-redirect.html
如果您的提供商禁用了.htaccess,您也可以在 PHP 中解决此问题(这不太可能,因为您要求它,但无论如何)
if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on') {
if(!headers_sent()) {
header("Status: 301 Moved Permanently");
header(sprintf(
'Location: https://%s%s',
$_SERVER['HTTP_HOST'],
$_SERVER['REQUEST_URI']
));
exit();
}
}
到目前为止,这两种方法 https 应该都能正常工作。
然后,要将非 www 重定向到 www,请直接在 .htaccess 文件中的 RewriteEngine On 下面使用以下代码:
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
对于 www 到非 www,使用:
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
如果您使用的是 Windows IIS 服务器,上述代码将不适合您。如果需要,我可以分享过程。