2012-04-10 14 views
8

Mam strukturę HTML mojej strony podaną poniżej. Dodałem wszystkie meta og tagi, ale nadal Facebook nie jest w stanie zeskrobać żadnych informacji z mojej strony.Facebook nie jest w stanie zeskanować mojego adresu 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> 
    ..... 

Kiedy wpisać adres URL w facebook debugger (https://developers.facebook.com/tools/debug), dostaję następujące komunikaty:

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. 

Dlaczego nie czyta facebook informacje o metatagach? Strona jest dostępna i nie kryje się za logowania itp

UPDATE

Ok zrobiłem trochę debugowania i to co znalazłem. W moim katalogu mam ustawioną regułę htaccess - używam frameworka PHP Codeigniter i mam regułę htaccess do usunięcia index.php z adresu URL.

Tak więc, kiedy dodaję URL do facebookowego debuggera (https://developers.facebook.com/tools/debug) bez index.php, Facebook pokazuje 404, ale kiedy dodaję URL z index.php, jest w stanie przeanalizować moją stronę.

Jak mogę zrobić zawartość zeskanowaną na facebooku, gdy adres URL nie zawiera pliku index.php?

To moja zasada .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

Zgłasza kod błędu 404 (Nie znaleziono). Tam ** musi ** coś nie tak z adresem URL, który je karmisz. –

+0

Cześć Klaus, zaktualizowałem moje pytanie z debugowaniem, które zrobiłem. Proszę spojrzeć i daj mi znać swoje komentarze. – Ninja

Odpowiedz

8

Dokumentacja zawiera szczegółowe informacje na temat Facebook Open Graph Protocol i jak włączyć odpowiednie znaczniki meta tak, że Facebook może zeskrobać URL dokładnie.

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

Zasadniczo co będziemy chcieli zrobić, to to jakiś specjalny og:tags zamiast (lub oprócz) istniejących tagów meta do.

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

Jeśli masz plik .htaccess przekierowanie rzeczy i czyni go trudnym do Facebook zeskrobać adres URL może być w stanie uciec z Facebooka wykrywania robota z .htaccess i karmienie go poprawne tagi. Wierzę, agent użytkownika, że ​​robot Facebook zapewnia to:

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

Dokumentacja zawiera również sekcję mówić o making sure that their crawlers can access your site.

W zależności od konfiguracji możesz to sprawdzić, patrząc na swoje serwery access_log. W systemie UNIX, w którym działa apache, dziennik dostępu znajduje się pod adresem /var/log/httpd/access_log.

Więc można użyć wpisu podobnego do tego w pliku .htaccess -

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

The [L,QSA] flagi, które umieściłem tam stwierdzenie, że jest to L ast zasada, że ​​będą egzekwowane na prąd żądanie (L) i QSA (String String Append) stwierdza, że ​​każdy podany łańcuch zapytania zostanie przekazany wraz z przepisem URL.Na przykład, adres URL, takich jak:

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

zostaną przekazane do ogtags.php jak ta - ogtags.php?id=foo&action=bar. Twój plik ogtags.php wygeneruje dynamiczne metadane OG: zgodnie z parametrami, które zostały przekazane.

Teraz, gdy twój plik .htaccess wykryje agenta użytkownika Facebooka, przekaże mu plik ogtags.php (który może zawierać poprawną informację o og: meta). Pamiętaj o innych zasadach, które masz w swojej .htaccess i jak mogą wpływać na nowe reguły.

Z wpisów .htaccess, które zostały szczegółowo opisane, polecam umieszczenie tej nowej "reguły Facebooka" jako pierwszej reguły.

+0

Cześć Lix, bardzo dziękuję za aktualizację. Mam jednak problem - w regule przepisywania wzmiankowałeś, że ładuję ogtags.html, ale metatagi będą miały zawartość dynamiczną, w zależności od strony, która jest żądana. Nie mogę podać statycznej strony html. Próbowałem zastąpić ogtags.html tą zasadą: RewriteRule^(. *) $ Index.php?/$ 1 [L], ale nie pomogło. Wszelkie przemyślenia na temat tego, jak to osiągnąć? – Ninja

+0

@Lix: czy masz jakiś pomysł, dlaczego dostaję błąd 500 z narzędzia do debugowania facebooka, kiedy używam twoich dwóch zasad? z góry dzięki ... – sergio

+0

Hej tam @ser - Czy sprawdziłeś dzienniki serwera w poszukiwaniu żądań od Facebooka, których odmawiasz? Właśnie dodałem [ten link] (https://developers.facebook.com/docs/opengraph/howtos/maximizing-distribution-media-content/#crawl) do mojej odpowiedzi tutaj, może ci się przydać. – Lix

1

Miałem ten sam problem, który był: Zły kod odpowiedzi: URL zwrócił zły kod odpowiedzi HTTP.

ale dziwnie to, co go rozwiązać: Dodałem

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

na mojej stronie tagu głowy i to działało.

Pamiętaj, że na pulpicie aplikacji (gdzie otrzymujesz identyfikator aplikacji) musisz mieć co najmniej "Witrynę z Facebookiem" i wpisać adres URL witryny. W przeciwnym razie nie będzie działać ... niezależnie od tego, czy nie używasz żadnych logowań Facebooka w swojej witrynie.

Powiązane problemy