Outils et modules Apache au service du SEO - Atelier présenté lors du #teknseo 2014 http://teknseo.com
Les techniques contenues dans ce document ont été présentées dans le cadre d'un atelier au Teknseo 2014, visant à développer les connaissance des participants.
La responsabilité de son auteur ne pourrait être engagée en cas d’utilisation de ces techniques par un tiers. Le Negative SEO est considéré comme de la concurrence déloyale.
3. 3@aymerictwit
Objectifs de l'atelier:
- Apache et ses fichiers de configuration
- Utiliser les variables d'environnement (ex: cloacking, deny IP)
- Les modules à connaître
- NSEO et Duplicate Content
- Optimiser et monitorer son serveur Web
- Varnish en front pour doper ses perfs
SEO: outils et modules pour Apache
4. 4@aymerictwit
Apache c'est
- Un serveur HTTP puissant! mais parfois lourd…
- Des modules permettant de nombreuses fonctionnalités pouvant être utiles pour le SEO
- Combiner différents modules pour aller plus loin
Varnish pour mieux tirer profit des outils d'Apache tout en boostant les performances de ton serveur Web
SEO: outils et modules pour Apache
5. 5@aymerictwit
Rappel .htaccess
Pour chaque appel de fichier, Apache va vérifier la présence d’un fichier .htaccess dans tous les répertoires :http://www.monsite.com/fr/categorie/images/monimage.jpg
Si le contenu du fichier .htaccess présent dans le répertoire /var/www/monsite/ était dans le fichier de configuration global apache2conf, il ne serait chargé qu’au démarrage
du serveur
Moins d’accès disque par le daemon httpd & serveur plus rapide pour servir les fichiers
SEO: outils et modules pour Apache
/v ar /www/monsite/
/v ar/ ww w /mo nsi te/f r/
/var/www/monsite/fr/categorie/
/var/www/monsite/fr/categorie/images/
.htaccess ?
.htaccess ?
.htaccess ?
.htaccess ?
6. 6@aymerictwit
Gain de performances sans .htaccess:
D'autres sections existent pour les directives :
<Files "*.php"></Files>
<FilesMatch ".(jpe?g|png)$"></Files>
Pour désactiver les .htaccess: AllowOverride None
SEO: outils et modules pour Apache
7. 7@aymerictwit
mod_setenvif(#a2enmod setenvif)
On définit des variables d'environnement avec des IF pour interagir avec d'autres modules comme mod_headers, mod_rewrite,
mod_includes, mod_log_config…
SetEnvIfNoCase User-Agent HTTrack aspirateur
(équivalent: BrowserMatchNoCase HTTrack bot)
SetEnvIf Request_URI ".jpg$" objetimage=jpg
Liste des attributs: Remote_Host, Remote_Addr, Server_Addr, Request_Method, Request_Protocol, Request_URI, Referer
SEO: outils et modules pour Apache
8. 8@aymerictwit
mod_setenvif(#a2enmod setenvif)
Et si on cachait aux analyseurs de backlinks notre réseau de liens?
Ah! On peut les bloquer dans le robots.txt…
User-agent: AhrefsBot
Disallow: /
User-agent: MJ12bot
Disallow: /
SEO: outils et modules pour Apache
9. 9@aymerictwit
mod_setenvif(#a2enmod setenvif)
Bloquer les traceurs de liens pour planquer son réseau
SetEnvIfNoCase User-Agent "^AhrefsBot" especedindiscret
SetEnvIfNoCase User-Agent "^MJ12bot" especedindiscret
Order Allow,Deny
Allow from All
Deny from env= especedindiscret
Autre exemple : détecter la pagination pour des actions ultérieures
SetEnvIf Request_URI ".*/page/.*" stopindex
#puis mod_headers pour envoyer du noindex, follow
SEO: outils et modules pour Apache
10. 10@aymerictwit
mod_headers (#a2enmod headers)
Manipuler les en-têtes HTTP
Header set|unset|append|add Nomdelentete "Contenu"{ }
En-tête HTTP X-Robots-Tag pour Googlebot
#avec déclaration variable d'environnement
<Files "partenaires.html">Header Set X-Robots-Tag 'nofollow' env=CLOACK</Files>
En-tête HTTP X-Robots-Tag pour cacher son côté obscur
#avec déclaration variable d'environnement
Header set X-Robots-Tag "nosnippet,noarchive" CLOACK
SEO: outils et modules pour Apache
11. 11@aymerictwit
mod_headers (#a2enmod headers)
Un ordre est respecté pour l'exécution de ces directives
- Serveur principal
- Vhost (hors sections)
- Sections <Directory> et fichiers .htaccess
- <Files>
- <Location>
Utile pour les en-têtes Link (canonical, prev, netxt), X-Robots-tag mais aussi pour les en-têtes de cache.
SEO: outils et modules pour Apache
12. 12@aymerictwit
mod_rewrite (#a2enmod rewrite)
Gestion de la réécriture d'URL
Exemples d'utilisation avancés:
- Définir des variables d'environnement en fonction de plusieurs éléments
- Interagir avec d'autres modules (mod_headers, mod_proxy, etc.)
- Manipuler les URL et ce qui les composent (host, query_string)
- Gérer des migrations SEO
SEO: outils et modules pour Apache
13. 13@aymerictwit
mod_rewrite (#a2enmod rewrite)
mod_rewrite c'est plus marrant avec
- Des regexp: ^/?([A-Z] 1,4 )/(.*)${ }
- Des variables d'environnement: % HTTP_REFERER , % QUERY_STRING , % REQUEST_URI , % HTTP_USER_AGENT , % REMOTE_ADDR , % HTTP:Accept-Language …{ } { } { } { } { } { }
- Des conditions de réécriture: RewriteCond
- Des drapeaux: [R=xxx], [F], [G], [P], [CO], [S=xxx], [T= image/jpeg].
SEO: outils et modules pour Apache
14. 14@aymerictwit
mod_rewrite (#a2enmod rewrite)
- Dans une RewriteRule, on récupère les ensembles avec des $
RewriteRule ^/([a-zA-Z-]+)/([a-zA-Z-]+)/([a-zA-Z-]+)$ display.php?pays=$1&dpt=$2&ville=$3
- Dans une RewriteCond, on récupère les ensembles avec %
RewriteCond % QUERY_STRING ^page={ } (.*)$
RewriteRule ^(.*)$ /$1/page/%1/ [R=301,L]
SEO: outils et modules pour Apache
19. 19@aymerictwit
mod_rewrite (#a2enmod rewrite)
Réutiliser des détections grâce aux variables d'environnement
RewriteCond % REMOTE_HOST ^crawl-66-249-[0-9] 1,3 -[0-9] 1,3 .googlebot.com${ } { } { }
RewriteCond % HTTP:Accept-Language ^${ }
RewriteCond % HTTP_REFERER ^${ }
RewriteCond % HTTP_USER_AGENT Googlebot{ }
RewriteRule . – [E=CLOACK:true]
#on réécrit en fonction de la valeur de la variable CLOACK
RewriteCond % CLOACK !^true${ }
RewriteRule ^/?robots.txt /robotspourindiscrets.txt [L]
SEO: outils et modules pour Apache
20. 20@aymerictwit
mod_rewrite (#a2enmod rewrite)
Faire sauter toutes les variables inconnues pour se protéger du DC
RewriteCond % QUERY_STRING !^${ }
RewriteCond % QUERY_STRING !(utm_source|utm_medium|utm_campaign){ }
RewriteRule ^(.*)$ /$1? [R=301,L]
Hotlinking d'images
RewriteCond % HTTP_REFERER !^${ }
RewriteCond % HTTP_REFERER !^http://www.urldemonsite.com/$ [NC]{ }
RewriteRule ^.*.(gif|png|jpe?g)$ /hotlinking.php?pict=% REQUEST_URI [L,NC]{ }
SEO: outils et modules pour Apache
21. 21@aymerictwit
mod_rewrite (#a2enmod rewrite)
Migration SEO et performances
RewriteBase /forum/
RewriteCond % REQUEST_URI !^/forum/.*${ }
RewriteRule . – [S=698]
RewriteRule ^viewtopic.php?id=279 /forum/bons-reductions-cdiscount.html [R=301,L]
RewriteRule ^viewtopic.php?id=134 /forum/comment-devenir-riche.html [R=301,L]
……. Si l'URL ne contient pas /forum/ (forum qui a migré), on saute les 698 règles qui suivent (1 règle = 1 RewriteRule)
Ou rewriteMap pour y voir plus clair
RewriteMap : RewriteRule avec un fichier de correspondance (préférence pour les .dbm)
SEO: outils et modules pour Apache
22. 22@aymerictwit
mod_ext_filter (#a2enmod ext_filter)
Envoyer la réponse d'Apache à un programme externe
Exemples d'utilisation:
- Utiliser des commandes tels que sed, awk pour faire du search-and-replace avancé (ex: copyright en footer sur des pages
statiques, nofollow)
- Modification d'images: watermark, cropping, filters, effects…
- Ton imagination
SEO: outils et modules pour Apache
25. 25@aymerictwit
mod_substitute (#a2enmod substitute)
Effectuer des rechercher/remplacer dans le corps des réponses
Exemples d'utilisation:
- Modifier les styles (font, color, etc.) sur l'ensemble d'un site sans modifier toutes les feuilles de style
- Nettoyer des thèmes Wordpress malveillant ou supprimer un hack en attendant de trouver une solution plus clean (origine
du code généré)
- Cacher ses liens d'affiliation
- Cleaner du contenu UGC, filtrer des mots
SEO: outils et modules pour Apache
26. 26@aymerictwit
mod_substitute (#a2enmod substitute)
AddOutputFilterByType SUBSTITUTE text/html
Remplacer un mot par un autre
Substitute "s/SEO/référencement naturel/i"
Ajouter l'appel d'un fichier JS
Substitute "s|</head>|<script src="http://www.monsite.com/js/jquery.js"></head>|ni"
Changement d'un répertoire image
Substitute "s| src="http://www.yapasdequoi.com/wp-content/uploads/([^"]*)"| src="/pict/$1"|i"
i = insensible à la casse, n = chaîne fixe, pas de regexp
SEO: outils et modules pour Apache
27. 27@aymerictwit
Reverse Proxy, ça te parle?
Invisible pour l'internaute, le ReverseProxy va récupérer du contenu sur un backend, pour éventuellement le mettre
en cache
1 requête pour de multiples requêtes utilisateur
SEO: outils et modules pour Apache
28. 28@aymerictwit
mod_proxy (#a2enmod proxy,proxy_http,proxy_html)
Mandataire inversé : <client > <reverseproxy> <sitedistant>, transparent pour l'utilisateur
En détournant l'utilisation d'un reverse proxy, nous allons pouvoir:
- Faire du NSEO Duplicate (reverse proxy cloacké)
- Dupliquer un site à la volée (et en modifier certains éléments)
SEO: outils et modules pour Apache
29. 29@aymerictwit
mod_proxy (#a2enmod proxy,proxy_http,proxy_html)
Duplicate NSEO sur une homepage (attention au nombre de liens)
ProxyPreserveHost Off
ProxyRequests off
RequestHeader unset Accept-Encoding env=CLOACK
Header Set X-Robots-Tag "noarchive,nosnippet" env=CLOACK
RewriteEngine On
RewriteCond % ENV:CLOACK true{ }
RewriteCond % REQUEST_URI ^/${ }
RewriteRule . http://www.mattcutts.com/ [P,L]
ProxyPassReverse / http://www.mattcutts.com/
[P]= proxy (traitement de la requête)
SEO: outils et modules pour Apache
30. 30@aymerictwit
mod_proxy (#a2enmod proxy,proxy_http,proxy_html)
Duplicate NSEO sur une homepage… et dans le cas inverse
RewriteRule ^index.php$ - [L]
RewriteCond % ENV:CLOACK !true{ }
RewriteCond % REQUEST_FILENAME !-f{ }
RewriteCond % REQUEST_FILENAME !-d{ }
RewriteRule . /index.php [L]
Reverse proxy applicable à des pages spécifiques ou à l'ensemble d'un site
Spécial dédicace Tiger http://www.seoblackout.com/2014/02/01/negative-seo-duplicate-content-mattcutts/
[
SEO: outils et modules pour Apache
31. 31@aymerictwit
mod_proxy (#a2enmod proxy,proxy_http,proxy_html)
S'attribuer la propriété d'un site de façon temporaire pour
- S'inscrire dans les annuaires alors que le site est "en construction"
- Poser des liens avec un site pourri/thématique touchy & co: (referer inside)
- …ton imagination
SEO: outils et modules pour Apache
32. 32@aymerictwit
mod_proxy (#a2enmod proxy,proxy_http,proxy_html)
Copier un site à la volée en modifiant quelques détails:
Header set X-Robots-Tag "noindex,nofollow"
ServerName usurpateur.yapasdequoi.com
ProxyPreserveHost Off
ProxyRequests Off
ProxyPass / http://www.laurentbourrelly.com/
ProxyPassReverse / http://www.laurentbourrelly.com/
#RequestHeader unset Accept-Encoding
SetOutputFilter INFLATE;DEFLATE
AddOutputFilterByType SUBSTITUTE text/html
Substitute "s|Laurent Bourrelly|Kevin Richard|i"
Substitute "s|SEO |Blackhat SEO|i"
Substitute "s|<img src="/images/laurent-bourrelly.png.*">|<img src=http://www.chambe-carnet.com/wp-content/uploads/2012/01/photo-chambe-carnet-kevin-richard-251x300.jpg"
width="150" height="150">|i"
ProxyHTMLEnable On
ProxyHTMLURLMap http://www.laurentbourrelly.com/ /
SEO: outils et modules pour Apache
Ex: http://usurpateur.yapasdequoi.com
33. 33@aymerictwit
Les Logs, en cas de soucis avec ta config
- Log d'erreurs
#nano /var/log/apache2/error.log
- On crée des logs spécifiques avec les variables d'environnements
SetEnvIf User-Agent "Googlebot/2.1" googlebot_log
CustomLog /var/log/apache2/google.log combined env=googlebot_log
- On stock tous les referers sauf le local
SetEnvIf Referer www.yapasdequoi.com reflocal
CustomLog /var/log/apache2/referer.log combined env=!reflocal
- On envoie les lignes de logs dans un programme
CustomLog "|/var/www/scripts/analyse.php" formatspecifique env=watussi
SEO: outils et modules pour Apache
34. 34@aymerictwit
Et les outils Apache pratiques
Infos sur la configuration du serveur que tu ne connais pas (vhosts)
#apache2ctl –S
- Tester les performances du serveur avec Apache Benchmark
#ab -n 1000 -c 10 http://www.google.fr/
(1000 requêtes avec10 requêtes simultanées… Tiens, on peut faire du POST avec aussi )
- Résoudre des IP
logresolve stats.txt -c /var/log/apache2/googlebot.log hotesgoogle.txt
SEO: outils et modules pour Apache
35. 35@aymerictwit
Tu gères sur Apache maintenant? Alors on passe aux choses sérieuses…
SEO: outils et modules pour Apache
36. 36@aymerictwit
Varnish = "The" reverse proxy
il ne sait faire que ça, mais il le fait très bien
https://www.youtube.com/watch?v=x7t2Sp174eI
Varnish
39. 39@aymerictwit
Merci d'avoir choisi cet atelier!
Contact : http://twitter.com/aymerictwit
Google+: https://plus.google.com/+AymericBouillat
Linkedin: http://fr.linkedin.com/in/aymericbouillat
Keep in touch
Editor's Notes
Directive location et directory, conf serveur et vhosts, plus rapides pour accélerer des traitements ne ciblant que des parties du site
Pas que les analyseurs, les outils de crawl comme Xenu (pour ce qui se font scrapper leur annuaires-&gt; domaining) ou autres…
On peut bloquer les protocoles aussi (request_method) hack avec limit get post / demo
Tabloid norvégien , L’architecte du produit est le danois Poul-Henning Kamp, également contributeur historique au projet FreeBSD.
Varnish=vernis
Différence avec plug Wordpress. Utile pour les ressources dynamiques.
Idéal pour les montées en charge.
Contenu anonyme, attention cookies & co ajax, norme ESI