当前位置: 首页 > 知识库问答 >
问题:

Wordpress get\u template\u directory\u uri()返回http而不是https

冯俊英
2023-03-14

我们最近在我们的网站上应用了SSL证书,我们希望我们所有的url都具有https://协议。

一旦我们将网站移动到https://,我们的网站就崩溃了,因为几乎没有指向http:///的资源。经过一段时间的研究,我发现get\u template\u directory\u uri()总是返回http:////

是否有其他地方需要更改URL,因为我们正在使用子主题,此函数获取父主题目录。

谢谢, Raju Vishwas

共有3个答案

姬捷
2023-03-14

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

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS'] = 'on';
谭仰岳
2023-03-14

发起人对此评论补充道:

在我的例子中,我们使用的是负载均衡器服务器,SSL证书安装在负载均衡器上

@pBond的回答触及了问题的根本原因。WordPressis_ssl()函数检查$_SERVER['HTTPS']和$_SERVER['SERVER_PORT']以检查当前页面是否通过https访问,但负载均衡器很可能在非SSL端口80上请求您的内容。

解决此问题的一个好方法是使用X-Forware ded-ProtoHTTP标头来确定客户端在负载均衡器的另一端实际使用的协议。

使用Apache 2.2,您可以将其添加到配置中:

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

另一个可能的修复方法(RobertoPoblete提到但未解释)是将其添加到wp配置中。php

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

我要感谢你直接把我送到这里

史烨
2023-03-14

检查$\u服务器['HTTPS']值。应将其设置为“on”(打开)或“1”(打开)。如果在设置时有任何其他值,此函数将输出http而不是https。

请参见:https://core.trac.wordpress.org/browser/tags/4.5.3/src/wp-includes/functions.php#L4025

 类似资料:
  • 我有一个名为Backend(端口:9090)的服务,位于Zuul(端口:8080)后面。 浏览器在Zuul上调用GET方法,执行重定向。 示例调用:http://localhost:8080/testredirect 结果: 浏览器收到Http状态=200 浏览器URL:http://localhost:8080/testredirect 浏览器显示:Hello world 预期结果: 浏览器应接

  • 我试图让2支球队互相比赛。当我说团队1.玩(团队2)时,我称之为;当 i 生成的数字小于 0.5 时,team2 应获胜,如果大于 0.5,则团队 1 应获胜。当团队 1 获胜时,它会正确显示为尼克斯,但当团队 2 获胜时,它会显示内存地址。我怎么能让它正确地说网是赢的,而不是team@78987neu73

  • 问题内容: 这是我的发件人实体 当我尝试执行以下查询时: 发生以下错误: 错误:org.hibernate.property.BasicPropertyAccessor- HHH000123:类中的IllegalArgumentException:be.gimme.persistence.entities.Sender,属性的设置方法:senderId 错误:org.hibernate.prope

  • 我正在使用Yaml(和Python!)第一次。我试图从一个.yaml文件中加载多个文档,但没有得到我所期望的结果。我正在期待一个包含每个文档的dicts的dict返回,但却得到了一个生成器对象...?我应该注意到,当我在前面的测试中对单个文档yaml文件使用yaml.load()(而不是load_all())时,我能够很好地取回一个字典。 ...产生以下终端输出:

  • 我写了自己的类加载器,它与类一起工作,实现了接口插件。但是我不能将类转换为插件。怎么了? 错误:(18,47)java:不兼容的类型:java。lang.类无法转换为插件 我补充说,这是我的SimpleClassLoader类的主要部分,它扩展了ClassLoader。

  • await返回[Function]而不是value 尝试使用async和await函数从firebase返回查询的值。返回的结果是[Function]或未处理的承诺拒绝警告。async和await是新的承诺,但我在几个网站上尝试了基本的示例,大多数都有resolve和reject参数,我认为这应该与firebase的承诺相同。 我试了两个不同版本,结果都不正确。 返回UnhandledPromis