Apache/URL Rewriting

Un livre de Wikilivres.
Aller à : navigation, rechercher
Apache
La plume, symbole d'Apache
Plan
  1. Installer Apache
  2. Gérer plusieurs sites sur une même machine
  3. Serveurs virtuels
  4. Permettre la connexion sécurisée au serveur (https)
  5. Ajouter le support de PHP
  6. Ajouter le support d'une base de données
  7. Configurer les répertoires utilisateurs (public_html)
  8. Permettre la ré-écriture d'URL
  9. Fichier .htaccess
  10. Common Gateway Interface
Modifier ce modèle

Principe[modifier | modifier le wikitexte]

Sur Internet on distingue globalement quatre types de redirection automatique[1] des navigateurs vers d'autres adresses que celles sur lesquelles ils arrivent :

  1. HTML (<meta http-equiv="refresh" content="1; URL=http://destination.fr">).
  2. PHP (header('Location: http://destination.fr');).
  3. Javascript[2].
  4. HTTP, proposant elle-même plusieurs techniques décrites ci-dessous.

Les règles de réécriture appliquées sur tout le serveur Apache se situent dans /etc/apache2/sites-available/default[3] ou /usr/local/apache/conf/httpd.conf.

Les fichiers .htaccess peuvent également en contenir[4] pour personnaliser chaque répertoire.

D'une manière générale, Apache permet de rediriger vers une autre page grâce à :

  1. Dans les systèmes Unix, la ligne Options +FollowSymLinks permet au navigateur de suivre les liens symboliques, en naviguant dans le système de fichier.
  2. Alias[5].
  3. AliasMatch (pareil avec du regex).
  4. RewriteRule réécrit l'URL selon des règles pouvant être précisées en regex[6]. Il nécessite d'être installé sous peine d'erreurs 500, via la commande Unix a2enmod rewrite.
  5. Redirect renvoie simplement ailleurs.
  6. RedirectMatch (pareil avec du regex).


Dialog-warning.svg
Attention !

Définir une redirection définitive (Redirect permanent) ne s'annule pas seulement en changeant le code qui l'a définit, mais dure jusqu'à expiration du cache serveur. Pour forcer sa suppression immédiate, lancer par exemple :

/usr/local/apache/bin/htcacheclean -p/var/cache/edb/dep/usr/local/portage-ovh/www-apache -l500M
/etc/init.d/apache restart

Exemples[modifier | modifier le wikitexte]

Dans la syntaxe suivante, le point seul représente le répertoire courant, et le slash seul la racine de l'URL (le domaine).

Pour changer le domaine vers localhost, tout en gardant la même URL :

SetEnv PHP_VER 5
Redirect / http://localhost/

Plus subtile, on peut changer l'ordre des paramètres initiaux dans l'URL de destination[7] :

RewriteEngine on
RewriteBase /
RewriteRule ^/xtools/ec/*$ /xtools/pcount/index.php


Références[modifier | modifier le wikitexte]