前几天由于给公司的网站搭配SSL证书,就又给自己博客买了个COMODO的证书(某些东西不是很倾向免费)。

本来按照我以前的记忆,已经配置成功了,但是没有自动跳转到https的链接,开始我以为是七牛云存储问题,因为我用了不带www的域名做了CDN,所以就没有搭理。

过了几天才发现不对劲,是设置有问题,和七牛CDN云存储没关系。

然后才发现是.htaccess的强制跳转出了问题,我没有按照wordpress的写,而是写了大众写法,所以就错了。

申请证书就暂时不说了,直接说下wordpress的配置吧,以COMODO为例

1:把ssl用的44s端口写到 apache的配置文件里面,这样网站后台也就自动强制https了。

DocumentRoot /网站文件夹
SSLEngine on
SSLCertificateFile /ssl证书的crt路径
SSLCertificateKeyFile /ssl证书的key路径
SSLCertificateChainFile /ssl证书的crt路径

还有一种网站后台强制https的方法是修改wp-config.php文件
在文件里面新增

define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

2:修改之前网站里面的网址,让变成https
有2种方法,1是修改function.php文件,2是数据库批量替换,我是用的数据库替换
function.php文件:

function my_content_manipulator($content){
if( is_ssl() ){
$content = str_replace('http://老域名/', 'https://带s的域名/', $content);
}
return $content;
}
add_filter('the_content', 'my_content_manipulator');

数据库批量替换

UPDATE wp_options SET option_value = replace( option_value, 'http://不带s域名', 'https://带s域名' ) WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET post_content = replace( post_content, 'http://不带s域名', 'https://带s域名' ) ;
UPDATE wp_posts SET guid = replace( guid, 'http://不带s域名', 'https://带s域名' ) ;
UPDATE wp_comments SET comment_author_url = replace(comment_author_url, 'http://不带s域名','https://带s域名') ;

3:修改.htaccess文件,这里说下用了七牛CDN的域名,不能做301跳转

RewriteEngine On
RewriteCond %{HTTPS} !^on$ [NC] RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301] RewriteBase /
RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

好了,重启apache就可以了。