2012-04-10 8 views
8

Ich habe die HTML-Struktur für meine Seite wie unten angegeben. Ich habe alle Meta-Tags hinzugefügt, aber immer noch kann Facebook keine Informationen von meiner Seite scrappen.Facebook kann meine URL nicht löschen

<!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> 
    ..... 

Wenn ich die URL in Facebook Debugger (https://developers.facebook.com/tools/debug), erhalte ich folgende Meldungen:

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. 

Warum liest Facebook nicht Meta-Tags Informationen? Die Seite zugänglich ist und nicht hinter Login usw. versteckt

UPDATE

Ok ich habe wenig Debugging und das ist, was ich gefunden habe. Ich habe htaccess Regel in meinem Verzeichnis-Ich benutze PHP Codeigniter Framework und habe htaccess Regel zu entfernen index.php von der URL.

Also, wenn ich die URL facebook Debugger (https://developers.facebook.com/tools/debug) ohne index.php füttern, zeigt Facebook eine 404, aber wenn ich URL mit index.php feed es kann meine Seite analysieren.

Wie mache ich jetzt Facebook scrape Inhalt, wenn die URL nicht index.php hat?

Das ist meine .htaccess-Regel:

<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

Es wird ein 404 (Not found) Fehlercode gemeldet. Es muss etwas mit der URL falsch sein, die du es fütterst. –

+0

Hallo Klaus, ich habe meine Frage mit ein wenig Debugging aktualisiert. Bitte werfen Sie einen Blick und lassen Sie mich Ihre Kommentare wissen – Ninja

Antwort

8

Die Facebook-Dokumentation enthält Details über das Open Graph Protocol und wie die richtigen Meta-Tags enthalten, so dass Facebook Ihre URL genau kratzen können.

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

Wesentliches tun, was Sie wollen, ist stattdessen ein besonderes og:tags umfasst (oder zusätzlich) zu Ihren vorhandenen Meta-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> 

Wenn Sie eine .htaccess Datei haben Dinge Umleiten und macht es schwierig für Facebook URL kratzen Sie könnten in der Lage sein, mit Erfassen Facebook-Crawler mit Ihrem .htaccess wegzukommen und es die richtigen Tags füttern. Ich glaube, die der User-Agent, der die Facebook-Crawler bietet dies:

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

Die Dokumentation auch einen Abschnitt über making sure that their crawlers can access your site reden hat.

Abhängig von Ihrer Konfiguration können Sie dies testen, indem Sie auf Ihre Server access_log schauen. Auf einem UNIX-System, auf dem Apache ausgeführt wird, befindet sich das Zugriffsprotokoll unter /var/log/httpd/access_log.

So könnte man einen Eintrag ähnlich wie diese in Ihrer .htaccess Datei verwenden -

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

Die [L,QSA] Fahnen, die ich dort angebracht hat, dass dies der L ast Regel, die auf dem aktuellen erzwungen werden Anfrage (L) und die QSA (Query String Append) besagt, dass jede Abfrage Zeichenfolge übergeben wird, wenn die URL neu geschrieben wird.Zum Beispiel kann eine URL wie:

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

Wird zu ogtags.php wie diese weitergegeben werden - ogtags.php?id=foo&action=bar. Ihre ogtags.php Datei wird generiert, um dynamische og: Metatags gemäß den übergebenen Parametern zu generieren.

Jetzt, wenn Ihre .htaccess Datei den Facebook-User-Agent erkennt, wird ihm die Datei ogtags.php übergeben (die die korrekte og: Meta-Information enthalten kann). Bitte beachten Sie alle anderen Regeln, die Sie in Ihrer .htaccess haben und wie sie sich auf neue Regeln auswirken können.

Von den .htaccess Einträge, die Sie ausführlich beschrieben haben, würde ich empfehlen, diese neue "Facebook-Regel" als erste Regel zu platzieren.

+0

Hallo Lix, vielen Dank für das Update. Ich habe jedoch ein Problem - in der Rewrite-Regel haben Sie erwähnt, dass ich ogtags.html geladen habe, aber die Meta-Tags haben dynamischen Inhalt, basierend auf der Seite, die angefordert wird. Ich kann dort keine statische HTML-Seite geben. Ich habe versucht, oggtags.html durch diese Regel zu ersetzen: RewriteRule^(. *) $ Index.php?/$ 1 [L] hat aber nicht geholfen. Irgendwelche Gedanken darüber, wie das zu erreichen ist? – Ninja

+0

@Lix: hast du eine Idee warum ich einen 500 Fehler vom Facebook Debugger Tool bekomme, wenn ich deine zwei Regeln benutze? danke im voraus ... – sergio

+0

Hey da @ser - Hast du deine Server Logs auf Anfragen von Facebook überprüft, die verweigert werden? Ich habe gerade [meine Antwort] (https://developers.facebook.com/docs/opengraph/howtos/maximizing-distribution-media-content/#crawl) zu meiner Antwort hier hinzugefügt, es könnte Ihnen auch nützlich sein. – Lix

1

Ich hatte das gleiche Problem, das war: Bad Response Code: URL gab einen schlechten HTTP-Antwortcode zurück.

aber seltsam das ist, was es gelöst: Ich habe

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

auf meiner Seite HEAD-Tag und es funktionierte.

Nicht zu vergessen, in Ihrem Anwendungs-Dashboard (wo Sie Ihre APP ID bekommen) müssen Sie mindestens "Website mit Facebook Login" aktiviert haben und die URL der Website eingeben. Andernfalls wird es nicht funktionieren ... unabhängig davon, ob Sie Facebook-Logins auf Ihrer Website verwenden.

Verwandte Themen