相信不少博主的WordPress都搭建在虚拟主机中,一般是Linux虚拟主机。但是,我们没有办法对虚拟主机进行控制,毕竟不是独立服务器。
我在西部数码搭建的博客,linux主机,可以方便的开启SSL,但要做到完美就没那么简单了。
开启SSL后,除了在后台的常规设置中将网站网址的http换成https之外,还必须在.htaccess文件中增加301跳转。
WordPress安装后的默认.htaccess文件内容是这样的,这是伪静态跳转,也就是WordPress中设置“固定链接”样式时,就通过这个文件进行链接跳转:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# BEGIN WordPress # 在`BEGIN WordPress`与`END WordPress`之间的指令(行)是 # 动态生成的,只应被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跳转后的.htaccess文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# BEGIN WordPress # 在`BEGIN WordPress`与`END WordPress`之间的指令(行)是 # 动态生成的,只应被WordPress过滤器修改。 # 任何对标记之间的指令的修改都会被覆盖。 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] #开始http到https的跳转 RewriteCond %{HTTP:From-Https} !^on$ [NC] RewriteCond %{HTTP_HOST} ^(www.)?taholab.com$ [NC] RewriteRule ^(.*)$ https://www.taholab.com/$1 [R=301,L] </IfModule> # END WordPress |
如果仅仅是这样,WordPress只是可以通过https打开了,但css、js等文件依然是http格式的,会出现网站板式错乱,加载错误等各种问题。
因此,还需要在wp-config.php文件中增加一些内容进行说明。值得注意的是,增加内容的位置很关键。必须放在 require_once( ABSPATH . 'wp-settings.php' );
以上。如下所示:
1 2 3 4 5 |
/** 设置WordPress变量和包含文件。 */ $_SERVER['HTTPS']='on'; define('WP_HOME','https://www.taholab.com'); define('WP_SITEURL','https://www.taholab.com'); require_once( ABSPATH . 'wp-settings.php' ); |
把里面的域名换成自己的域名即可。
或者用以下代码,就不需要再设置自己的域名了,比较方便:
1 2 3 4 5 |
/** 设置WordPress变量和包含文件。 */ $_SERVER['HTTPS']='on'; define('WP_HOME', 'https://'.$_SERVER['HTTP_HOST']); define('WP_SITEURL', 'https://'.$_SERVER['HTTP_HOST']); require_once( ABSPATH . 'wp-settings.php' ); |
注意,说明一下这段代码的含义:
- $_SERVER['HTTPS']='on'; 是告诉WordPress强制开启https,包括各种css、js也开启https。只加上这一句,网站应该已经能正常访问了,板式也不会错乱了。但是,还没有结束。
-
define('WP_HOME','https://www.taholab.com'); 和
define('WP_SITEURL','https://www.taholab.com');
或者 define('WP_HOME', 'https://'.$_SERVER['HTTP_HOST']); 和 define('WP_SITEURL', 'https://'.$_SERVER['HTTP_HOST']);
是告诉博客后台登陆时调用的css文件位置在哪。如果没有这两句,登陆后台时将会板式错乱,甚至显示“抱歉,您不能访问此页面。”等问题。不加这两句,网站的访问其实已经正常了。如果你的网站没有出现这种类似问题,就不必加上。
这下,网站访问应该就没问题了,前台后台都正常了。