强制加载HTTPS WordPress插件

时间:2012-05-07 作者:elke_wtf

由于我的一些插件是用http而不是https加载的,所以存在一个影响浏览器功能的混合安全问题。我正在多站点设置下运行。

谢谢

这是我htaccess中的内容

# BEGIN WordPress
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

RewriteBase /
RewriteRule ^index\\.php$ - [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(.*\\.php)$ $1 [L]
RewriteRule . index.php [L]
# END WordPress

1 个回复
最合适的回答,由SO网友:MathSmath 整理而成

很可能,您的意思是,您的插件呈现的一些资产(图像、JavaScript等)是通过http显式提供的。(如果我误解了,请纠正我)。

这些问题需要在每个插件中修复,修复将根据资产的引用方式而有所不同。有很多方法可以引用资产,也有很多方法可以指定协议。(通常,如果您使用类似site\\u url()的内容来生成指向资产的链接,则会自动为它们分配正确的协议。但是有很多WordPress函数可以做这种事情。)你必须打开有问题的插件并查看。

坏消息是,使用htaccess进行再多的重写都无法解决这个问题。在实际请求所有文件之前,您的浏览器会做出这种“混合内容”的确定。尽管这些请求最终可能会被重写为https,但您的浏览器不会注意到。浏览器只关心资产在页面标记中的引用方式,重写规则根本不会更改标记,只关心服务器对特定请求的反应方式。

你感觉到我了吗?

结束

相关推荐

管理WordPress MultiSite中的数据库表

我正在开发一个插件,它可以在数据库表中创建和存储一些数据(使用global$wpdb->base\\u前缀)。在WordPress multisite中,我希望子网站所有者只能访问他们创建的数据。处理这个问题的最佳方法是什么?我应该为每个子网站创建新表,还是向表中添加“blog\\u id”列并每次检查?谢谢你的帮助。