wordpress代码完全禁用头部的X-Pingback链接

IT资讯
IT资讯
IT资讯
1232
文章
241
评论
2019-11-1508:01:51
评论
2,022 2313字

pingback从功能上来说是好东西,可以让你知道有哪些站外引用了你的文章。但如果你的文章经常引用站内连接的话,就会造成很多Spam,下面提供关闭(禁用)pingback的方法:

 

其实后台有这个功能的设置,设置如下:

wordpress代码完全禁用头部的X-Pingback链接

 

弊端:如果有新版本发布更新后, WordPress 会自动重置 Pingback 参数。

彻底禁用WordPress pingback

方法一,代码来自No Self Pings插件:

function no_self_ping( &$links ) {
$home = get_option( 'home' );
foreach ( $links as $l => $link )
if ( 0 === strpos( $link, $home ) )
unset($links[$l]);
}
add_action( 'pre_ping', 'no_self_ping' );

 

方法二,更简洁的写法:

function deel_setup(){
//阻止站内PingBack
    if( dopt('d_pingback_b') ){
        add_action('pre_ping','deel_noself_ping');
    }
}

 

 

方法三,劫持 Pingback 功能的调用函数,完全屏蔽Pingback,代码来自Pingback Killer插件:

// Kill the rewrite rules
add_filter( 'rewrite_rules_array', 'pmg_pk_filter_rewrites' );
function pmg_pk_filter_rewrites( $rules )
{
foreach( $rules as $rule => $rewrite )
{
if( preg_match( '/trackback/?$$/i', $rule ) )
{
unset( $rules[$rule] );
}
}
return $rules;
}
// Kill bloginfo( 'pingback_url' )
add_filter( 'bloginfo_url', 'pmg_pk_kill_pingback_url', 10, 2 );
function pmg_pk_kill_pingback_url( $output, $show )
{
if( $show == 'pingback_url' )
{
$output = '';
}
return $output;
}
// hijack options for pingbacks
add_filter( 'pre_update_default_ping_status', '__return_false' );
add_filter( 'pre_option_default_ping_status', '__return_zero' );
add_filter( 'pre_update_default_pingback_flag', '__return_false' );
add_filter( 'pre_option_default_pingback_flag', '__return_zero' );
// Disable XMLRPC call
add_action( 'xmlrpc_call', 'pmg_pk_kill_xmlrpc' );
function pmg_pk_kill_xmlrpc( $action )
{
if( 'pingback.ping' === $action )
{
wp_die(
__( 'Pingbacks are not supported' ),
__( 'Not Allowed!' ),
array( 'response' => 403 )
);
}
}
// Flush rewrite rules on activation/deactivation so our trackback
// rules disappear or reappear on deactivation.
register_activation_hook( __FILE__ , 'flush_rewrite_rules' );
register_deactivation_hook( __FILE__, 'flush_rewrite_rules' );

 

 

引申话题:

 

如果之前有引用通知想清理怎么办?

UPDATE wp_posts SET ping_status='closed';

 

 

 

清理某个时间点:

//把2016-03-08以前的文章指定ping_status的值为closed
UPDATE wp_posts SET ping_status = 'closed' WHERE post_date < '2016-03-08'

 

 

WordPress pingback真的会被DDOS吗?

网上关于pingback的讨论,多数是在说此功能会被恶意DDOS,从功能上来说,它确实会被利用,但谁又会这么无聊呢?如果你确实担心,那可以采取下面两步操作来规避掉风险。

 

 

  1. 禁用WordPress pingback(看上面)
  2. 禁用WordPress xmlrpc服务(看下面)

 

 

扔进Functions.php里:

//禁用xmlrpc
add_filter('xmlrpc_enabled', '__return_false');

 

 

补充:禁用xmlrpc服务同时会影响到第三方客户端使用。

 

  • Copyright ©  PC在线云端  版权所有.
  • 转载请务必保留本文链接:https://nrcs.xyz/web/wordpress_web/8448.html
Orgorg速率最高可达1000Mbps,流畅观看Youtube 4K、TikTok,支持 Windows、Android、iOS、Mac,支持 微信、支付宝 付款!
全球数据中心,多点BGP保证速度,无视晚高峰,全天4K秒开,IPLC专线无惧封锁
全IEPL /青云跨境,高峰时期稳定8K播放,流媒体影视, ChatGPT 解锁保障,客户端无日志保护您的隐私安全,稳定运行5年+
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: