2012-04-10 17 views
8

Tengo la estructura HTML para mi página como se indica a continuación. He agregado todas las etiquetas meta og, pero aún así Facebook no puede eliminar ninguna información de mi sitio.Facebook no puede raspar mi 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> 
    ..... 

Cuando introduzca la dirección URL en facebook depurador (https://developers.facebook.com/tools/debug), me sale el siguiente mensaje:

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. 

¿Por qué Facebook no leyendo el ¿información de etiquetas meta? La página es accesible y no se oculta detrás de inicio de sesión, etc.

ACTUALIZACIÓN

Ok Yo poco de depuración y esto es lo que encontré. Tengo la regla htaccess establecida en mi directorio. Estoy usando PHP Codeigniter framework y tengo la regla htaccess para eliminar index.php de la url.

Por lo tanto, cuando introduzco la URL en Facebook depurador (https://developers.facebook.com/tools/debug) sin index.php, Facebook muestra un 404, pero cuando introduzco la URL con index.php, es capaz de analizar mi página.

Ahora, ¿cómo hago que Facebook raspe contenido cuando la url no tiene index.php?

Ésta es mi regla .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

Está informando un código de error 404 (No encontrado). ** Debe ** haber algo mal con la url que está alimentando. –

+0

Hola, Klaus, he actualizado mi pregunta con algo de depuración que hice. Por favor, eche un vistazo y hágamelo saber sus comentarios – Ninja

Respuesta

8

La documentación Facebook incluye información sobre el protocolo Open Graph y cómo incluir las etiquetas meta correctos por lo que Facebook puede raspar la URL de su precisión.

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

Esencialmente lo que querrá hacer es incluir algo de especial og:tags lugar (o además) a su meta tags existentes.

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

Si usted tiene un archivo .htaccess redirigir las cosas y hacer que sea difícil para Facebook para raspar su URL que podría ser capaz de salirse con la detección de rastreador de Facebook con su .htaccess y alimentarla las etiquetas correctas. Creo que el agente de usuario que el rastreador Facebook ofrece es la siguiente:

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

La documentación también tiene una sección hablando de making sure that their crawlers can access your site.

Dependiendo de su configuración, puede probar esto mirando sus servidores access_log. En un sistema UNIX que ejecuta apache, el registro de acceso se encuentra en /var/log/httpd/access_log.

lo que podría utilizar una entrada similar a esto en su archivo .htaccess -

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

Las banderas que [L,QSA] colocado allí afirman que este es el L regla ast a ser aplicada en el actual request (L) y QSA (Query String Append) establece que cualquier cadena de consulta dada se pasará cuando se reescriba la URL.Por ejemplo, un enlace como:

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

se pasará a ogtags.php como esto - ogtags.php?id=foo&action=bar. Su archivo ogtags.php dará para generar etiquetas og: meta dinámicas de acuerdo con los parámetros que se pasaron.

Ahora cada vez que su archivo .htaccess detecta el agente de usuario de Facebook, le pasará el archivo ogtags.php (que puede contener la información correcta og: meta). Tenga en cuenta cualquier otra regla que tenga en su .htaccess y cómo podrían afectar las nuevas reglas.

De las entradas .htaccess que ha detallado, le recomendaría colocar esta nueva "regla de Facebook" como la primera regla.

+0

Hola Lix, muchas gracias por la actualización. Sin embargo, tengo un problema: en la regla de reescritura, mencionó que cargué ogtags.html pero las metaetiquetas tendrán contenido dinámico, según la página solicitada. No puedo dar una página html estática allí. Intenté reemplazar ogtags.html con esta regla: RewriteRule^(. *) $ Index.php?/$ 1 [L] pero no ayudó. ¿Alguna idea sobre cómo lograr esto? – Ninja

+0

@Lix: ¿tiene alguna idea de por qué me sale un error 500 de la herramienta de depuración de Facebook cuando uso sus dos reglas? gracias de antemano ... – sergio

+0

Hola @ser - ¿Han revisado los registros de su servidor para las solicitudes de Facebook que están siendo denegadas? Acabo de agregar [este enlace] (https://developers.facebook.com/docs/opengraph/howtos/maximizing-distribution-media-content/#crawl) a mi respuesta aquí, podría serle útil también. – Lix

1

Tuve el mismo problema, que era: Código de respuesta incorrecta: URL devolvió un código de respuesta HTTP incorrecto.

pero curiosamente esto es lo que lo resolvió: He añadido

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

a mi etiqueta HEAD sitio y funcionó.

Además, para no olvidar, en el panel de la aplicación (donde obtiene su ID de la aplicación) debe tener al menos "Sitio web con inicio de sesión de Facebook" habilitado e introduzca la URL del sitio web. De lo contrario, no funcionará ... independientemente de si no está utilizando ningún inicio de sesión de Facebook en su sitio.

Cuestiones relacionadas