Maquillez les urls de vos pages dotclear !

Lorsque l'on crée un site web, il est important de s’intéresser au format des url du site. Ils y'a trois raisons à cela, le premier est esthétique : http://monsite.com/index.php?cat=34&art=45 est clairement horrible. Cela n'a pas de signification pour le commun des mortels et ce n'est pas facile à retenir. http://monsite.com/34-mactegorie/45-monarticle est déjà plus sympa. Idéalement, la suppression de chiffre serai la bienvenue : http://monsite.com/mactegorie/monarticle. La seconde raison est lié au référencement. On sait que google (entre autre) utilise l'url pour former des mot clé. Dans http://monsite.com/index.php?cat=34&art=45 il ne peut pas trouver un seul mot clé :s Enfin le dernier point est sécuritaire. En ne cachant pas vos urls vous informer de la technologie utilisée (ici php). Pire, il est même probable que des robots arrivent à savoir quel CMS/blog/etc vous utilisez et ainsi profiter de faille connu pour faire tomber votre site web.

Dans ce billet je ne vais pas traiter du changement d'url de façon générale mais plus spécifiquement du cas de dotclear. Malgré tout, il peut être intéressant en tant que piqûre du rappel sur le Url Rewrite d'Apache.

Configuration de dotclear

Dans un premier temps, on va configurer dotclear. Pour cela allez dans votre panel d'administration > blogs > modifier. Ici choisissez de PATH_INFO" comme méthode de lecture de l'url. Il faut aussi modifier l'url du blog. Elle doit ressembler à quelque chose comme http://monblog/index.php?. Changez la pour http://monblog/'' avec le slash à la fin ! Votre blog doit maintenant être inaccessible. Pas de panique nous allons corriger cela.

Création du .htaccess

Le .htaccess est un fichier qui doit se trouver à la racine de votre blog. Pour cela il faut le créer tout simplement à l'aide d'un ftp. Pour information, le point au début du fichier signifie que c'est un fichier caché. Veuillez donc à bien rendre les fichiers caché visible.

Notre .htaccess créer il va nous falloir le remplir.

Le fonctionnement des règles de redirection d'url

Il existe un très grand nombre possibilité, ici je vais tacher de faire court est clair. Chaque ligne du fichier .htaccess est une instruction, dans notre cas trois nous intéressent : RewriteEngine, RewriteRule et RewriteCond. RewriteEngine permet d'active l'Url Rewriting. RewriteRule et RewriteCond permettent de définir les règles de redirection. Elles sont lues une à une du haut vers le bas du fichier.

Fichier .htaccess minimal

Voici donc la fichier .htaccess minimal :

  1. # Activation des URL Rewrite
  2. RewriteEngine On

Une première règle

Nous allons enfin faire fonctionner votre blog. Pour cela on va ajouter deux instructions :

  1. # Activation des URL Rewrite
  2. RewriteEngine On
  3. # Redirection des pages
  4. # Si l'url pointe vers un fichier qui n'existe pas
  5. RewriteCond %{REQUEST_FILENAME} !-f
  6. # Alors on redirige
  7. RewriteRule (.*) index.php/$1

La première instruction en ligne 5 vérifie que l'url demandée %{REQUEST_FILENAME} n’existe pas !-f. Si cette condition est vrai alors le serveur Apache peut lire la seconde instruction en ligne 7. Cette dernière permet de transformer l'url grâce à une expression régulière. Dans notre cas tout que ce qui a après le nom de domaine de l'url (.*) est préfixé de index.php/. Pour ceux qui ne connaissent pas ce qu'est une expression régulière je vous propose de lire ce tutoriel

Vous pouvez visiter votre blog normalement maintenant ;)

Une seconde règle

Tout fonctionne on peut se demander alors pourquoi je veux définir une nouvelle règle. C'est une très bonne question. Je vous propose donc de remplacer tout ce qui derrière votre nom de domaine et d'y placer un index.php (par exemple http://monblog.com/index.php). Vous remarquez que la page est disponible. Idéalement, il faudrait empêcher à cette page d'être visible. Pour cela, on va rediriger index.php vers une erreur 404.

On défini donc une nouvelle règle sans condition autre que de remplacer index.php par n'importe quoi :

  1. # Activation des URL Rewrite
  2. RewriteEngine On
  3.  
  4. # Si on tente d'attaquer index.php dirrectement dans l'url, on fait une 404
  5. # Si dans l'url on trouve index.php alors on redirige vers une page inconnu
  6. # Le [L] empèche de lire les règles d'après
  7. RewriteRule ^index.php$ notfound/ [L]
  8.  
  9. # Redirection des pages
  10. # Si l'url pointe vers un fichier qui n'existe pas
  11. RewriteCond %{REQUEST_FILENAME} !-f
  12. # Alors on redirige
  13. RewriteRule (.*) index.php/$1

Le panel d'admin

L'administration n'est pas accessible autrement qu'en précisant admin/index.php. Rajoutons donc une règle pour faire pointer admin/ vers admin/index.php

  1. # Activation des URL Rewrite
  2. RewriteEngine On
  3.  
  4. # Si on tente d'attaquer index.php dirrectement dans l'url, on fait une 404
  5. # Si dans l'url on trouve index.php alors on redirige vers une page inconnu
  6. # Le [L] empèche de lire les règles d'après
  7. RewriteRule ^index.php$ notfound/ [L]
  8.  
  9. # Page d'administration
  10. # Si dans l'url on trouve admin alors on redirige vers l'index.php d'admin
  11. # Le [L] empèche de lire les règles d'après
  12. RewriteRule ^admin/$ admin/index.php [L]
  13.  
  14. # Redirection des pages
  15. # Si l'url pointe vers un fichier qui n'existe pas
  16. RewriteCond %{REQUEST_FILENAME} !-f
  17. # Alors on redirige
  18. RewriteRule (.*) index.php/$1

Pour finir voici un lien vers la documentation apache ainsi qu'un autre vers le guide.

 

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

À propos

Photographie

Maxence de Flotte

Développeur cœur PrestaShop

Passionné de nouvelles technologies

PHP, HTML5/CSS3, jQuery, Bootstrap, LESS CSS, ...

Voir mon CV

Mes projets