这是我希望用户能够分享的网址: 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吗?
答案 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; ?>" />
现在一切都很美好。