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

Guide .htaccess et mod_rewrite

Sur le sujet:


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


Guide de démarrage rapide de Htaccess et mod_rewrite

L'utilisation d'Apache- «chips» mod_rewrite et htaccess est considérée comme quelque chose d'inatteignable chez de nombreux webmasters frustrés, mais c'est l'une des tâches les plus difficiles auxquelles presque tous les développeurs Web sont confrontés.

Je veux vous proposer une solution simple au lieu de chercher des solutions plus complexes afin de comprendre comment fonctionnent mod_rewrite et htaccess . La plupart des cas d'utilisation de cet article peuvent simplement être 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 d'aide à usage général.

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

Un fichier htaccess est un fichier texte appelé .htaccess . Vous pouvez même dire qu'il s'agit d'un fichier qui ne comprend que l'extension, car il ne contient pas de partie de nom (jusqu'au symbole de point). Habituellement, 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.

Canonisation

L'exemple le plus simple est de rendre le site exempt d'erreurs de canonisation pour la page d'accueil.

De nombreux webmasters souffrent d'un mauvais classement des moteurs de recherche en raison du fait qu'il existe plusieurs versions d'URL de 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, malgré le fait qu'elles pointent vers le même contenu. Google décidera finalement quelle version est la plus correcte, mais cela peut prendre beaucoup de 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 + FollowSymLinks 
Réécrire le moteur
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.

Convertir des 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 comme PHP.

  Application AddHandler / x-httpd-php .html 

Ce code fonctionne avec tous les fichiers, donc si vous souhaitez créer des fichiers XML ou ASP dynamiques qui se comporteront comme des fichiers PHP, il vous suffit d'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 configuré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:

 # Traitement des erreurs 404 - Fichier introuvable 
ErrorDocument 404 http://www.site.com/404.php
# Erreur de traitement 403 - Accès refusé
ErrorDocument 403 http://www.site.com/403.php

Indexation d'annuaire

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

  DirectoryIndex index.php3 

Je préfère rediriger vers une page d'index de répertoire ou 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

Redirection de 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 Feedburner

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

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

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

Amélioration de la protection Hotlink

Si vous souhaitez empêcher d'autres sites Web de créer un lien direct vers des images situées sur votre site Web, mais permettre aux moteurs de recherche Google, Yahoo et MSN de les indexer, vous devez utiliser le code suivant:

  Réécrire le moteur 
RewriteCond% {HTTP_REFERER}.
RewriteCond% {HTTP_REFERER}! ^ Http: // ([^.] + \.)? Site \. [NC]
RewriteCond% {HTTP_REFERER}! Google \. [NC]
RewriteCond% {HTTP_REFERER}! Search \? 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 le hotlink, mais j'utilise une solution spécifique qui utilise le service Google Images et les sites de hotlinker pour obtenir des liens vers mon site .

Création de liens CN à l'aide de mod_rewrite

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

  Réécrire le moteur 
RewriteRule ^ product /(►^/\.†+)/?$ product.php? Id = 1 $ [L]

Un autre exemple qui cite l'URL: www.yoursite.com/script.php?product=123 pour regarder www.yoursite.com/cat/product/123/

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

Supprimer les chaînes de requête

Certains sites sont liés au vôtre en ajoutant une chaîne de requête. Par exemple, vous pouvez créer un lien vers votre site en utilisant ce lien http://www.site.com/index.php?source=seoblog, juste pour savoir d'où vient le trafic. Cela provoque un contenu en double pour votre site, vous devez donc configurer une redirection vers votre page d'accueil:

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

C'est tout pour l'instant. S'il y a quelque chose à ajouter, je demande à kamenty ...

La plupart des hôtes ont installé au moins deux versions de PHP. Habituellement, la valeur par défaut est 4e. Cependant, pour que vos scripts PHP soient traités dans la 5ème version, vous pouvez spécifier dans htaccess:

  Application AddType / x-httpd-php5 .php 

Ou vous pouvez ajouter l'extension .php5 à chaque fichier au lieu de simplement .php.
C'est au cas où vous seriez trop paresseux pour éditer htaccess.






Exemples de configuration de fichier .Htaccess

Alors que certains de nos vaillants gourous du référencement traduisent des articles étrangers sans prendre la peine de créer un lien vers l'article d'origine, je vais vous donner une sélection de codes pour configurer .htaccess.

Presque tous les articles sont requis sauf

  • rediriger et bloquer - ils sont configurés au besoin
  • ainsi que les paramètres CNC (URL Human-Clear) - en règle générale, vous pouvez vous en tirer avec la fonctionnalité CMS

Comment créer .htaccess?

  1. cahier ouvert
  2. écrire du code (vous pouvez le faire plus tard :)
  3. enregistrez le document sous le nom .htaccess
  4. remplissez la racine du site (ou dans le dossier sur le serveur où nous ferons les réglages)

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

Paramètres par défaut de Htaccess

Paramètres par défaut de Htaccess

1. Définition de la page d'accueil par défaut

  DirectoryIndex pagename.html 

2. Définition des pages d'erreur en .htaccess

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

3. Protection Hotlink
Le fait que du contenu soit volé sur des sites n'est plus d'actualité. Mais il arrive qu'une tige avec des photos. Ici, afin d'éviter la charge du serveur et le gonflement du trafic, nous écrivons:

  Réécrire le moteur 
RewriteCond% {HTTP_REFERER}! ^ $

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

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

4. Enregistrez de force le fichier au lieu de l'ouvrir
Si vous voulez que les visiteurs enregistrent le fichier en ligne au lieu de le visualiser, alors dans .htaccess nous écrivons:

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

5. Mise en cache des fichiers
WordPress 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 pendant une journée 
<FilesMatch ". (Html ​​| htm) $">

Ensemble d'en-tête Cache-Control "max-age = 43200"
</FilesMatch>

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

Ensemble d'en-tête Cache-Control "max-age = 604800"
</FilesMatch>

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

Ensemble d'en-tête Cache-Control "max-age = 2592000"
</FilesMatch>

# interdiction de 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 en secondes.

6. Y compris les erreurs lors du débogage

  php_flag display_errors sur 

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

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

Redirection 1.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 peuvent rester quelque part.

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

Il existe toujours une telle option:
  Redirection permanente /oldpage.html http://yoursitename.ru/newpage.html 
Mais quelle est la différence fondamentale entre eux, franchement, je ne peux pas l'expliquer. L'un des lecteurs peut-il me le dire?

2. Liaison de domaines avec www et sans www
Redirigez votre nom de site.ru vers www.yoursitename.ru

  Réécrire le moteur 
RewriteBase /
RewriteCond% {HTTP_HOST}! ^ Www.yoursitename.ru $ [NC]
RewriteRule ^ (. *) $ Http://www.yoursitename.ru/$1 [L, R = 301]
Redirection inverse
  Réécrire le moteur 
RewriteBase /
RewriteCond% {HTTP_HOST}! ^ Yoursitename.ru $ [NC]
RewriteRule ^ (. *) $ Http://yoursitename.ru/$1 [L, R = 301]

3.302 redirection
Si vous travaillez sur le site, vous pouvez envoyer temporairement des visiteurs vers la page souhaitée (par exemple, avec une description du moment où les travaux doivent être terminés et comment vous pouvez être contacté).

  Réécrire le moteur 
RewriteCond% {REQUEST_URI}! /Informpage.html$
RewriteCond% {REMOTE_HOST}! ^ 12 \ .345 \ .678 \ .90
RewriteRule $ http://yoursitename.ru/informpage.html [R = 302, L]
La visualisation du site ne sera possible qu'à partir de votre adresse IP - 12.345.678.90

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

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

5. Transfert pour sécuriser les connexions https

  Réécrire le moteur 
RewriteCond% {HTTPS}! On
RewriteRule (. *) Https: //% {HTTP_HOST}% {REQUEST_URI}

Refuser / bloquer avec .htaccess

Refuser / bloquer avec .htaccess

1. Interdiction d'annoncer le répertoire
Il est utilisé s'il n'y a pas de fichier d'index si vous souhaitez interdire la visualisation du contenu du dossier (par exemple, pour les images):

  Options Tous -Indexes 
Code inverse, en termes de résolution
  Options + index 

2. Bloquer l'accès au fichier
Par exemple, ce pourrait être votre .htaccess

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

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

  <Répertoire / accès root /> 
Ordonnance autoriser, refuser
# À tout le monde sauf ...
permettre à tous
Refuser à partir de 198,69.
</Directory>
Autorisation d'accéder uniquement à partir de certaines adresses IP à un dossier spécifique (les adresses sont écrites avec un espace):
  # Nous indiquons le dossier auquel nous interdisons l'accès par nom d'hôte et son IP 
<Répertoire / accès root />
Ordonner refuser, autoriser
nier de tout
# Les adresses sont écrites avec un espace
Autoriser à partir de 198.69.144.98 198.69.144.94 198.69.144.92
</Directory>
Il est également possible de spécifier dans une seule liste à la fois le nom d'hôte et l'adresse IP:
  # Nous indiquons le dossier auquel nous interdisons l'accès par nom et IP 
<Répertoire / accès root />
Ordonnance autoriser, refuser
# À tout le monde ...
permettre à tous
# ... sauf le nom d'hôte et son IP
Refuser de robot.fromx.com 148.145.21.14
</Directory>

4. Blocage par ip
Pour que les spammeurs ne se soucient pas

  <Limit get> 
Ordre Refuser, Autoriser
Refuser à partir de 12.345.678.90
Refuser de 90.876.543.
Refuser de .tvoe.tv
Autoriser de tous
</Limit>
Sera bloqué:
  • utilisateur avec ip 12.345.678.90
  • tous les visiteurs avec ip tombant dans la plage de 90.876.543.0 à 90.876.543.255
  • et tous les visiteurs du fournisseur tvoe.tv
Pour interdire 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
  #Interdit à 16:18 31/03/2011 
Ordonnance autoriser, refuser
permettre à tous
Refuser de 198.69.132.24
Fermer l'accès à TOUS sauf certaines IP
  Ordonner refuser, autoriser 
nier de tout
# Une liste d'adresses IP avec un espace à partir duquel l'accès est autorisé
Autoriser à partir de 194.111.70.48 194.78.47.128
S'il est nécessaire de bloquer l'accès par masque, alors nous utilisons une adresse incomplète:
  # adresse incomplète 
198,69.
# adresses complètes correspondant à la première
198.69.132.24
198.69.136.89
198.69.1.8
Fermer l'accès au masque:
  #Interdit à 06:18 31/03/2011 
Ordonnance autoriser, refuser
permettre à tous
Refuser à partir de 198,69.

Configuration CNC avec .htaccess

En général, si vous travaillez avec WordPress, vous pouvez configurer des URL «conviviales» dans la section Paramètres »Permaliens (CNC). De nombreux CMS prennent également en charge le réglage de l'adresse de page. Par conséquent, si possible, essayez d'abord de vous débrouiller avec les fonctionnalités du moteur, puis procédez à la configuration de htaccess.

Configuration CNC avec .htaccess

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

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

2. Comment supprimer une catégorie de l'adresse
Par analogie avec la méthode précédente, nous écrivons

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