Apache:rewriterule

De Lowgeek wiki

Web.png

Redirections

Title2.png

Redirection par test expression

Comparer le nom d'hôte avec example.com et rediriger vers www.example.com si le nom d'hôte correspond

<syntaxhighlight lang="apache"> <If "%{HTTP_HOST} == 'example.com'">

   Redirect permanent / http://www.example.com

</If> </syntaxhighlight>

Forcer le type text/plain si un fichier fait l'objet d'une requête dont la chaîne de paramètres contient 'forcetext'

<syntaxhighlight lang="apache"> <If "%{QUERY_STRING} =~ /forcetext/">

   ForceType text/plain

</If> </syntaxhighlight>

N'autoriser l'accès à ce contenu que pendant les heures de travail

<syntaxhighlight lang="apache"> <Directory "/foo/bar/business">

   Require expr %{TIME_HOUR} >= 9 && %{TIME_HOUR} <= 17 

</Directory> </syntaxhighlight>


Title2.png

Exemple de RewriteRule

Redirection permanente de la racine d'un site vers un autre

<syntaxhighlight lang="apache"> RewriteEngine On RewriteRule ^/(.*) http://mon-nouveau-domaine/$1 [R=301,L] </syntaxhighlight>

Redirection la racine d'un site vers une sous arborescence

<syntaxhighlight lang="apache"> RewriteEngine On RewriteRule ^/$ /dossier/ [R=301,L] </syntaxhighlight>

Redirection permanente de la racine d'un site vers un autre, mais seulement sir le site source est www.old-domain.fr grace à RewriteCond

<syntaxhighlight lang="apache"> RewriteEngine On RewriteCond %{SERVER_NAME} ^www.old-domain.fr$ RewriteRule ^/(.*)$ http://new-domain.fr/$1 [R=301,L] </syntaxhighlight>

Redirection permanente de la racine d'un site vers un autre, mais seulement si le site source n'est pas www.old-domain.fr grace à RewriteCond et !

<syntaxhighlight lang="apache"> RewriteEngine On RewriteCond %{SERVER_NAME} !^www.old-domain.fr$ RewriteRule ^/(.*)$ http://new-domain.fr/$1 [R=301,L] </syntaxhighlight>

Il est possible de cumuler des conditions RewriteCond

<syntaxhighlight lang="apache"> RewriteEngine On RewriteCond %{SERVER_NAME} ^www.old-domain1.fr$ RewriteCond %{SERVER_NAME} ^www.old-domain2.fr$ RewriteRule ^/(.*)$ http://new-domain.fr/$1 [R=301,L] </syntaxhighlight>

Il est possible d'utiliser une condition ou une autre

<syntaxhighlight lang="apache"> RewriteEngine On RewriteCond %{SERVER_NAME} ^www.old-domain1.fr$ [OR] RewriteCond %{SERVER_NAME} ^www.old-domain2.fr$ RewriteRule ^/(.*)$ http://new-domain.fr/$1 [R=301,L] </syntaxhighlight>

Redirection en fonction de l'heure

<syntaxhighlight lang="apache"> RewriteEngine on RewriteCond  %{TIME_HOUR}%{TIME_MIN} >0700 RewriteCond  %{TIME_HOUR}%{TIME_MIN} <1900 RewriteRule ^foo\.html$ foo.day.html RewriteRule ^foo\.html$ foo.night.html </syntaxhighlight>