Joomla et le SEO

Joomla est un CMS qui n’est plus tellement utilisé, et je dois dire que d’un point de vue SEO, ca se comprend. Je vais lister ici les erreurs de base du CMS, et tâcher de vous montrer comment les corriger.

A l’installation, joomla, tout est très simple. On clique sur suivant, on n’oublie pas de remplacer le fichier .htaccess.txt par .htaccess à la racine pour bien profiter de l’url rewriting, et et dans la configuration on positionne les élements suivants:

  • Oui sur Réécriture d’URL en clair (SEF)
  • Oui sur Réécriture au ‘vol’ des URL
  • Non sur Ajouter un suffixe aux URL
  • Non sur Alias Unicode
  • Après sur Nom du site dans les titres

La base est correcte, on peut alors se dire que tout va bien. On ajoute alors un module latest news sur la home, et on commencer à créer des articles dans des catégories.
Ca y’est les problèmes commencent:

Vos urls sont sous cette forme
12-materiel/6-souris-kone au lieu de /materiel/souris-kone

Les problèmes d’url rewriting:

Joomla utilise l’id de la catégorie, et de l’article pour savoir quoi afficher. On teste alors l’url par 12-materiel/souris-kone, arg ca marche aussi et il n’y a pas de canonical ! Ca veut dire qu’on commence déjà avec un bon niveau de duplicate possible. Et surprise dans joomla (par défaut), il n’y a pas de système de redirections, ce qui veut dire qu’il va falloir planquer ces urls le mieux possible.

Attention, ce qui marche avec l’article ne marche pas avec la catégorie, vous êtes obligé de vous tapez l’id de catégorie dans l’url (chouette, non ?).

Si vous souhaitez ajouter des champs personnalisés (comme dans Drupal) à vos contenus, vous aurez surement installé K2. K2 c’est un peu une fonction qui devrait être native et qui corrige pas mal de défaut à Joomla, mais il faut l’anticiper dès le démarrage du projet, sinon ca va être bien galère à installer (car il gére son système de template de façon indépendante).

Dans les paramètres avancés de K2, vous devez configurez les options suivantes:

  • Oui sur Forcer le remplacement des caractères dans les url SEF
  • Oui sur Activer les URL SEF avancées pour K2
  • Non sur Utiliser les ID des éléments dans l’URL
  • Oui sur Utiliser les alias des titres des éléments
  • – sur ID de l’élément et séparateur de l’alias des titres
  • Non sur Utiliser l’ID de la catégorie dans les URL
  • – sur ID de la catégorie et séparateur de l’alias des titres
  • Oui sur Utilisez les alias des titres de la catégorie

Ca y’est en passant par K2, vous pouvez enfin avoir des urls correctes, mais pas toujours. Parfois sur certains modules vous aurez ceci: index.php?option=com_k2&view=item&id=6:souris-kone&Itemid=197
Devinez quoi, il n’y a toujours pas de canonical et de redirections automatiques.

Là, vous vous dites: « mais c’est quoi ce CMS de M### qui me génére autant d’url sans m’en fournir une correcte »; et vous n’aurez pas complètement tord.

Au passage ,voici une petite astuce pour générer des liens vers vos contenus K2 en code PHP:

require_once(JPATH_BASE.'/components'.DS.'com_k2'.DS.'helpers'.DS.'route.php');
$url = JURI::base().K2HelperRoute::getItemRoute($r->id.':'.urlencode($r->alias),$r->catid.':'.urlencode($r->catalias));

Et maintenant le plugin qui vous sauvera la vie: Artio JoomSEF

Grâce à lui, vous pouvez enfin choisir vos urls et les réécrire sous la forme que vous le souhaitez, vous aurez les canonical et vous pouvez gérer un sitemap digne de ce nom (sans se galérer avec ce système).

Générer un sitemap.xml avec un XMAP pour Joomla avec le .htaccess

RewriteCond %{HTTP_HOST} ^www\.votresite\.com
RewriteRule ^sitemap.xml$ http://www.votresite.com/index.php?option=com_xmap&id=1&view=xml&format=html [R=301,L]

Optimisation des performances sur le .htaccess

Je n’allais pas vous laisser partir sans quelques lignes d’optimisations des images, et autres css. Rajoutez donc ceci dans le htaccess


<IfModule mod_deflate.c>
 <IfModule mod_headers.c>
 Header append Vary User-Agent env=!dont-vary
 </IfModule>
 AddOutputFilterByType DEFLATE text/css text/x-component application/x-javascript application/javascript text/javascript text/x-js text/html text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon application/json
 <IfModule mod_mime.c>
 # DEFLATE by extension
 AddOutputFilter DEFLATE js css htm html xml
 </IfModule>
</IfModule>

# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

# Or, compress certain file types by extension:
<files *.html>
SetOutputFilter DEFLATE
</files>

# Turn on Expires and set default expires to 1 week
ExpiresActive On
ExpiresDefault A604800

# Set up caching on media files for 1 week
<FilesMatch "\.(ico|gif|jpg|jpeg|png|flv|pdf|swf|mov|mp3|wmv|ppt)$">
 ExpiresDefault A604800
 Header append Cache-Control "public"
</FilesMatch>

# Set up 48 Hour caching on commonly updated files
<FilesMatch "\.(xml|txt|html|js|css)$">
 ExpiresDefault A604800
 Header append Cache-Control "public"
</FilesMatch>

# BEGIN W3TC Browser Cache
<IfModule mod_mime.c>
 AddType text/css .css
 AddType application/x-javascript .js
 AddType text/x-component .htc
 AddType text/html .html .htm
 AddType text/richtext .rtf .rtx
 AddType image/svg+xml .svg .svgz
 AddType text/plain .txt
 AddType text/xsd .xsd
 AddType text/xsl .xsl
 AddType text/xml .xml
 AddType video/asf .asf .asx .wax .wmv .wmx
 AddType video/avi .avi
 AddType image/bmp .bmp
 AddType application/java .class
 AddType video/divx .divx
 AddType application/msword .doc .docx
 AddType application/vnd.ms-fontobject .eot
 AddType application/x-msdownload .exe
 AddType image/gif .gif
 AddType application/x-gzip .gz .gzip
 AddType image/x-icon .ico
 AddType image/jpeg .jpg .jpeg .jpe
 AddType application/vnd.ms-access .mdb
 AddType audio/midi .mid .midi
 AddType video/quicktime .mov .qt
 AddType audio/mpeg .mp3 .m4a
 AddType video/mp4 .mp4 .m4v
 AddType video/mpeg .mpeg .mpg .mpe
 AddType application/vnd.ms-project .mpp
 AddType application/x-font-otf .otf
 AddType application/vnd.oasis.opendocument.database .odb
 AddType application/vnd.oasis.opendocument.chart .odc
 AddType application/vnd.oasis.opendocument.formula .odf
 AddType application/vnd.oasis.opendocument.graphics .odg
 AddType application/vnd.oasis.opendocument.presentation .odp
 AddType application/vnd.oasis.opendocument.spreadsheet .ods
 AddType application/vnd.oasis.opendocument.text .odt
 AddType audio/ogg .ogg
 AddType application/pdf .pdf
 AddType image/png .png
 AddType application/vnd.ms-powerpoint .pot .pps .ppt .pptx
 AddType audio/x-realaudio .ra .ram
 AddType application/x-shockwave-flash .swf
 AddType application/x-tar .tar
 AddType image/tiff .tif .tiff
 AddType application/x-font-ttf .ttf .ttc
 AddType audio/wav .wav
 AddType audio/wma .wma
 AddType application/vnd.ms-write .wri
 AddType application/vnd.ms-excel .xla .xls .xlsx .xlt .xlw
 AddType application/zip .zip
</IfModule>

<IfModule mod_deflate.c>

 <IfModule mod_setenvif.c>
 BrowserMatch ^Mozilla/4 gzip-only-text/html
 BrowserMatch ^Mozilla/4\.0[678] no-gzip
 BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
 BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
 </IfModule>
 <IfModule mod_headers.c>
 Header append Vary User-Agent env=!dont-vary
 </IfModule>
 <IfModule mod_filter.c>
 AddOutputFilterByType DEFLATE text/css application/x-javascript text/x-component text/html text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon
 </IfModule>
</IfModule>

Enfin je concluerais par une note positive. On peut quand même faire de belles choses lorsqu’on maitrise ce CMS. C’est le cas par exemple de 2 sites que je trouve assez réussi:

Le site officiel de Peugeot
Un système de coaching pour Starcraft 2

Une réflexion au sujet de « Joomla et le SEO »

  1. J’ai eu pas mal de soucis pour l’url rewriting, j’ai installé le plugin sh404sef. Les urls sont devenus propres mais j’ai eu beaucoup de soucis car sur certaines pages du site http://agir36.org il a supprimé les pages.
    Pourquoi je ne sais pas mais lorsque je cliquais sur la page elle me faisait revenir sur l’index, j’ai contacté pas mal de forum et je n’ai jamais vraiment eu la réponse. Au final j’ai désactivé le plugin et laissé ainsi car je retrouve mes pages manquantes. je devenais chèvre !

Laisser un commentaire

*