Aller au contenu principal

SEO Smart FAQ

Description

Smart FAQ étant entièrement générée via de l'AJAX, celle-ci ne sera pas référencée de façon optimale par les moteurs de recherche, comme notamment Google. Pour cette raison, nous utilisons la méthode la plus performante à ce jour, à savoir celle du Dynamic Rendering qui consiste à « servir » des templates HTML statiques équivalents à l'affichage effectué pour l'internaute, que l'on aura au préalable générés, et qui seront délivrés exclusivement aux moteurs de recherche pour un référencement optimal.

Implémentation

Apache

Apache: Etape 1

Dans le fichier httpd.conf il faut vérifier que les modules soient bien activés

  • LoadModule proxy_http_module lib/httpd/modules/mod_proxy_http.so
  • LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

Apache: Etape 2

Intégrer sous APACHE les règles suivantes :

### Activate the rewrite rule engine
RewriteEngine On

### If the request comes from a bot, set a flag to proxy the request to SEO4Ajax
RewriteCond %{ENV:PROXY} !true
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/URI-A-DEFINIR
RewriteCond %{HTTP_USER_AGENT} (google|bot|spider|pinterest|crawler|archiver|flipboardproxy|mediapartners|facebookexternalhit|insights|quora|whatsapp|slurp) [NC,OR]
RewriteCond %{HTTP:from} .+
RewriteRule .* - [E=PROXY:true,E=REQUEST_PATH:%{REQUEST_URI}]

### Proxify the request to SEO4Ajax
RewriteCond %{ENV:PROXY} true
RewriteRule ^(.*)$ http://api.seo4ajax.com/CLE-A-DEFINIR%{ENV:REQUEST_PATH} [P,QSA,L]

### If request sitemap file, set a flag to proxy the request to SEO4Ajax
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/sitemap_seo4ajax.xml
RewriteRule .* - [E=PROXY_SITEMAP:true]

### Proxify the request to SEO4Ajax
RewriteCond %{ENV:PROXY_SITEMAP} true
RewriteRule ^(.*)$ http://api.seo4ajax.com/CLE-A-DEFINIR/sitemap.xml [P,QSA,L]

Apache: Etape 3

Remplacer les termes CLE-A-DEFINIR et URI-A-DEFINIR par les éléments ci-dessous.

ParamètresDescription
CLE-A-DEFINIRC'est une donnée que Smart Tribune vous fournit. C'est le token permettant d'autoriser les appels à SEO4AJAX.
URI-A-DEFINIRURI de la page de FAQ sur le site client.

Apache: Exemple

Pour l'url de FAQ http://example.com/fr/faq, je dois remplacer dans le snippet ci-dessus ^/URI-A-DEFINIR to ^/fr/faq

RewriteCond %{REQUEST_URI} ^/URI-A-DEFINIR

va devenir :

RewriteCond %{REQUEST_URI} ^/fr/faq

Nginx

Nginx: Etape 1

Intégrer sous NGINX les règles suivantes :

location /URI-A-DEFINIR {
### If the files exists on the server, serve it, otherwise execute the @s4a_analyse location
try_files $uri @s4a_analyse;
}

### This location determines if a request comes from bots
location @s4a_analyse {

### If the request comes from a bot, proxy the request through /s4a_proxy location
if ($http_user_agent ~* (google|bot|spider|pinterest|crawler|archiver|flipboardproxy|mediapartners|facebookexternalhit|insights|quora|whatsapp|slurp)) {
rewrite ^(.*)$ /s4a_proxy last;
}

if ($http_from ~* .+) {
rewrite ^(.*)$ /s4a_proxy last;
}
}

### This location proxy requests coming from bots to SEO4Ajax
### You can update the resolver directive with your own DNS provider if needed
location /s4a_proxy {
set $s4a_domain 'https://api.seo4ajax.com/CLE-A-DEFINIR';
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
resolver 8.8.8.8 8.8.4.4;
proxy_pass $s4a_domain$request_uri;
}

### Following rules are used to provide FAQ dedicated sitemap
location /sitemap_seo4ajax.xml {
rewrite ^(.*)$ /s4a_proxy_sitemap last;
}

location /s4a_proxy_sitemap {
set $s4a_domain 'https://api.seo4ajax.com/CLE-A-DEFINIR';
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
resolver 8.8.8.8 8.8.4.4;
proxy_pass $s4a_domain/sitemap.xml;
}

Nginx: Etape 2

  • Remplacer les termes CLE-A-DEFINIR and URI-A-DEFINIR par les éléments ci-dessous.
  • Ces règles nécessitent d'être adaptées en fonction de votre usage afin de servir la page FAQ de votre application dans le cas où la requête ne viendrait pas d'un bot.
ParamètresDescription
CLE-A-DEFINIRC'est une donnée que Smart Tribune vous fournit. C'est le token permettant d'autoriser les appels à SEO4AJAX.
URI-A-DEFINIRURI de la page de FAQ sur le site client.

Nginx: Example

Pour l'url de FAQ http://example.com/fr/faq, je dois remplacer dans le snippet ci-dessus /URI-A-DEFINIR to /fr/faq

location /URI-A-DEFINIR

va devenir :

location /fr/faq

Si vous avez plusieurs location pour votre faq :

location ~ (/fr/faq|/fr-be/faq)
info

IIS server : règles disponibles pour IIS Server sur demande

Vérification

Méthode 1

Afin de vérifier l'implémentation des règles et par la même occasion accélérer le référencement de votre nouvelle FAQ, vous pouvez utiliser l'outil Google Search Console (GSC) afin de vérifier que le contenu des templates HTML statiques sont correctement délivrés aux moteurs de recherche et si besoin, de forcer la première indexation manuellement.

Méthode 2

Pour vérifier la bonne implémentation, il vous faut vérifier le comportement de la page en tant que Bot de moteur de recherche et donc pour résumer simplement en tant que GoogleBot.

Procédure A

  1. Installer une extension Chrome prévue à cet effet

  2. Cliquer sur Googlebot (Google's spider)

  3. Se rendre sur la page d'accueil de la FAQ (ou la rafraîchir si vous êtes déjà dessus)

  4. Cliquer droit > Afficher le code source de la page

  5. Rechercher la balise <div id="st-faq"></div>

    • Si vous n'avez pas de contenu, alors il est fortement possible que l'implémentation des règles ne soit pas bonne, il faut vérifier votre configuration serveur (proxy_http pour APACHE, blocage au niveau de votre CDN, robots.txt, firewall, ...) et recommencer la procédure.
    • Si vous avez du contenu à l'intérieur de la balise, alors les snapshots sont bien présents et les bots sont bien redirigés vers la page en HTML statique. La procédure se termine ici mais nous vous conseillons d'utiliser la procédure B (ci-dessous) pour avoir une analyse plus poussée.

Procédure B

  1. Installer CURL sur votre ordinateur si ça n'est pas le cas (Comment installer CURL)

  2. Lancer la commande suivante depuis votre CMD/Terminal:

    curl -L -A "Googlebot/2.1 (+http://www.google.com/bot.html)" https://example.com/fr/faq
  3. Rechercher la balise <div id="st-faq"></div>

    • Si vous n'avez pas de contenu, alors il est fortement possible que l'implémentation des règles ne soit pas bonne, il faut vérifier votre configuration serveur (proxy_http pour APACHE, blocage au niveau de votre CDN, robots.txt, firewall, ...) et recommencer la procédure.
    • Si vous avez du contenu à l'intérieur de la balise, alors les snapshots sont bien présents et les bots sont bien redirigés vers la page en HTML statique.
  4. Pour confirmer que vous avez bien un snapshot de SEO4AJAX il faut lancer la ligne de commande suivante:

    curl -I -A "Googlebot" https://example.com/fr/faq
  5. Le résultat devrait vous retourner le header de la page et une ligne se nommant Vary et contenant X-S4a-Debug

    • C'est le cas, et donc la procédure se termine ici, tout est OK.
    • Ça n'est pas le cas et il faut vérifier votre configuration car il est possible que vous ayez un CDN qui s'occupe de cela ou un outil de Server Side Rendering qui est priorisé par rapport à SEO4AJAX. Il faut donc investiguer et recommencer la procédure.

Forcer manuellement l'indexation du contenu

Rendez-vous sur Google Search Console (GSC) puis sélectionnez votre site (si celui-ci n'existe pas, veuillez l'ajouter en suivant la procédure décrite).

Dirigez-vous dans la section Exploration puis « Explorer comme google » (Fetch as Google) et renseignez l'url de votre FAQ puis lancez l'exploration. Si vous observez le contenu HTML de la FAQ (catégories, questions entre la balise div ayant pour identifiant st-faq - <div id="st-faq"></div>), vous pouvez "Envoyer pour indexation" en cliquant sur le bouton prévu à cet effet.

Il est parfois nécessaire de spécifier à Google comment se comporter avec les paramètres (query string) utilisés par la FAQ, pour cela il vous suffit d'éditer les réglages dans la section "Ancien outils et Rapports" puis "Paramètres d'URL" puis pour les paramètres suivants :

  • question
  • category

Configurer de la façon suivante:

  • Ce paramètre modifie-t-il le contenu de la page affichée par l'internaute ? => Oui
  • Comment ce paramètre affecte-t-il le contenu de la page ? => Restriction
  • Parmi les URL contenant ce paramètre, lesquelles doivent être explorées par Googlebot ? => Toutes les URL