在HTTPS页面上强制使用Http规范标记

时间:2013-09-02 作者:moobot

目前,所有https页面都有自己的引用https的规范标记,这是不正确的,它们应该引用http版本。

e、 g:

https://www.example.com
具有以下规范标记:

<link rel=\'canonical\' href=\'https://www.example.com\' />

我们如何使https页面上的规范标记使用http URL?

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

您可以使用以下代码进行更改,将其添加到主题函数中。php或插件。

remove_action ( \'wp_head\' , \'rel_canonical\' ) ;
add_action ( \'wp_head\' , \'my_rel_canonical\' ) ;

function my_rel_canonical () {
    ob_start () ;
    rel_canonical () ;
    $rel_content = ob_get_contents () ;
    ob_end_clean () ;
    echo str_replace ( "https:" , "http:" , $rel_content ) ;
}

SO网友:tivnet

您是否计划使用canonical来避免Google中的重复内容?我认为这是一种错误的做法。您应该通过301将页面重定向到正确的方案(SSL或非SSL)来消除重复内容,具体取决于内容(签出、登录、管理)。不使用规范。

Edit: 我刚才是不是重复了你刚才说的话?https://webmasters.stackexchange.com/a/49852

SO网友:Srihari

https的实现方式是正确的。如果在https上强制使用http,您的客户端将看到一条警告,指出该站点有不安全的内容。然而,如果你想这样做,有两种方法:

如前所述,使用Apache的mod\\u rewrite将所有HTTPS URL重写为HTTPhere.

function custom_force_http( $force_http, $post_id = 0, $url = \'\' ) {
  return str_replace ( "https:" , "http:" , $force_http) ;
}    
add_filter(\'force_http\' , \'custom_force_http\', 10, 3);

结束

相关推荐

使用HTTPS加载style.css和jQuery

我们有几个环境,我们刚刚开始使用wordpress(开发、QA、预生产、生产等)。我们在较低的环境中没有启用https,一切都很顺利。在我们的prod环境中,站点将所有流量重定向到https。第一个问题似乎只与chrome有关。Chrome拒绝在页面上加载任何非https的内容。我不确定如何让WordPress加载jquery或样式。css(来自我的主题)通过https(更多信息见下文)。HTTPS的第二个问题是,我们无法在使用HTTPS的环境中登录wordpress。当登录屏幕加载(sitename.c