我研究了很多关于FB股票的问题,但尚未解决我的问题。 我想我甚至在这些帖子中发现了问题 - https://stackoverflow.com/a/26714882/5348972 https://stackoverflow.com/a/35653463/5348972
我的网站包含一个基本的登录系统,如果设置了会话 - &gt;显示页面重定向到登录页面。因此,当我向<head>
提供静态og数据时,示例 -
<meta property="og:image"content="http://example.com/images/loginPageCarausel/unnamed.png" />
<meta property="og:title" content="Some Title" />
<meta property="og:url" content="http://example.com" />
<meta property="og:description" content="No Description" />
<meta property="og:image:type" content="image/jpeg" />
<meta property="og:image:width" content="400" />
<meta property="og:image:height" content="300" />
一切正常。 Post与指定的图像共享,因为<head>
的这一部分在会话设置或未设置时很常见。但是,当我将标题更改为此时,
<?php
include_once 'includes/functions.php';
$pg = getPageName('pages.php');
if($pg) {
if(isset($_GET['poll'])) {
$i = $_GET['poll'];
if(class_exists('Polls') && class_exists('FilesUpload')) {
$vip_poll = Polls::getPollDataById(POST_TBL, $i);
$title = $vip_poll->question;
$gen = $vip_poll->poll_genre;
$vip_pollOwnersId = $vip_poll->user_id;
$media_files = FilesUpload::getMediaFiles(MED_TBL, $i, $vip_pollOwnersId);
$f_type = $media_files->file_type;
$f = $media_files->file_name;
$img_ext_array = array('jpg', 'gif', 'jpeg', 'png');
if (in_array($f_type, $img_ext_array)) {
$analysis = Polls::select_all_from_graph_page_data(GP_DATA_TBL, $vip_pollOwnersId, $i);
if($analysis != false) {
if (!empty($analysis)) {
$analysis_data = $analysis->data;
if (strlen($analysis_data) > 300) {
$analysis_data = substr($analysis_data, 0, 300) . "...";
}
$analysis = $analysis_data; ?>
<meta property="fb:app_id" content="1775**************">
<meta property="og:image" content="http://www.example.com/<?=$f?>" />
<meta property="og:title" content="<?=$title?>" />
<meta property="og:url" content="http://example.com/pages.php?vip_poll=<?=$i?>&genre=<?=$gen?>" />
<meta property="og:description" content="<?=$analysis_data?>" />
<meta property="og:image:type" content="image/jpeg" />
<meta property="og:image:width" content="400" />
<meta property="og:image:height" content="300" />
<?php }
}
}
}
}
}
?>
在这种情况下,FB爬虫会找到登录页面的图像之一,FB调试器会发现缺少各种og属性。我怀疑这是因为ajax请求页面将FB爬虫重定向到登录页面,因为它的会话永远不会被设置。我已经阅读了这个页面
https://developers.facebook.com/docs/sharing/webmasters/crawler
尝试用HTACCESS解决这个问题,并在我的htaccess文件中添加了这几条规则
RewriteCond %{HTTP_USER_AGENT} ^facebookexternalhit
RewriteRule ^(.*)$ ogtags.php?$1 [L,QSA]
但它也没有帮助我。我不太了解htaccess编码,但我想知道这些行是否可以让抓取工具访问内容,即使它没有登录。如果没有,那么我是否需要更改我的登录逻辑(这可能不是一个好主意) 。如果有更好的方法请详细说明。
我也尝试使用jquery更改元标记,但这也没有用。
我的问题是如何将FB抓取工具重定向到指定的<meta property="og:image" content="http://www.example.com/<?=$f?>" />
正确的网址?我还可以通过htaccess将抓取工具重定向到另一个页面
RewriteCond %{HTTP_USER_AGENT} facebookexternalhit [NC,OR]
但是我需要发送post id来运行查询并在该重定向页面中动态更新meta标签。我不知道如何做到这一点(同时向两个不同的网址发送一个id)。我的第二个问题是我在FB中读到它仅在帖子被共享时才会删除信息。我尝试通过jquery和php更改元标记,并在控制台正确显示所有og标记时共享内容,但是爬虫仍然进入登录页面(未设置的html页面)?这是我使用
的fb共享代码<div class="fb-share-button" data-href="http://www.example.com/pages.php?vip_poll='+app_id+'" data-layout="button_count" data-mobile-iframe="true"><a class="fb-xfbml-parse-ignore" target="_blank" href="https://www.facebook.com/sharer/sharer.php?u='+url_enc+'&src=sdkpreparse"><span id="fb_span"><i class="fa fa-facebook-official" aria-hidden="true" style="color: white"></i> Share </span></a></div>
答案 0 :(得分:0)
如果指定了og:url,Facebook会尝试从or:url中指定的链接中获取元标记。它将其视为此处提到的规范URL:https://developers.facebook.com/docs/sharing/webmasters/getting-started/versioned-link