如何阻止facebook sharer.php忽略目标网址中的数字?

时间:2013-01-01 06:27:57

标签: facebook url facebook-graph-api

这是我希望用户能够分享的网址: http://dealsfortherich.com/product/6379316

所以我的应用程序(PHP)构造了这个URL:

https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fdealsfortherich.com%2Fproduct%2F6379316

如果您查看该链接,您会看到产品编号已被截断。 Sharer.php忽略斜杠后的数字(%2F) 如果我将该数字设为字母数字,则可以:

https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fdealsfortherich.com%2Fproduct%2F6379316X

https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fdealsfortherich.com%2Fproduct%2FX6379316 要么 https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fdealsfortherich.com%2Fproduct%2F637X9316

添加尾部斜杠无济于事: https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fdealsfortherich.com%2Fproduct%2F6379316%2F

显然,我可以在我的应用程序中写一个条件来处理一个URL: http://dealsfortherich.com/product/6379316X 但就搜索引擎而言,我有重复的内容。

我应该放弃并且不使用sharer.php吗?

1 个答案:

答案 0 :(得分:0)

想出来! 问题是facebook没有抓取页面: http://dealsfortherich.com/product/6379316

facebook object debugger显示刮刀正在看到一个规范名称: http://dealsfortherich.com/product/

即使我发出了这种情况,也发生了这种情况:

remove_action('wp_head', 'rel_canonical'); 

在调用wordpress'get_header()之前调用wp_head(),这本应该删除错误的规范链接。

问题是过滤器fb_meta_tags(来自插件)在我认为我正在设置的OG标签之前添加了一堆OG标签! 果然,其中一个标签就是:

<meta property="http://ogp.me/ns#url" content="http://dealsfortherich.com/product/" />

这是我在php中调用get_header()之前解决它的方法:

add_filter( 'fb_meta_tags', 'remove_og_tags' );
function remove_og_tags( $meta_tags )
{
  $meta_tags['http://ogp.me/ns/fb#app_id'] = null;
  $meta_tags['http://ogp.me/ns#type'] = null;
  $meta_tags['http://ogp.me/ns#title'] = null;
  $meta_tags['http://ogp.me/ns#image'] = null;
  $meta_tags['http://ogp.me/ns#description'] = null;
  $meta_tags['http://ogp.me/ns#url'] = null;
  return $meta_tags;
}

在我添加之前阻止了错误的OG标记添加:

<link rel="canonical" href="<?php echo $page_path; ?>"/>
<meta property="fb:app_id" content="xxxxxxxxxxxxx" /> 
<meta property="og:type" content="product" /> 
<meta property="og:title" content="<?php echo $the_title; ?>" /> 
<meta property="og:image" content="<?php echo $image_url; ?>" /> 
<meta property="og:description" content="<?php echo $tweet_text.$the_title; ?>" /> 
<meta property="http://ogp.me/ns#url" content="<?php echo $page_path; ?>"  />

现在一切都很美好。