Aller au contenu

Ré-écriture d'URL sous Apache

apache-rewrinting

Introduction

Encore un problème simple à résoudre mais qui m'a demandé beaucoup de temps. Sur l'ancienne version du site (sur phpBoost) que vous consultez actuellement, j'utilisais la réécriture d'URL. Je ne m'étendrai pas sur le sujet, si vous êtes ici c'est que vous savez de quoi je parle mais que cela ne fonctionne pas chez vous.

Je ne vais pas détailler ici comment créer des règles de réécriture, le CMS que j'utilisais (PhpBoost) le fait automatiquement mais la configuration de base du serveur Apache pour que cela fonctionne.

Warning

Faites attention à l'hébergement de votre site web, dans mon cas il est auto-hébergé donc pas de problème mais certains hébergeurs ne permettent pas la réécriture d'URL, renseignez-vous auprès de votre hébergeur

En partant du principe que votre hébergement permet de faire de la réécriture d'URL, voici les quelques paramétrages à mettre en place.

Activation de mod_rewrite

Pour activer mod_rewrite sur un serveur Apache, une simple commande :

a2enmod rewrite

Si la réponse à la commande est que a2enmod n'est pas installé, installez locate :

apt install locate

Puis recherchez la commande a2enmod :

locate a2enmod

La réponse vous donnera la localisation, par exemple : /usr/sbin/a2enmod

Vous pourrez alors taper la commande suivante (à adapter en fonction de la réponse précédente) :

/usr/sbin/a2enmod rewrite

La petite astuce qui m'a demandé tant de recherches...

Malgré cette activation, cela ne fonctionnait toujours pas chez moi, ce qu'il manquait, c'est une toute petite modification dans la configuration d'Apache. Ouvrez le fichier /etc/apache2/apache2.conf et cherchez le bloc correspondant à la localisation de votre site web, généralement celui-ci :

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

Remplacez "None" par "All" puis redémarrez le serveur Apache :

systemctl restart apache2.service

Et voilà, le problème est normalement réglé.

Vérifier que la réécriture fonctionne

Créez un répertoire nommé "test" que vous placerez à la racine de votre site (il sera donc accessible via l'adresse http://www.votre-site.com/test/).

Dans ce répertoire, créez un fichier HTML nommé test.html (http://www.votre-site.com/test/test.html) contenant uniquement les lignes suivantes :

<html><head><title>Test</title></head><body>OK !</body></html>

Vous pouvez vous rendre sur cette page avec votre navigateur pour vérifier (http://www.votre-site.com/test/), vous devriez avoir une page avec "OK !"

Dans ce répertoire, créez un fichier nommé .htaccess contenant les lignes suivantes :

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^inconnu\.html$  /test/test.html [L]

Transférez ce répertoire et ces deux fichiers sur votre site, puis rendez-vous à l'adresse http://www.votre-site.com/test/inconnu.html

Vous devriez normalement avoir le même résultat que précédemment.

Et voilà !