我过去很幸运,因为我必须将网站从HTTP迁移到HTTPS并安装一个SSL证书,我的主机会这样做,一切正常。
我现在正在与主持人合作,我认为我需要更多的动手。
我在Mysql和Apache堆栈上使用Wordpress。什么是迁移它的正确方法。通过数据库进行搜索和替换,然后通过.htaccess文件重定向?
目前,我有“https://example.com”工作。但是,对于http和https到“https://example.com”,处理从www到非www的重定向的正确方法是什么。有Wordpress插件“强制”SSL但我听说这些可以做出意想不到的事情。
由于
答案 0 :(得分:1)
首先,我将在不使用.htaccess文件的情况下解释该过程: 假设你有wordpress网站说“http://example.com”
然后转到设置»永久链接,然后点击保存以确保所有帖子链接都正常运行。
安装此插件Search & Replace并激活。这个插件应该通过更新路径来帮助修复图像和断开链接,而无需编写代码;这是非常自我解释的。
是的,我同意你的观点,WP Force SSL插件确实对网站产生了奇迹,我已经尝试过了,但是我学到了很多教训,但我仍然会尝试一下。此时,您将“https://example.com”完美地运作
其次,我将解释在不使用任何插件的情况下执行相同的过程。我的假设与上述相同。
不要离开你的数据库,我们需要在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
文件
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服务器,则上述代码将无法使用。如果需要,我可以分享程序。