Table des matières

Htaccess

Les fichiers htaccess, c'est la misère.

Redirections simples

Redirige chaque requête sur page.php

RewriteEngine On
RewriteRule .* page.php

Redirige vers un sous-domaine, par exemple www :

RewriteEngine on
Rewritecond %{HTTP_HOST} ^exemple.com$
Rewriterule ^(.*) http://www.monsite.com/$1 [QSA,L,R=301]

Rediriger vers un dossier en particulier sans afficher le dossier concerné (utile quand on a /var/www/dokuwiki mais qu'on veut que le dokuwiki soit accessible depuis monsite.com/ )

RewriteEngine on
Rewritecond %{HTTP_HOST} ^exemple.com
Rewritecond %{REQUEST_URI} !^/MonSite
Rewriterule ^(.*)$ /MonSite/

Réécriture des URL

Le module mod_rewrite permet la réécriture des URL : sudo a2enmod rewrite

Lance testing.php avec la variable GET contenant l’URL mis par le visiteur

RewriteEngine On
RewriteCond %{REQUEST_URI} !testing.php
RewriteRule (.*) testing.php?var=$1
testing.php
<?
print("testing server <br/>\n");
print("var: $var\n");
?>

Rediriger automatiquement le visiteur en HTTPS quand il visite le site en HTTP

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.monsite.fr/$1 [R,L]

Mode maintenance

Mettre ce qui suit dans le fichier .htaccess, remplacer XX\.XXX\.XXX\.XXX par l'ip.

Options +FollowSymLinks -Indexes
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

# Mode maintenance
RewriteCond %{REMOTE_ADDR} !^XX\.XXX\.XXX\.XXX
RewriteCond %{REQUEST_URI} !^503.php [NC]
RewriteRule .* 503.php [L]
 

Source

Pas mal de doc utile sur https://docs.ovh.com/fr/fr/web/hosting/mutualise-tout-sur-le-fichier-htaccess/