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ètres | Description |
---|---|
CLE-A-DEFINIR | C'est une donnée que Smart Tribune vous fournit. C'est le token permettant d'autoriser les appels à SEO4AJAX. |
URI-A-DEFINIR | URI 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
andURI-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ètres | Description |
---|---|
CLE-A-DEFINIR | C'est une donnée que Smart Tribune vous fournit. C'est le token permettant d'autoriser les appels à SEO4AJAX. |
URI-A-DEFINIR | URI 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)
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
Installer une extension Chrome prévue à cet effet
Cliquer sur
Googlebot (Google's spider)
Se rendre sur la page d'accueil de la FAQ (ou la rafraîchir si vous êtes déjà dessus)
Cliquer droit > Afficher le code source de la page
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.
- 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 (
Procédure B
Installer CURL sur votre ordinateur si ça n'est pas le cas (Comment installer CURL)
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
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.
- 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 (
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
Le résultat devrait vous retourner le header de la page et une ligne se nommant
Vary
et contenantX-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