This page has been robot translated, sorry for typos if any. Original content here.

Guide de .htaccess et mod_rewrite

Par sujet:


Файл-конфигуратор Apache-серверов .htaccess


Guide de démarrage rapide pour htaccess et mod_rewrite

L'utilisation de "puces" Apache mod_rewrite et htaccess est considérée comme quelque chose d'inaccessible parmi les nombreux webmasters déçus, mais c'est l'une des tâches les plus difficiles que rencontrent presque tous les développeurs web.

Je veux vous offrir une solution simple au lieu de chercher des plus complexes afin de comprendre comment mod_rewrite et htaccess fonctionnent . La plupart des exemples d'utilisation décrits dans cet article peuvent être simplement copiés et téléchargés sur votre serveur Web.

Afin de ne pas répéter la même chose à des centaines d'autres webmasters, j'ai décidé de créer simplement cette page-conseil pour un usage général.

Encore une fois, htaccess est un fichier de configuration qui vous permet de gérer le serveur web Apache, mod_rewrite est un moteur de réécriture avec lequel le serveur web peut modifier les URL lors du téléchargement.

Le fichier htaccess est un fichier texte portant le nom .htaccess . Vous pouvez même dire qu'il s'agit d'un fichier constitué uniquement d'une extension, car il ne contient pas la partie nominale (avant le symbole "point"). Généralement, ce fichier se trouve dans le répertoire racine principal de votre serveur, mais vous pouvez également créer des fichiers htaccess distincts pour différents répertoires de votre site.

Canonicalisation

L'exemple le plus simple est de s'assurer que le site ne contient pas d'erreurs canoniques pour la page d'accueil.

Beaucoup de webmasters souffrent d'un mauvais classement des moteurs de recherche en raison du fait qu'il existe plusieurs versions de l'URL de la page d'accueil, par exemple:

  http://www.site.com 
http://site.com
http://www.site.com/index.html
http://site.com/index.html

Ces pages ressemblent à des URL différentes, même si elles pointent vers le même contenu. Google décidera finalement quelle version est la plus correcte, mais cela peut prendre un certain temps, et pendant ce temps, vous pouvez avoir des problèmes inutiles.

Pour résoudre ce problème, ajoutez simplement les lignes suivantes à votre fichier htaccess:

  Options + SuivezSymLinks 
RewriteEngine sur
RewriteCond% {HTTP_HOST} ^ site.com
RewriteRule (. *) Http://www.site.com/$1 [R = 301, L]
RewriteCond% {THE_REQUEST} ^ [AZ] {3,9} \ / index \ .html \ HTTP /
RewriteRule ^ index \ .html $ http://www.site.com/ [R = 301, L]

Ce code vous permettra de rediriger toutes les options de page d'accueil possibles vers http://www.site.com.

Conversion de fichiers HTML en PHP

Parfois, vous devez utiliser du code PHP sur les pages HTML d'un site statique. Au lieu de rediriger toutes vos pages HTML vers leurs versions PHP équivalentes, il vous suffit de "dire" à votre serveur qu'il doit analyser les fichiers HTML en PHP.

  Application AddHandler / x-httpd-php .html 

Ce code fonctionne avec tous les fichiers, donc si vous voulez créer des fichiers XML ou ASP dynamiques qui se comportent comme des fichiers PHP, vous devez simplement apporter les modifications suivantes:

  Application AddHandler / x-httpd-php .xml 
Application AddHandler / x-httpd-php .asp

Pages d'erreur

Les pages d'erreur personnalisées peuvent être facilement personnalisées, par exemple dans CPanel (ou DirectAdmin), mais si vous souhaitez configurer la page d'erreur via un fichier htaccess, ajoutez-y la ligne suivante:

  # Gestion des erreurs 404 - Fichier non trouvé 
ErrorDocument 404 http://www.site.com/404.php
# Gestion des erreurs 403 - Accès refusé
ErrorDocument 403 http://www.site.com/403.php

Indexation des répertoires

Pour empêcher Google d' indexer les répertoires, vous devez définir une page d'index pour les répertoires requis. Ceci n'est pas requis sur certains serveurs.

  DirectoryIndex index.php3 

Je préfère rediriger vers la page d'index du répertoire ou vers une autre page appropriée. Par exemple, www.site.com/images/ peut être redirigé vers www.site.com, et www.site.com/forum/ peut être redirigé vers www.site.com/forum/index.php

Rediriger des pages

Un bon exemple d'utilisation de htaccess pour rediriger une page vers une autre:

  rediriger 301 /old-page.php http://www.site.com/new-page.php 

Rediriger votre flux vers Feedburner

Si vous souhaitez basculer votre flux vers le service Feedburner, vous devez rediriger votre flux actuel vers la nouvelle adresse http://feeds.feedburner.com/blog-feed.

La redirection doit être appliquée à tous les visiteurs sauf le Feedburner:

  RewriteCond% {HTTP_USER_AGENT}! FeedBurner 
RewriteRule ^ votre-feed \ .xml $ http://feeds.feedburner.com/blog-feed [R, L]

Protection améliorée par lien direct

Si vous souhaitez empêcher d'autres sites Web de référencer directement les images situées sur votre site, mais que vous pouvez indexer les moteurs de recherche Google Google, Yahoo et MSN, vous devez utiliser le code suivant:

  RewriteEngine sur 
RewriteCond% {HTTP_REFERER}.
RewriteCond% {HTTP_REFERER}! ^ Http: // ([^.] + \.)? Site \. [NC]
RewriteCond% {HTTP_REFERER}! Google \. [NC]
RewriteCond% {HTTP_REFERER}! Recherche \? Q = cache [NC]
RewriteCond% {HTTP_REFERER}! Msn \. [NC]
RewriteCond% {HTTP_REFERER}! Yahoo \. [NC]
RewriteCond% {REQUEST_URI}! ^ / Hotlinker \ .gif $
RewriteRule \. (Gif | jpg | png) $ /hotlinker.gif [NC, L]

Image hotlinker.gif est une image que vous avez créée. Je suggère d'utiliser quelque chose comme "Cette image est sur www.site.com" et votre logo.

Personnellement, j'autorise les liens hypertexte, mais j'utilise une certaine solution qui utilise le service Google Images et les sites de liens hypertextes pour obtenir des liens vers mon site .

Création de liens CNC en utilisant mod_rewrite

Le module de réécriture Apache est principalement utilisé pour transformer les URL dynamiques du formulaire www.site.com/product.php?id=123 en vues statiques et conviviales de www.site.com/product/123.

  RewriteEngine sur 
RewriteRule ^ product /([^/\.]+)/?$ product.php? Id = $ 1 [L]

Un autre exemple qui mène l'URL: www.yoursite.com/script.php?product=123 au formulaire www.yoursite.com/cat/product/123/

  RewriteRule cat /(.*)/(.*)/$ /script.php?$1=$2 

Suppression de chaînes de requête

Certains sites lient le vôtre en ajoutant une chaîne de requête. Par exemple, vous pouvez vous référer à votre site en utilisant ce lien http://www.site.com/index.php?source=seoblog, juste pour savoir d'où vient le trafic. Cela provoque l'affichage du contenu en double pour votre site. Vous devez donc configurer la redirection vers votre page d'accueil:

  RewriteCond% {QUERY_STRING} ^ source = RewriteRule (. *) / $ 1?  [R = 301, L] 

C'est tout pour le moment. S'il y a, quoi ajouter, je demande en kament ...

La plupart des hébergements ont deux ou plusieurs versions de PHP installées. Habituellement, le quatrième est le défaut. Cependant, pour que vos scripts PHP soient traités en version 5, vous pouvez vous inscrire dans htaccess:

  Application AddType / x-httpd-php5 .php 

Ou vous pouvez ajouter une extension .php5 à chaque fichier au lieu de simplement .php.
C'est dans le cas où vous êtes trop paresseux pour rédiger htaccess.






Exemples de configuration du fichier .htaccess

Tandis que certains de nos courageux «gourous» traduisent des articles étrangers, sans prendre la peine d'installer un lien vers l'article original, je vais vous donner une sélection de codes pour configurer .htaccess.

Presque tous les articles sont requis, sauf

  • redirections et verrous - ils sont configurés selon les besoins
  • ainsi que les paramètres de la CNC (Human FunLink) - en règle générale, vous pouvez faire CMS

Comment créer .htaccess?

  1. bloc-notes ouvert
  2. écrivez le code (vous pouvez et puis le faire :)
  3. enregistrer le document avec le nom .htaccess
  4. remplir la racine du site (ou dans le dossier sur le serveur où nous allons faire les réglages)

* yoursitename.ru dans les exemples remplacer par l'adresse de votre domaine

Paramètres htaccess par défaut

Paramètres htaccess par défaut

1. Définir la page d'accueil par défaut

  DirectoryIndex pagename.html 

2. Définition des pages d'erreur (erreur) dans .htaccess

  ErrorDocument 403 /403.php 
ErrorDocument 404 /404.php
ErrorDocument 500 / 500.php
En conséquence, l'adresse et le nom du fichier peuvent être différents, par exemple /error/page404.html

3. Protection contre les liens chauds
Le fait que le contenu des sites vole n'est pas une nouveauté depuis longtemps. Mais il arrive que la tige ensemble avec les images. Ici, afin d'éviter la charge sur le serveur et l'inflation du trafic, nous écrivons:

  RewriteEngine On 
RewriteCond% {HTTP_REFERER}! ^ $

# domaines pouvant être liés à des images de votre site
RewriteCond% {HTTP_REFERER}! ^ Http: // ([-a-z0-9] \.)? Votre nom de fichier \ .ru [NC]

# n'affiche pas les images lorsque les liens dynamiques
RewriteRule \ (Gif | jpe? G | png) $ - [F, NC, L]
Si vous voulez qu'une certaine image apparaisse sur un site étrange au lieu des erreurs 403, la dernière ligne devrait être remplacée par:
  RewriteRule \. (Jpg | png | gif) $ http://yoursitename.ru/images/imagename.jpg [NC, R, L] 

4. Forcer le fichier à enregistrer au lieu d'ouvrir
Si vous voulez que les visiteurs enregistrent le fichier en ligne au lieu de le voir, alors, dans .htaccess, nous écrivons:

  Application AddType / octet-stream .doc .mov .avi .pdf .xls .mp4 

5. Mise en cache des fichiers
Dans WordPress il y a un plugin spécial pour cela: wp-super-cache. Si vous utilisez un CMS qui ne prend pas en charge la mise en cache, vous pouvez définir les paramètres suivants dans .htaccess

  # mise en cache html et htm par jour 
<FilesMatch ". (Html ​​| htm) $">

En-tête Cache-Control "max-age = 43200"
</ FilesMatch>

# mise en cache des fichiers css, javascript et txt pour la semaine
<FilesMatch ". (Js | css | txt) $">

En-tête Cache-Control "max-age = 604800"
</ FilesMatch>

# Mise en cache Flash et images pendant un mois
<FilesMatch>. (Flv | swf | ico | gif | jpg | jpeg | png) $ ">

En-tête Cache-Control "max-age = 2592000"
</ FilesMatch>

# interdire la mise en cache des scripts
<FilesMatch "\ (Pl | php | cgi | spl | scgi | fcgi) $">

En-tête non défini Cache-Control
</ FilesMatch>
Le paramètre max-age est donné en secondes.

6. Activation des erreurs de débogage

  php_flag display_errors sur 

Configuration d'une redirection à l'aide de .htaccess

Configuration d'une redirection à l'aide de .htaccess

1. Redirections 301
La solution optimale pour rediriger les visiteurs d'anciennes adresses vers de nouvelles, si la structure du site a changé au fil du temps, et que les anciennes URL auraient pu rester quelque part.

  Redirection 301 /oldpage.html http://yoursitename.ru/newpage.html 

Il y a une autre variante:
  Rediriger permanent /oldpage.html http://yoursitename.ru/newpage.html 
Pour être honnête, je ne peux pas expliquer la différence fondamentale entre les deux. Peut-être que l'un des lecteurs le dira.

2. Lier des domaines avec www et sans www
Redirection depuis yoursitename.ru sur www.yoursitename.ru

  RewriteEngine On 
RewriteBase /
RewriteCond% {HTTP_HOST}! ^ Www.votresite.ru $ [NC]
RewriteRule ^ (. *) $ Http://www.yoursitename.ru/$1 [L, R = 301]
Inverser la redirection
  RewriteEngine On 
RewriteBase /
RewriteCond% {HTTP_HOST}! ^ Yoursitename.ru $ [NC]
RewriteRule ^ (. *) $ Http://yoursitename.ru/$1 [L, R = 301]

3. Redirections 302
Si vous travaillez sur le site, vous pouvez temporairement envoyer des visiteurs à la page souhaitée (par exemple, avec une description du moment où le travail doit être terminé et comment vous pouvez être contacté).

  RewriteEngine sur 
RewriteCond% {REQUEST_URI}! /informpage.html$
RewriteCond% {REMOTE_HOST}! ^ 12 \ .345 \ .678 \ .90
RewriteRule $ http://yoursitename.ru/informpage.html [R = 302, L]
Le site sera visible uniquement à partir de votre adresse ip - 12.345.678.90

4. Redirection vers un autre site
Transférer tous les visiteurs vers un autre site, en plus des adresses IP spécifiées

  ErrorDocument 403 http://www.yoursitename.ru 
Commander refuser, autoriser
Refuser de tout
Autoriser de 12.345.678.90
Autoriser de 12.345.678.92

5. Redirection vers une connexion https sécurisée

  RewriteEngine On 
RewriteCond% {HTTPS}!
RewriteRule (. *) Https: //% {HTTP_HOST}% {REQUEST_URI}

Désactiver / bloquer en utilisant .htaccess

Désactiver / bloquer en utilisant .htaccess

1. L'interdiction d'énumérer le répertoire
Utilisé en l'absence d'un fichier d'index, si vous voulez interdire l'affichage du contenu du dossier (par exemple, pour les images):

  Options Tous -Indexes 
Inverser le code, dans le sens de la permission
  Options + index 

2. Bloquer l'accès au fichier
Par exemple, il pourrait s'agir de votre .htaccess

  <Fichiers .htaccess> 
ordre autoriser, refuser
nier de tous
</ Files>

3. Bloquer l'accès au répertoire
Bloquer l'accès à un dossier spécifique

  <Directory / root-access /> 
Ordre autoriser, refuser
# Tout sauf ...
permettre à tous
Refuser de 198.69.
</ Directory>
Autoriser l'accès uniquement depuis certaines adresses IP vers un dossier spécifique (les adresses sont écrites avec un espace):
  # Spécifiez le dossier auquel nous refusons l'accès par nom d'hôte et son IP 
<Directory / root-access />
Commander refuser, autoriser
nier de tous
# Les adresses sont écrites avec un espace
Autoriser de 198.69.144.98 198.69.144.94 198.69.144.92
</ Directory>
En outre, il est possible de spécifier à la fois un nom d'hôte et une adresse IP dans une liste:
  # Spécifiez le dossier auquel nous refusons l'accès par nom et adresse IP 
<Directory / root-access />
Ordre autoriser, refuser
# Pour tous, ...
permettre à tous
# ... sauf le nom d'hôte et son adresse IP
Refuser de robot.fromx.com 148.145.21.14
</ Directory>

4. Blocage par ip
Que les spammeurs ne dérangent pas

  <Limite GET> 
Commande Refuser, Autoriser
Refuser de 12.345.678.90
Refuser de 90.876.543.
Refuser de .tvoe.tv
Permettre à tous
</ Limit>
Sera bloqué:
  • utilisateur avec ip 12.345.678.90
  • tous les visiteurs avec ip, tombant dans la gamme de 90.876.543.0 à 90.876.543.255
  • et tous les visiteurs du fournisseur tvoe.tv
Pour empêcher l'accès au dossier du site, les directives allow et deny sont utilisées.
Refuser l'accès à partir d'une adresse IP spécifique
  # Interdiction de 16h18 le 31-03-2011 
Ordre autoriser, refuser
permettre à tous
Refuser de 198.69.132.24
Fermer l'accès à TOUS sauf certains IP
  Commander refuser, autoriser 
nier de tous
# Liste des adresses IP à travers l'espace à partir duquel l'accès est autorisé
Autoriser de 194.111.70.48 194.78.47.128
Dans le cas où vous devez fermer l'accès par masque, utilisez l'adresse incomplète:
  # adresse incomplète 
198.69.
# adresses complètes correspondant au premier
198.69.132.24
198.69.136.89
198.69.1.8
Fermer l'accès par masque:
  # Interdiction de 06:18 le 31-03-2011 
Ordre autoriser, refuser
permettre à tous
Refuser de 198.69.

Paramètres CNC avec .htaccess

En général, si vous travaillez avec WordPress, vous pouvez configurer une URL "conviviale" dans la section Paramètres »Liens permanents (CNC). De nombreux CMS prennent également en charge la définition de l'adresse de la page. Par conséquent, si possible, essayez d'abord d'utiliser la fonctionnalité du moteur, puis commencez à configurer htaccess.

Paramètres CNC avec .htaccess

1. Comment supprimer de l'adresse? P =
Par défaut, l'adresse de la page est la suivante: yoursitename.ru/?p=xxxx, où xxxx est l'identifiant de l'article.

  RewriteCond% {REQUEST_URI} ^ / ([0-9] +) $ 
RewriteRule. * Http://yoursitename.ru/?p=%1 [R = 301, L]

2. Comment supprimer de la catégorie d'adresse
Par analogie avec le passé, nous écrivons

  RewriteRule ^ category /(.+)$ http://yoursitename.ru/$1 [R = 301, L]