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
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 !