2012-04-10 7 views
8

Ho la struttura HTML per la mia pagina come indicato di seguito. Ho aggiunto tutti i tag meta og, ma ancora Facebook non è in grado di carpire informazioni dal mio sito.Facebook non è in grado di grattare il mio 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> 
    ..... 

Quando ho inserire l'URL nel debugger facebook (https://developers.facebook.com/tools/debug), ottengo i seguenti messaggi:

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. 

Perché Facebook non leggendo il informazioni sui meta tag? La pagina è accessibile e non nascosto dietro login ecc

UPDATE

Ok ho po 'di debugging e questo è quello che ho trovato. Ho impostato la regola htaccess nella mia directory: sto usando il framework PHP Codeigniter e ho una regola htaccess per rimuovere index.php dall'URL.

Quindi, quando invio l'URL a facebook debugger (https://developers.facebook.com/tools/debug) senza index.php, facebook mostra un 404, ma quando alimento l'URL con index.php, esso è in grado di analizzare la mia pagina.

Ora come faccio a creare contenuti di Facebook quando l'URL non ha index.php?

Questa è la mia regola .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

Segnala un codice di errore 404 (non trovato). Ci ** deve ** essere qualcosa di sbagliato con l'url che stai alimentando. –

+0

Ciao Klaus, ho aggiornato la mia domanda con un po 'di debug che ho fatto. Si prega di dare un'occhiata e fammi sapere i tuoi commenti – Ninja

risposta

8

La documentazione Facebook include dettagli sul protocollo Open Graph e come includere i corretti meta tag in modo che Facebook può raschiare l'URL in modo accurato.

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

In sostanza ciò che si vorrà fare è includere alcuni particolari og:tags invece (o in aggiunta) per i meta tag esistenti.

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

Se si dispone di un file .htaccess riorientare le cose e rendendo difficile per Facebook per raschiare il tuo URL potrebbe essere in grado di farla franca con la rilevazione crawler di Facebook con il vostro .htaccess e alimentandola i tag corretti. Credo che l'agente l'utente che il crawler di Facebook offre è questo:

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

La documentazione ha anche una sezione parlando making sure that their crawlers can access your site.

A seconda della configurazione, è possibile verificare ciò osservando i server access_log. Su un sistema UNIX con Apache, il registro di accesso si trova a /var/log/httpd/access_log.

Così si potrebbe utilizzare una voce simile a questo nel file .htaccess -

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

Le [L,QSA] bandiere che ho messo lì affermare che questa è la L regola AST che sarà applicata sulla corrente richiesta (L) e QSA (Query String Append) indica che qualsiasi stringa di query fornita verrà passata quando l'URL verrà riscritto.Ad esempio, un URL, ad esempio:

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

saranno passate a ogtags.php come questo - ogtags.php?id=foo&action=bar. Il tuo file ogtags.php darà per generare dinamici og: meta tag in base ai parametri che sono stati passati.

Ora ogni volta che il file .htaccess rileva l'agente utente di Facebook, gli passa il file ogtags.php (che può contenere le informazioni og: meta corrette). Si prega di essere a conoscenza di eventuali altre regole che avete nel vostro .htaccess e in che modo potrebbero influenzare le nuove regole.

Dalle voci .htaccess specificate, si consiglia di inserire questa nuova "regola di Facebook" come prima regola.

+0

Ciao Lix, grazie mille per l'aggiornamento. Ho un problema però- nella regola di riscrittura, hai accennato che carico ogtags.html ma i meta tag avranno contenuti dinamici, in base alla pagina richiesta. Non posso dare una pagina html statica lì. Ho provato a sostituire ogtags.html con questa regola: RewriteRule^(. *) $ Index.php?/$ 1 [L] ma non ha aiutato. Qualche idea su come ottenere questo? – Ninja

+0

@Lix: hai idea del motivo per cui ricevo un errore di 500 dallo strumento di debugger di Facebook quando utilizzo le tue due regole? grazie in anticipo ... – sergio

+0

Hey there @ser - Hai controllato i log del tuo server per le richieste di Facebook che sono state respinte? Ho appena aggiunto [questo link] (https://developers.facebook.com/docs/opengraph/howtos/maximizing-distribution-media-content/#crawl) alla mia risposta qui, potrebbe essere utile anche a te. – Lix

1

Ho avuto lo stesso problema, ovvero: Codice di risposta errato: l'URL ha restituito un codice di risposta HTTP non valido.

ma stranamente questo è ciò che risolto: ho aggiunto

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

al mio tag HEAD sito e ha funzionato.

Inoltre, non dimenticare, nella dashboard dell'applicazione (dove si ottiene il proprio ID APP) è necessario avere almeno il "Sito Web con accesso Facebook" abilitato e inserire l'URL del sito Web. Altrimenti non funzionerà ... a prescindere dal fatto che non si stiano utilizzando accessi Facebook sul proprio sito.