Comment créer un fichier htaccess pour réécrire une URL?

Définition

Qu'est ce que la ré-écriture d'URL?

La réécriture d'URL est un sujet complexe mais très important pour un site internet. L'objectif de la réécriture est multiple:

  • Améliorer le référencement de votre site internet
  • Simplifier la navigation sur votre site
  • Permettre l'évolution de votre site
  • Gérer des redirection
     

Procédure

Cas pratique de la redirection d'URL par htaccess

Comment créer une redirection simple?

RewriteEngine On
RewriteRule .* testing.php

Ce code va rediriger toutes les requêtes vers la page "testing.php"


Comment rediriger votredomaine.com vers www.votre domaine.com ?

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


Comment rediriger vers un autre dossier sans affiché le dossier de redirection?

Il se peut que vous ayez déplacé votre site internet dans un autre dossier FTP et que vous ne voulez pas que vos visiteurs aient connaissance de ce nouveau dossier. Cela forcera la redirection à être de type www.votredomaine.com alors qu'en réalité, cela devrait être www.votredomaine.com/dossier.

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} /MonDossier/([^\s?]*) [NC]
RewriteRule ^ %1 [L,NE,R=302]
RewriteRule ^((?!MonDossier/).*)$ MonDossier/$1 [L,NC]


Réécriture des URL

Le module mod_rewrite permet de réécrire des URL.

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !NondeLaPage.php
RewriteRule .* NondeLaPage.php

Contrôler l'accès aux fichiers

Un fichier .htaccess est souvent utilisé afin de restreindre ou refuser l'accès à des fichiers et des dossiers. Pour ce faire, procédez comme suit:

deny from all

Toutefois il vous est possible d'interdire une adresse IP spécifique en utilisant les directives suivantes:

order allow,deny
deny from XXX.XXX.XXX.XXX
allow from all

ou plusieurs IP si vous le désirez:

allow from all
deny from 145.186.14.122
deny from 124.92.14.086

Mettre en place une redirection pour tablette et smartphone

Il vous est possible de rediriger les utilisateurs de tablettes et smartphone vers une page Web spécifique ou un répertoire particulier en utilisant les directives suivantes:

RewriteCond %{HTTP_USER_AGENT} ^.*iPad.*$
RewriteRule ^(.*)$ http://votredomaine.com/dossier [R=301]

RewriteCond %{HTTP_USER_AGENT} ^.*Android.*$
RewriteRule ^(.*)$ http://votredomaine.com/dossier [R=301]

Forcer l'enregistrement d'un document

Si vous souhaitez forcer les utilisateurs à télécharger des fichiers plutôt que de les afficher dans le navigateur, vous pouvez utiliser les directives suivantes:

AddType application/octet-stream .csv
AddType application/octet-stream .xls
AddType application/octet-stream .doc
AddType application/octet-stream .avi
AddType application/octet-stream .mpg
AddType application/octet-stream .mov
AddType application/octet-stream .pdf

Vous pouvez aussi tout mettre sur la même ligne, comme suit:

AddType application/octet-stream .avi .mpg .mov ;pdf .xls .mp4

Désactiver ou activer la navigation dans les répertoires

# Désactiver la navigation dans les répertoires
Options All -Indexes
# Activer la navigation dans les répertoires
Options All +Indexes

Changer les en-têtes Charset et le language.

Vous pouvez changer le Charset et la langue grâce aux directives suivantes:

AddDefaultCharset UTF-8
DefaultLanguage en-GB

Mettre en cache avec le mod_expires

Le module mod_expires d'Apache vous permet de définir des intervalles d'expiration pour différents types de contenu sur votre site Web. Par exemple, vous pouvez utiliser les directives mod_expires pour indiquer aux navigateurs de mettre en cache les fichiers image pendant une heure, les fichiers Javascrpt pendant deux semaines et les fichiers CSS pendant deux mois. 

<IfModule mod_expires.c>
     ExpiresActive On
     ExpiresByType image/png "access 1 hour"
     ExpiresByType image/gif "access 1 hour"
     ExpiresByType image/jpeg "access 1 hour"
     ExpiresByType text/javascript "access 2 weeks"
     ExpiresByType text/css "access 2 months"
     ExpiresByType text/html "modification 4 hours"
     ExpiresDefault "access 2 days"
</IfModule>

 

Notez cet article

2.4 / 5
8 avis


Vous avez noté 0 étoile(s)

Cet article vous a-t-il été utile ?

Merci !

N'hésitez pas à commenter nos pages afin de nous aider à les améliorer si besoin.

Vous n'avez pas trouvé votre réponse ?

Envoyez nous un message afin d'avoir une réponse rapidement



Top