2012-04-10 3 views
8

У меня есть структура HTML для моей страницы, как показано ниже. Я добавил все мета-теги, но все же facebook не может очистить любую информацию с моего сайта.Facebook не удалось очистить мой url

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml"> 
    <head> 
      <meta http-equiv="Content-Type" content="text/html;" charset=utf-8"></meta> 
      <title>My Site</title> 
      <meta content="This is my title" property="og:title"> 
      <meta content="This is my description" property="og:description"> 
      <meta content="http://ia.media-imdb.com/images/rock.jpg" property="og:image"> 
      <meta content="<MYPAGEID>" property="fb:page_id"> 
      ....... 
    </head> 
    <body> 
    ..... 

Когда я введите URL в facebook отладчика (https://developers.facebook.com/tools/debug), я получаю следующие сообщения:

Scrape Information 
Response Code 404 

Critical Errors That Must Be Fixed 
Bad Response Code URL returned a bad HTTP response code. 


Errors that must be fixed 

Missing Required Property The 'og:url' property is required, but not present. 
Missing Required Property The 'og:type' property is required, but not present. 
Missing Required Property The 'og:title' property is required, but not present. 


Open Graph Warnings That Should Be Fixed 
Inferred Property The 'og:url' property should be explicitly provided, even if a value can be inferred from other tags. 
Inferred Property The 'og:title' property should be explicitly provided, even if a value can be inferred from other tags. 

Почему facebook не читая meta tags информация? Страница доступна и не прячется за логином и т.д.

UPDATE

Ok я немного отладки, и это то, что я нашел. У меня есть правило htaccess, установленное в моем каталоге. Я использую фреймворк PHP Codeigniter и имею правило htaccess для удаления index.php из URL-адреса.

Итак, когда я кормлю URL-адрес отладчику facebook (https://developers.facebook.com/tools/debug) без index.php, facebook показывает 404, но когда я подаю url с index.php, он способен анализировать мою страницу.

Теперь, как мне сделать контент facebook scrape, когда URL-адрес не имеет index.php?

Это мое правило Htaccess:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    #Removes access to the system folder by users. 
    #Additionally this will allow you to create a System.php controller, 
    #previously this would not have been possible. 
    #'system' can be replaced if you have renamed your system folder. 
    RewriteCond %{REQUEST_URI} ^system.* 
    RewriteRule ^(.*)$ /index.php?/$1 [L] 

    #When your application folder isn't in the system folder 
    #This snippet prevents user access to the application folder 
    #Submitted by: Fabdrol 
    #Rename 'application' to your applications folder name. 
    RewriteCond %{REQUEST_URI} ^application.* 
    RewriteRule ^(.*)$ /index.php?/$1 [L] 

    #Checks to see if the user is attempting to access a valid file, 
    #such as an image or css document, if this isn't true it sends the 
    #request to index.php 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?/$1 [L] 
</IfModule> 

<IfModule !mod_rewrite.c> 
    # If we don't have mod_rewrite installed, all 404's 
    # can be sent to index.php, and everything works as normal. 
    # Submitted by: ElliotHaughin 

    ErrorDocument 404 /index.php 
</IfModule> 
+0

Сообщается о коде ошибки 404 (не найден). Там ** должно быть что-то не так с адресом, который вы его кормите. –

+0

Привет, Клаус, я обновил свой вопрос с некоторой отладки, которую я сделал. Пожалуйста, посмотрите и дайте мне знать ваши комментарии. – Ninja

ответ

8

документация Facebook включает в себя подробную информацию о графике протокола Open и как включить правильные мета-теги, так что Facebook может царапать ваш URL точно.

https://developers.facebook.com/docs/opengraphprotocol/

По существу, что вы хотите сделать, это включить некоторые специальные og:tags вместо (или в дополнение) к существующим мета-теги.

<head> 
    <title>Ninja Site</title> 
    <meta property="og:title" content="The Ninja"/> 
    <meta property="og:type" content="movie"/> 
    <meta property="og:url" content="http://www.nin.ja"/> 
    <meta property="og:image" content="http://nin.ja/ninja.jpg"/> 
    <meta property="og:site_name" content="Ninja"/> 
    <meta property="fb:admins" content="USER_ID"/> 
    <meta property="og:description" 
      content="Superhuman or supernatural powers were often 
        associated with the ninja. Some legends include 
        flight, invisibility and shapeshifting..."/> 
    ... 
    </head> 

Если у вас есть .htaccess файл, перенаправив вещи и делает его трудным для Facebook, чтобы очистить свой URL, вы можете быть в состоянии уйти с обнаружением искателю на Facebook с .htaccess и кормления его правильные теги. Я считаю, что агент пользователя, который предоставляет обходчик Facebook это:

facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php) 

В документации также имеет раздел говорить о making sure that their crawlers can access your site.

В зависимости от вашей конфигурации вы можете проверить это, посмотрев на свои серверы access_log. В системе UNIX, использующей apache, журнал доступа находится по адресу /var/log/httpd/access_log.

Таким образом, вы можете использовать запись, подобную этой в файле .htaccess -

RewriteCond %{HTTP_USER_AGENT} ^facebookexternalhit 
RewriteRule ^(.*)$ ogtags.php?$1 [L,QSA] 

The [L,QSA] флаги, которые я поместил там утверждают, что это L правило аст, которые будут применяться на ток request (L) и QSA (Query String Append) указывает, что любая строка запроса будет передана вместе с URL-адресом, который будет перезаписан.Например, URL, такие как:

https://example.com/?id=foo&action=bar 

Будет передан ogtags.php как это - ogtags.php?id=foo&action=bar. Ваш файл ogtags.php даст для создания динамических og: meta-тегов в соответствии с переданными параметрами.

Теперь, когда ваш файл .htaccess обнаруживает пользовательский агент Facebook, он передает ему файл ogtags.php (который может содержать правильную информацию og: meta). Имейте в виду любые другие правила, которые у вас есть в вашем .htaccess и как они могут повлиять на новые правила.

Из .htaccess записей, которые вы подробно указали, я бы порекомендовал разместить это новое правило «Facebook» в качестве самого первого правила.

+0

Привет, Lix, спасибо за обновление. У меня проблема, но в правиле перезаписи вы упомянули, что я загружаю ogtags.html, но метатеги будут иметь динамический контент на основе запрашиваемой страницы. Я не могу дать статическую html-страницу там. Я попытался заменить ogtags.html этим правилом: RewriteRule^(. *) $ Index.php?/$ 1 [L], но не помогло. Любые мысли о том, как достичь этого? – Ninja

+0

@Lix: у вас есть идеи, почему я получаю ошибку 500 от средства отладки facebook, когда я использую ваши два правила? спасибо заранее ... – sergio

+0

Привет, @ser - Вы проверили журналы своего сервера для запросов от Facebook, которым отказано? Я просто добавил [эту ссылку] (https://developers.facebook.com/docs/opengraph/howtos/maximizing-distribution-media-content/#crawl) к моему ответу здесь, это может быть полезно и вам. – Lix

1

У меня была такая же проблема, которая была: Плохой код ответа: URL-адрес возвратил неверный код ответа HTTP.

, но странно это то, что решить ее: Я добавил

<meta property="og:locale" content="en_US" /> 

на мой сайт ГОЛОВЫ теге, и она работала.

Кроме того, чтобы не забывать, что на панели управления приложения (где вы получаете свой идентификатор APP) у вас должен быть включен «Веб-сайт с Facebook Login» и введите URL-адрес веб-сайта. Иначе это не сработает ... независимо от того, используете ли вы какие-либо Facebook-логины на своем сайте.

Смежные вопросы