虚拟主机使用Apache服务器之WordPress伪静态及https配置

  • 酉灿
  • WordPress
  • Jul 27, 2021

这几天在搭建一个外贸网站,因为需要配置https,且客户使用的是虚拟主机,用的是Apache服务器,所以就查找了相关https配置方法,其配置文件如下,只需要写在.htaccess文件内即可,把域名换成你网站的域名。

<IfModule mod_headers.c>
Header add Access-Control-Allow-Origin: *
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{HTTP:From-Https} !^on$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?seouv.com$ [NC]
RewriteRule ^(.*)$ https://www.seouv.com/$1 [R=301,L]
</IfModule>

# BEGIN 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

某些主机修改到上面这一步时可能会提示重定向次数过多的问题,则继续修改wp-includes/load.php或wp-includes/functions.php 这个文件,搜索is_ssl找到对应的函数,将$_SERVER[‘HTTPS’]修改为$_SERVER[“HTTP_FROM_HTTPS”](修改文件前请注意备份)。

或将此函数改为以下

function is_ssl() {
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'){
return true;
}
elseif (isset($_SERVER["HTTP_FROM_HTTPS"])&&$_SERVER["HTTP_FROM_HTTPS"]=='on'){
return true;
}
elseif (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'){
return true;
}
else{
return false;
}
}
打赏