相信不少博主的WordPress都搭建在虚拟主机中,一般是Linux虚拟主机。但是,我们没有办法对虚拟主机进行控制,毕竟不是独立服务器。

我在西部数码搭建的博客,linux主机,可以方便的开启SSL,但要做到完美就没那么简单了。

开启SSL后,除了在后台的常规设置中将网站网址的http换成https之外,还必须在.htaccess文件中增加301跳转。

WordPress安装后的默认.htaccess文件内容是这样的,这是伪静态跳转,也就是WordPress中设置“固定链接”样式时,就通过这个文件进行链接跳转:

# 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文件如下:

# 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' ); 以上。如下所示:

/** 设置WordPress变量和包含文件。 */
$_SERVER['HTTPS']='on';
define('WP_HOME','https://www.taholab.com');  
define('WP_SITEURL','https://www.taholab.com');
require_once( ABSPATH . 'wp-settings.php' );

把里面的域名换成自己的域名即可。

或者用以下代码,就不需要再设置自己的域名了,比较方便:

/** 设置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文件位置在哪。如果没有这两句,登陆后台时将会板式错乱,甚至显示“抱歉,您不能访问此页面。”等问题。不加这两句,网站的访问其实已经正常了。如果你的网站没有出现这种类似问题,就不必加上。

这下,网站访问应该就没问题了,前台后台都正常了。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注