Rediriger des pages .php vers .html via .htaccess
Dans le fichier ".htaccess", les directives "RewriteCond" et "RewriteRule" permettent de paramétrer des redirections d'un fichier PHP vers un fichier de même nom en HTML.
Le fichier ".htaccess" permet de créer des redirections au sein de votre site. En utilisant des directives, il est ainsi possible de rediriger à partir d'un fichier PHP vers un fichier de même nom en HTML.
Pour effectuer la redirection, il faut utiliser la directive "RewriteCond".
Elle permet d'indiquer une condition à respecter. Si cette condition est remplie, on exécute la directive suivante. On utilise ensuite une expression régulière pour récupérer le nom de fichier demandé. On utilise la variable "%" afin de récupérer le chemin demandé au serveur par le navigateur. On se base sur le caractère "/" pour détecter le début du chemin, puis sur la chaîne ".php" pour en identifier la fin. Les caractères ".+" signifient "n'importe quel caractère présent une fois ou plus". Les parenthèses permettent de stocker la valeur récupérée dans une variable.
Exemple : RewriteCond %/(.+).php
Pour effectuer la redirection, il faut aussi utiliser la directive "RewriteRule".
Concernant cette directive "RewriteRule", l'expression "$1" affiche la valeur que l'on a récupérée dans l'étape précédente grâce aux parenthèses. Ajoutez le caractère "/" avant, et précisez l'extension ".html" pour rediriger vers le même fichier mais avec l'extension ".html". Les drapeaux situés entre les crochets ajoutent des options supplémentaires. Le drapeau "L" ("Last") indique que cette règle sera la dernière traitée du fichier. Lorsqu'elle est utilisée, la redirection est effectuée immédiatement si la condition est remplie, et le serveur ne lira pas les autres directives de redirection situées après. Le drapeau "R=301" précise que l'on effectue une redirection. Le serveur envoie alors le code HTTP 301 qui correspond à une redirection permanente.Exemple :
RewriteRule ^ /%1.html [L,R=301]
La directive "RewriteCond" précédera la directive "RewriteRule", ce qui donnera donc au final :
RewriteCond %/(.+).php
RewriteRule ^ /%1.html [L,R=301]