我面临一个问题。我在Ubuntu服务器上安装了WordPress。
尽管site\\u url和home\\u url都使用https,WordPress仍然通过http加载文件。这会在尝试登录时阻止我(登录表单操作也是http),并且还会通过http加载资产,并且我会在浏览器控制台中收到警告。服务器由第三方配置,并重定向到https。
我使用了:
define( \'WP_HOME\', \'https://sitename.com\' );
define( \'WP_SITEURL\', \'https://sitename.com\' );
if (strpos($_SERVER[\'HTTP_X_FORWARDED_PROTO\'], \'https\') !== false)
$_SERVER[\'HTTPS\']=\'on\';
有了这两个,我在wp admin上收到了许多重定向。
唯一有效的方法(至少是登录)是:
if($_SERVER[\'PHP_SELF\']=="/index.php")
{
define(\'WP_HOME\',\'https://sitename.com\');
define(\'WP_SITEURL\',\'https://sitename.com\');
}
else
{
define(\'WP_HOME\',\'http://sitename.com\');
define(\'WP_SITEURL\',\'http://sitename.com\');
}
但这不是一个解决方案,因为我的网站将通过http加载资产。。。我在这里和其他网站上搜索并测试了解决方案,但似乎都不起作用。
SO网友:Rick Hellewell
@Tomc的解决方案是一个很好的开端。这里是格式化的(你不能在评论中格式化内容)。
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
此外,我不喜欢在配置文件中设置URL。最好(IMHO)在wp选项表中设置这两个值。
您可能需要查看整个数据库,以确保对内部资产(尤其是媒体)的所有引用都设置为https。有几个插件允许您搜索(和替换)数据库中的项目-我的目标是“更好的搜索和替换”插件。
您可以使用浏览器中的开发人员工具(通常是F12)查看所有请求,并查找那些不是https的请求。
Added
这里有一个强制SSL的重写规则,外加WordPress basic。更改域名以匹配您的域名。
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
# 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