Wordpress get_template_directory_uri()返回http而不是https

niwlg2el  于 12个月前  发布在  WordPress
关注(0)|答案(8)|浏览(249)

我们最近在我们的网站上应用了SSL证书,我们希望我们所有的URL都有https://协议。
一旦我们把我们的网站移动到https://,我们的网站崩溃了,因为有几个资源仍然指向http://.经过一段时间的研究,我看到get_template_directory_uri()总是返回http://即使通过我们的wp_home,wp_site_url设置为https://
是否有任何其他地方,我们必须改变的URL,因为我们正在使用的子主题和这个功能得到的父主题目录。
谢谢,拉贾·维什瓦斯

mdfafbf1

mdfafbf11#

通过这条评论,发起人补充说:
在我的情况下,我们使用负载均衡器服务器和SSL证书安装在负载均衡器
WordPress is_ssl()函数会检查$_SERVER端口'HTTPS']和$_SERVER端口'SERVER_PORT'],以检查当前页面是否通过https访问,但负载均衡器最有可能在非SSL端口80上请求您的内容。
一个很好的解决方法是使用X-Forwareded-Proto HTTP头来确定客户端在负载均衡器的另一端实际使用的协议。
在Apache 2.2中,您可以将以下内容添加到配置中:

<IfModule mod_setenvif.c>
  SetEnvIf X-Forwarded-Proto "^https$" HTTPS
</IfModule>

字符串
另一个可能的修复方法(@Roberto Poblete提到过,但没有解释)是将其添加到wp-config.php

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS'] = 'on';


我有this to thank为发送我在正确的直接

r55awzrz

r55awzrz2#

查看链接https://codex.wordpress.org/Function_Reference/is_ssl的注解

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS'] = 'on';

字符串

jhkqcmku

jhkqcmku3#

这对我来说就像一个魅力,在最后添加到 wp-config

define('FORCE_SSL_ADMIN', true);
define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST']);
define('WP_SITEURL', WP_HOME);

字符串

2w3rbyxf

2w3rbyxf4#

您是否尝试使用修改后的.htaccess文件通过https强制内容交付?
在我使用的代码片段下面:

#Force HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

字符串

p5fdfcr1

p5fdfcr15#

检查安装的插件列表。任何涉及缓存,CDN等的插件都可能会干扰get_template_directory_uri。在我们的案例中,客户安装了大量的插件来加速他的网站。
在没有启用插件的情况下,https加载正常。所以这只是一个弄清楚它是哪一个的问题。在违规插件的设置中,有一个http版本的网站路径。

eyh26e7m

eyh26e7m6#

如果(isset($_SERVER 'HTTP_X_FORWARDED_PROTO'])&& $_SERVER' HTTP_X_FORWARDED_PROTO']=“https”)$_SERVER 'HTTPS']=“on”;
帮助在我的情况下在wp-p.php
我的服务器没有返回这个服务器头在https://urls!

uoifb46i

uoifb46i7#

请使用以下内容:

get_stylesheet_directory_uri();

字符串
它将是一个网址(对于SSL,以http://或https://开头)。因此,它最适合用于链接,引用其他样式表,或者最常见的是图像。
https://codex.wordpress.org/Function_Reference/get_stylesheet_directory_uri

ijnw1ujt

ijnw1ujt8#

检查$_SERVER['HTTPS']的值。这应该设置为on1。如果它在设置时有任何其他值,则此函数将输出http而不是https。
参见:https://core.trac.wordpress.org/browser/tags/4.5.3/src/wp-includes/functions.php#L4025

相关问题