CakePHP-Fr.Org

Forum francophone du Framework CakePHP

Vous n'êtes pas identifié.

#1 07-08-2016 08:53:52

Padechoco
Crêpe Suzette
Date d'inscription: 07-08-2016
Messages: 9

[RESOLU] [v2.8.6] Facebook scraping et google exploration

Bonjour,

J'ai un site internet développé avec CakePHP en version 2.8.6 et qui est hébergé chez OVH avec une offre "Perso".

Lorsque je tente de partager le site sur facebook, celui ci ne prend pas en compte les balises meta "og:". J'ai utilisé le debuger facebook (https://developers.facebook.com/tools/debug/sharing/) et il ne trouve pas non plus les balises et me donne en warnings :

The 'og:image' property should be explicitly provided, even if a value can be inferred from other tags.
The 'og:url' property should be explicitly provided, even if a value can be inferred from other tags.
The 'fb:app_id' property should be explicitly provided, Specify the app ID so that stories shared to Facebook will be properly attributed to the app. Alternatively, app_id can be set in url when open the share dialog.

J'ai vérifié les logs qui semblent ok :

173.252.90.234 www.cesarparisot.com - [07/Aug/2016:08:19:16 +0200] "GET / HTTP/1.1" 200 2677 "-" "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"

J'ai testé ensuite de remplacer le code situé dans /app/webroot/index.php par celui de mon layout avec les balises meta et là ça fonctionne ! Ce qui me laisse penser que le problème se situe bien au niveau du framework.

Extrait du /app/View/Layouts/default.ctp :

Code: php

  1. <head>
  2.   <?php echo $this->Html->charset(); ?>
  3.   <title>César Parisot</title>
  4.   <meta content="initial-scale=1.0" name="viewport" />
  5.   <meta property="og:site_name" content="César Parisot" />
  6.   <meta property="og:url" content="<?php echo $this->Html->url('/', true); ?>" />
  7.   <meta property="og:type" content="website" />
  8.   <meta property="og:title" content="Cesar Parisot" />
  9.   <meta property="og:description" content="Cesar Volodia Parisot (born 21 May 1990 in Dourdan ) is a French artist. He lives and works in Paris." />
  10.   <meta property="og:image" content="<?php echo $this->Html->url('/img/about/Cesar.jpg', true); ?>" />
  11.   <?php
  12.     echo $this->Html->meta('icon');
  13.     echo $this->Html->meta('description', 'Cesar Volodia Parisot (born 21 May 1990 in Dourdan ) is a French artist. He lives and works in Paris.');
  14.     echo $this->Html->meta('keywords', 'Cesar,Parisot,Volodia,France,Français,Paris,Art,Artiste,Contemporain,Sculptures,Bas-relief,Contemporaine,Photos,Photographies,Urbaine,Urbain,noir-et-blanc,NB,Biennale,Exposition,Pigeons,Mort,Identité,Empreinte-digitale,Or,Dorée,Bois');
  15.      
  16.     echo $this->Html->css('jquery-ui.min');
  17.     echo $this->Html->css('magnific-popup');
  18.     echo $this->Html->css('slick');
  19.     echo $this->Html->css('slick-theme');
  20.     echo $this->Html->css('style');
  21.      
  22.     echo $this->Html->script('jquery-3.1.0.min');
  23.     echo $this->Html->script('jquery-ui.min');
  24.     echo $this->Html->script('datepicker-fr');
  25.     echo $this->Html->script('jquery.magnific-popup.min');
  26.     echo $this->Html->script('slick.min');
  27.     echo $this->Html->script('script');
  28.  
  29.     echo $this->fetch('meta');
  30.     echo $this->fetch('css');
  31.     echo $this->fetch('script');
  32.   ?>
  33. </head>

J'ai un problème semblable avec l'outil d'exploration du Google webmaster Tools qui me retourne comme erreur :

URL momentanément inaccessible

J'ai tenté d'installer une version moins récente de CakePHP, la version 2.7.1, mais ça ne change rien.

Lien du site internet : http://www.cesarparisot.com/

Contenu de mon robots.txt :

Code: php

  1. User-agent: *
  2. Disallow: /admin/

Est ce que quelqu'un a déjà rencontré ce genre de problème ? Est ce que vous avez une idée pour permettre à Facebook et Google de scraper correctement mon site web ?

Merci.

Dernière modification par Padechoco (09-08-2016 07:39:58)

Hors ligne

 

#2 07-08-2016 15:00:34

Nic0[]
Brownie
Date d'inscription: 07-11-2015
Messages: 28

Re: [RESOLU] [v2.8.6] Facebook scraping et google exploration

bonjour,

ton fichier  robots.txt doit être placé dans le dossier app/webroot/

cordialement

Hors ligne

 

#3 07-08-2016 16:52:14

Padechoco
Crêpe Suzette
Date d'inscription: 07-08-2016
Messages: 9

Re: [RESOLU] [v2.8.6] Facebook scraping et google exploration

Oui il est au bon endroit, j'ai essayé avec et sans le fichier robots.txt ça ne change rien.

Une autre idée ?

Hors ligne

 

#4 07-08-2016 18:27:19

Nic0[]
Brownie
Date d'inscription: 07-11-2015
Messages: 28

Re: [RESOLU] [v2.8.6] Facebook scraping et google exploration

je ne vois pas la balise de vérification de google?

Code: php

  1. <meta name="google-site-verification" content=" code de vérification" />

pour de qui est de og:image --> l'image n'existe pas !!

Code: php

  1. <meta property="og:image" content="<?php echo $this->Html->url('/img/about/Cesar.jpg', true); ?>" />

remplace par:

Code: php

  1. <meta property="og:image" content="<?php echo $this->Html->url('/img/about/IMG_304.jpg', true); ?>" />

Dernière modification par Nic0[] (07-08-2016 18:35:22)

Hors ligne

 

#5 08-08-2016 04:09:16

Padechoco
Crêpe Suzette
Date d'inscription: 07-08-2016
Messages: 9

Re: [RESOLU] [v2.8.6] Facebook scraping et google exploration

Je n'ai pas utilisé la méthode de la balise meta de vérification de google pour être propriétaire du site sur Google Webmater Tools. Il existe d'autres méthodes comme celle du tag google analytics.

J'ai déjà essayé de renommer l'image (même si le nom actuel ne possède pas de caractères spéciaux) et ça ne change rien.

L'erreur me semble plus globale, au niveau du framework je pense, la balise image n'est pas la seule à ne pas être reconnue et si je met mon code du layout directement dans un index.html, ça fonctionne.

Merci quand même pour ton aide wink

Hors ligne

 

#6 09-08-2016 07:38:54

Padechoco
Crêpe Suzette
Date d'inscription: 07-08-2016
Messages: 9

Re: [RESOLU] [v2.8.6] Facebook scraping et google exploration

J'ai finalement explorer le coeur du framework pour trouver où se situait le problème et j'ai finit par trouver ça :
/lib/Cake/Network/CakeResponse.php

Code: php

  1. public function send() {
  2.   if (isset($this->_headers['Location']) && $this->_status === 200) {
  3.     $this->statusCode(302);
  4.   }
  5.  
  6.   $codeMessage = $this->_statusCodes[$this->_status];
  7.   $this->_setCookies();
  8.   $this->_sendHeader("{$this->_protocol} {$this->_status} {$codeMessage}");
  9.   $this->_setContent();
  10.   $this->_setContentLength();
  11.   $this->_setContentType();
  12.   foreach ($this->_headers as $header => $values) {
  13.     foreach ((array)$values as $value) {
  14.       $this->_sendHeader($header, $value);
  15.     }
  16.   }
  17.   if ($this->_file) {
  18.     $this->_sendFile($this->_file, $this->_fileRange);
  19.     $this->_file = $this->_fileRange = null;
  20.   } else {
  21.     $this->_sendContent($this->_body);
  22.   }
  23. }

Il se trouve que le recalcule par Cake du "Content-Length" est incorrect et empêche Facebook et Google de scraper la page et son contenu.
En commentant la ligne "$this->_setContentLength();", mon problème est résolu.

J'ai beaucoup googlé pour essayer de trouver une autre solution mais étrangement personne n'a l'air d'avoir eu ce problème. J'espère que si quelqu'un d'autre tombe sur ce sujet ma solution pourra l'aider.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB
Traduction par FluxBB.fr