我们最近在我们的网站上应用了SSL证书,我们希望我们所有的URL都有https://协议。一旦我们把我们的网站移动到https://,我们的网站崩溃了,因为有几个资源仍然指向http://.经过一段时间的研究,我看到get_template_directory_uri()总是返回http://即使通过我们的wp_home,wp_site_url设置为https://是否有任何其他地方,我们必须改变的URL,因为我们正在使用的子主题和这个功能得到的父主题目录。谢谢,拉贾·维什瓦斯
mdfafbf11#
通过这条评论,发起人补充说:在我的情况下,我们使用负载均衡器服务器和SSL证书安装在负载均衡器WordPress is_ssl()函数会检查$_SERVER端口'HTTPS']和$_SERVER端口'SERVER_PORT'],以检查当前页面是否通过https访问,但负载均衡器最有可能在非SSL端口80上请求您的内容。一个很好的解决方法是使用X-Forwareded-Proto HTTP头来确定客户端在负载均衡器的另一端实际使用的协议。在Apache 2.2中,您可以将以下内容添加到配置中:
is_ssl()
X-Forwareded-Proto
<IfModule mod_setenvif.c> SetEnvIf X-Forwarded-Proto "^https$" HTTPS </IfModule>
字符串另一个可能的修复方法(@Roberto Poblete提到过,但没有解释)是将其添加到wp-config.php中
wp-config.php
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') $_SERVER['HTTPS'] = 'on';
型我有this to thank为发送我在正确的直接
r55awzrz2#
查看链接https://codex.wordpress.org/Function_Reference/is_ssl的注解
字符串
jhkqcmku3#
这对我来说就像一个魅力,在最后添加到 wp-config:
define('FORCE_SSL_ADMIN', true); define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST']); define('WP_SITEURL', WP_HOME);
2w3rbyxf4#
您是否尝试使用修改后的.htaccess文件通过https强制内容交付?在我使用的代码片段下面:
#Force HTTPS RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
p5fdfcr15#
检查安装的插件列表。任何涉及缓存,CDN等的插件都可能会干扰get_template_directory_uri。在我们的案例中,客户安装了大量的插件来加速他的网站。在没有启用插件的情况下,https加载正常。所以这只是一个弄清楚它是哪一个的问题。在违规插件的设置中,有一个http版本的网站路径。
eyh26e7m6#
如果(isset($_SERVER 'HTTP_X_FORWARDED_PROTO'])&& $_SERVER' HTTP_X_FORWARDED_PROTO']=“https”)$_SERVER 'HTTPS']=“on”;帮助在我的情况下在wp-p.php我的服务器没有返回这个服务器头在https://urls!
uoifb46i7#
请使用以下内容:
get_stylesheet_directory_uri();
字符串它将是一个网址(对于SSL,以http://或https://开头)。因此,它最适合用于链接,引用其他样式表,或者最常见的是图像。https://codex.wordpress.org/Function_Reference/get_stylesheet_directory_uri
ijnw1ujt8#
检查$_SERVER['HTTPS']的值。这应该设置为on或1。如果它在设置时有任何其他值,则此函数将输出http而不是https。参见:https://core.trac.wordpress.org/browser/tags/4.5.3/src/wp-includes/functions.php#L4025
$_SERVER['HTTPS']
on
1
8条答案
按热度按时间mdfafbf11#
通过这条评论,发起人补充说:
在我的情况下,我们使用负载均衡器服务器和SSL证书安装在负载均衡器
WordPress
is_ssl()
函数会检查$_SERVER端口'HTTPS']和$_SERVER端口'SERVER_PORT'],以检查当前页面是否通过https访问,但负载均衡器最有可能在非SSL端口80上请求您的内容。一个很好的解决方法是使用
X-Forwareded-Proto
HTTP头来确定客户端在负载均衡器的另一端实际使用的协议。在Apache 2.2中,您可以将以下内容添加到配置中:
字符串
另一个可能的修复方法(@Roberto Poblete提到过,但没有解释)是将其添加到
wp-config.php
中型
我有this to thank为发送我在正确的直接
r55awzrz2#
查看链接https://codex.wordpress.org/Function_Reference/is_ssl的注解
字符串
jhkqcmku3#
这对我来说就像一个魅力,在最后添加到 wp-config:
字符串
2w3rbyxf4#
您是否尝试使用修改后的.htaccess文件通过https强制内容交付?
在我使用的代码片段下面:
字符串
p5fdfcr15#
检查安装的插件列表。任何涉及缓存,CDN等的插件都可能会干扰get_template_directory_uri。在我们的案例中,客户安装了大量的插件来加速他的网站。
在没有启用插件的情况下,https加载正常。所以这只是一个弄清楚它是哪一个的问题。在违规插件的设置中,有一个http版本的网站路径。
eyh26e7m6#
如果(isset($_SERVER 'HTTP_X_FORWARDED_PROTO'])&& $_SERVER' HTTP_X_FORWARDED_PROTO']=“https”)$_SERVER 'HTTPS']=“on”;
帮助在我的情况下在wp-p.php
我的服务器没有返回这个服务器头在https://urls!
uoifb46i7#
请使用以下内容:
字符串
它将是一个网址(对于SSL,以http://或https://开头)。因此,它最适合用于链接,引用其他样式表,或者最常见的是图像。
https://codex.wordpress.org/Function_Reference/get_stylesheet_directory_uri
ijnw1ujt8#
检查
$_SERVER['HTTPS']
的值。这应该设置为on
或1
。如果它在设置时有任何其他值,则此函数将输出http而不是https。参见:https://core.trac.wordpress.org/browser/tags/4.5.3/src/wp-includes/functions.php#L4025