voidisprogramer.com 全站启用HTTPS啦~

voidisprogramer.com 全站启用HTTPS啦~

域名备案总算OK了(生无可恋的眼神) 那么下一件事肯定是给我的WOWO启用HTTPS啦~

首先申请了一个免费证书 大家搜索WoSign 免费证书 , 就可以找到能用两年的免费SHA256加密的合法证书哦

然后给我的httpd开启https服务

yum install mod_ssl #Install httpd-ssl mod first

因为之前没有安装mod_ssl,先安装好, 然后 在/etc/httpd.conf/下就有一个默认生成好的配置文件 ssl.conf我们打开, 修改相应的SSL证书路径, 设置为我们从上面获取到的证书的路径,然后 重启Apache, 通过https 访问https://voidisprogramer.com 发现OK~….. 不过 同时也发现了, 竟然 全站CSS还有JS图片都没法加载出来QAQ, Chrome F12看一下, 发现这些资源还都是用https://120.27.97.96这个路径去加载的,难怪加载不出来= =(证书只绑定了https://voidisprogramer.com 和 https://www.voidisprogramer.com两个域名 因而= =IP直接访问肯定不行啦)  这个问题倒不难解决, 去Wordpress后台, 的设置, 把WordpressURL, 和 站点URL都改成了 https://voidisprogramer.com即可~  [然后我发现就算改完首页banner图还有背景图的URL也没变,于是手动更新一下这两个图片的URL, 后来我发现如果把下面的步骤搞完这个根本不用管的说-0-]

恩~~ https域名访问看来没问题了~~ 那么 试试http可以访问么~ , 果然= =!http访问的话,不会定向到https下, 于是乎,下一个要解决的问题就是, 如何把http 还有 IP的直接访问,都定向到https去,这个使用了rewrite mod + NameVirtualHost的限制来实现. 首先, 我们在 /etc/httpd/conf.d/下面新建一个config文件”redirect-direct-ip-visit.conf” 然后 加入如下配置:

NameVirtualHost 120.27.97.96
<VirtualHost 120.27.97.96>
        DocumentRoot /var/www/html/redirect-ip-http-to-https/
        ServerName 120.27.97.96
</VirtualHost>

这里,我们将所有通过IP的访问, 把他们的DocumentRoot设置为了非wordpress站点所在的DocumentRoot,然后 在这个目录里新建一个 .htaccess对URL进行重写, 即可完成重定向, 重写的规则如下:

RewriteEngine On
RewriteCond /var/www/html/%{REQUEST_FILENAME} !-f
RewriteRule ^(.+) https://voidisprogramer.com/$1
RewriteRule https://voidisprogramer.com/index.html https://voidisprogramer.com

这几句 的意思一点点解释一下

首先开启了Rewrite功能,

然后 如果用户访问的时候,遇到找不到的文件(通过IP,还有http访问必然找不到, 因为在相应的DocumentRoot里只有.htaccess这一个文件,其他的任何请求都是找不到的, ) 这时候, 将请求的URL重定向为 https://voidisprogramer.com/下面的相应文件, 这里最后一句话 ,是因为 ,如果直接访问http://voidisprogramer.com那么, 不加最后一行的配置的话, 会导致重写规则定向到https://voidisprogramer.com/index.html, 这是一个不存在的路由, 因而, 将这个请求特殊处理一下, 如果定向到了index.html那么就直接定向到/

好了~~~ 到了这里, 访问 IP/XXX.html 还是 http:XXX/XXX.html都已经转到 https://XXX/XXX.html了 ~~ 看起来好像没什么问题了呢 QWQ, 不过 当我打开Chrome Console,发现竟然还有问题 = =!

QQQ

竟然是萌萌的夏娜酱的gif URL依旧是 Direct IP的QAQ!! 这个夏娜酱是通过一个插件 “伪春菜” 诞生的, 于是我去尝试修改伪春菜的后台Config,想着,给夏娜的URL换一个地址不就可以了么 然而- – 让我大吃一鲸的是!  竟然没有提供更换皮肤地址的选项!!!!

ChiJing

当然可以选择删掉这个伪春菜再建一个 = = 然而!! 我怎么可能做出那种丧尽天良的事情! 于是乎, 开始从数据库入手

打开wordpress的数据库,看看有没有weichuncai这个插件的相应数据表吧 ,然后我看到的是这样的:

MariaDB [wordpress]> show tables;
+----------------------------+
| Tables_in_wordpress        |
+----------------------------+
| ahc_browsers               |
| ahc_countries              |
| ahc_hits                   |
| ahc_keywords               |
| ahc_recent_visitors        |
| ahc_refering_sites         |
| ahc_search_engine_crawlers |
| ahc_search_engines         |
| ahc_searching_visits       |
| ahc_title_traffic          |
| ahc_visitors               |
| ahc_visits_time            |
| wp_commentmeta             |
| wp_comments                |
| wp_dxgames                 |
| wp_dxservers               |
| wp_links                   |
| wp_options                 |
| wp_pmxi_files              |
| wp_pmxi_history            |
| wp_pmxi_imports            |
| wp_pmxi_posts              |
| wp_pmxi_templates          |
| wp_postmeta                |
| wp_posts                   |
| wp_rpg_races               |
| wp_statistics_exclusions   |
| wp_statistics_historical   |
| wp_statistics_pages        |
| wp_statistics_search       |
| wp_statistics_useronline   |
| wp_statistics_visit        |
| wp_statistics_visitor      |
| wp_term_relationships      |
| wp_term_taxonomy           |
| wp_termmeta                |
| wp_terms                   |
| wp_usermeta                |
| wp_users                   |
| wsw_404_log                |
+----------------------------+

= = 泥煤啊! weichuncai这个插件没有单独一个数据表啊擦! (通过这里来看貌似大部分插件都没有单独一个数据表) ,没办法 , 我不可能一个个表去查看, 而且,就算能查找, 该查哪个字段也是不知道的TAT,索性去看weichuncai的源码了

在wordpress目录下找到 wp-content/plugins/weichuncai 这就是这个插件的目录了 ~~ 其中的 sm-options.php,通过查看, 我们发现 ,用户自己定义的URL地址是通过一个叫做 $wcc[‘userdefccs’]这样一个变量保存的, 然后查看了一下, 这个变量是如何被获取到的 发现是通过49行

$wcc = get_option('sm-weichuncai');

这里得到的, 然后去找get_option这个函数,发现不是weichuncai插件定义的函数, 于是 查找了一下Wordpress的开发者文档中, 找到了对应的说明 https://codex.wordpress.org/Function_Reference/get_option 根据Document所说,找到了wp-includes/option.php.  这个文件进行查看,  通过查看这个文件, 查看到了, get_options是通过查看数据库内的 $wpdb->options表 , 获取相应的options信息返回给用户,

$row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", $option ) );

这里出现了wpdb这个对象, 感觉这个对象应该是很重要的一个对象, 因而使用grep查找了这个对象在哪里定义的,  找到了 wp-db.php 这个文件, 打开发现是$wpdb整个类的定义,  然后, 又在options这个定义的附近发现了注释: “WordPress Options Table” , 这个应该就是$wpdb->options对应的表了~~ 也就是伪春菜的配置信息所在的表,  再查看一次数据库内的数据表发现 有一个表名为”wp_options” 于是选中这个表, 查询我们要的信息:

SELECT * from wp_options where option_name = 'sm-weichuncai';

这里的option_name列是通过desc wp_options得到的表结构,进而得到列名, 然后, 查询的字段是通过, 上面伪春菜插件中的代码 get_options(‘sm-weichuncai’) 得到的, 查询后,果然得到了想要的结果~~

+-----------+---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+
| option_id | option_name   | option_value                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | autoload |
+-----------+---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+
|       209 | sm-weichuncai | a:11:{s:6:"notice";s:26:"Hmm,, 菠萝包超好吃!!";s:9:"adminname";s:0:"";s:8:"isnotice";N;s:4:"ques";a:5:{i:0;s:9:"早上好";i:1;s:9:"中午好";i:2;s:9:"下午好";i:3;s:9:"晚上好";i:4;s:6:"晚安";}s:3:"ans";a:5:{i:0;s:12:"早上好~";i:1;s:12:"中午好~";i:2;s:12:"下午好~";i:3;s:12:"晚上好~";i:4;s:9:"晚安~";}s:8:"lifetime";a:4:{s:8:"rakutori";i:1459067732;s:4:"neko";i:1459067732;s:11:"chinese_moe";i:1459067732;s:5:"Shana";i:1459068272;}s:3:"ccs";a:3:{i:0;s:8:"rakutori";i:1;s:4:"neko";i:2;s:11:"chinese_moe";}s:10:"defaultccs";s:16:"userdefccs_Shana";s:5:"foods";a:2:{i:0;s:9:"金坷垃";i:1;s:9:"咸梅干";}s:6:"eatsay";a:2:{i:0;s:45:"吃了金坷垃,一刀能秒一万八~!";i:1;s:42:"吃咸梅干,变超人!哦耶~~~";}s:10:"userdefccs";a:1:{s:5:"Shana";a:2:{s:4:"name";s:5:"Shana";s:4:"face";a:3:{i:0;s:79:"http://120.27.97.96/wp-content/uploads/2016/03/u20925666171375876562fm23gp0.gif";i:1;s:0:"";i:2;s:0:"";}}}}                                                                           | yes      |
+-----------+---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+

(太长了就不要在排版意细节了)

然后 只要更新option_value数据项~~ 我们就可以更换夏娜酱的URL啦~~~

然而= =!!! 遇到了一个大坑!!! 当使用下面的内容替换上面的option_value后

a:11:{s:6:"notice";s:26:"Hmm,, 菠萝包超好吃!!";s:9:"adminname";s:0:"";s:8:"isnotice";N;s:4:"ques";a:5:{i:0;s:9:"早上好";i:1;s:9:"中午好";i:2;s:9:"下午好";i:3;s:9:"晚上好";i:4;s:6:"晚安";}s:3:"ans";a:5:{i:0;s:12:"早上好~";i:1;s:12:"中午好~";i:2;s:12:"下午好~";i:3;s:12:"晚上好~";i:4;s:9:"晚安~";}s:8:"lifetime";a:4:{s:8:"rakutori";i:1459067732;s:4:"neko";i:1459067732;s:11:"chinese_moe";i:1459067732;s:5:"Shana";i:1459068272;}s:3:"ccs";a:3:{i:0;s:8:"rakutori";i:1;s:4:"neko";i:2;s:11:"chinese_moe";}s:10:"defaultccs";s:16:"userdefccs_Shana";s:5:"foods";a:2:{i:0;s:9:"金坷垃";i:1;s:9:"咸梅干";}s:6:"eatsay";a:2:{i:0;s:45:"吃了金坷垃,一刀能秒一万八~!";i:1;s:42:"吃咸梅干,变超人!哦耶~~~";}s:10:"userdefccs";a:1:{s:5:"Shana";a:2:{s:4:"name";s:5:"Shana";s:4:"face";a:3:{i:0;s:79:"https://voidisprogramer.com/wp-content/uploads/2016/03/u20925666171375876562fm23gp0.gif";i:1;s:0:"";i:2;s:0:"";}}}}

结果! 夏娜消失了!!

再去查看数据库,发现 刚刚的修改也失效了, 修改没有生效, 设置变成了最初安装时候的设置 = = 看来是因为设置不对,导致自动初始化设置了

经过多次查看原因发现, 在修改字符串的前面还有一个属性”s” 这个属性的值原来是字符串的长度, 在修改了URL之后,也要一起修改这个, 才可以 QAQ 于是 将更新的语句换成这个:

UPDATE `wp_options` SET `option_value` = 'a:11:{s:6:"notice";s:26:"Hmm,, 菠萝包超好吃!!";s:9:"adminname";s:0:"";s:8:"isnotice";N;s:4:"ques";a:5:{i:0;s:9:"早上好";i:1;s:9:"中午好";i:2;s:9:"下午好";i:3;s:9:"晚上好";i:4;s:6:"晚安";}s:3:"ans";a:5:{i:0;s:12:"早上好~";i:1;s:12:"中午好~";i:2;s:12:"下午好~";i:3;s:12:"晚上好~";i:4;s:9:"晚安~";}s:8:"lifetime";a:4:{s:8:"rakutori";i:1459067732;s:4:"neko";i:1459067732;s:11:"chinese_moe";i:1459067732;s:5:"Shana";i:1459068272;}s:3:"ccs";a:3:{i:0;s:8:"rakutori";i:1;s:4:"neko";i:2;s:11:"chinese_moe";}s:10:"defaultccs";s:16:"userdefccs_Shana";s:5:"foods";a:2:{i:0;s:9:"金坷垃";i:1;s:9:"咸梅干";}s:6:"eatsay";a:2:{i:0;s:45:"吃了金坷垃,一刀能秒一万八~!";i:1;s:42:"吃咸梅干,变超人!哦耶~~~";}s:10:"userdefccs";a:1:{s:5:"Shana";a:2:{s:4:"name";s:5:"Shana";s:4:"face";a:3:{i:0;s:87:"https://voidisprogramer.com/wp-content/uploads/2016/03/u20925666171375876562fm23gp0.gif";i:1;s:0:"";i:2;s:0:"";}}}}' WHERE `wp_options`.`option_id` = 209;

这次终于对了!!!!夏娜酱回来了 ~~ 之前的设置也都保留了, 撒花QAQ(到现在还没吃饭一直在搞这个这才叫真爱吧!!!

4 thoughts on “voidisprogramer.com 全站启用HTTPS啦~

Leave a Reply

Your email address will not be published. Required fields are marked *

two × one =

This site uses Akismet to reduce spam. Learn how your comment data is processed.