Guide de .htaccess et mod_rewrite

Par thème:


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


Guide rapide pour htaccess et mod_rewrite

Utilisation de apache- "puces" mod_rewrite et .htaccess considéré comme quelque chose d' insaisissable parmi les nombreux webmasters déçus, mais il est l' une des tâches les plus difficiles rencontrés par presque tous les développeurs web.

Je veux vous offrir une solution simple au lieu de trouver plus difficile de comprendre comment le mod_rewrite et .htaccess. La plupart des exemples utilisent fournies 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, je décide de créer simplement cette page comme un indice pour un usage public.

Encore une fois, htaccess - est un fichier de configuration qui vous permet de gérer le serveur Web Apache, mod_rewrite - est la réécriture du moteur, par lequel un serveur Web peut modifier l'URL quand ils sont téléchargés.

fichier .htaccess - un fichier texte qui est nommé .htaccess. On pourrait même dire qu'il est un fichier qui ne se compose que de l'expansion, car elle ne contient pas les noms des (jusqu'à caractère "point"). En règle générale, ce fichier se trouve dans le répertoire racine principale de votre serveur, mais vous pouvez également créer des fichiers séparés pour différents répertoires htaccess sur votre site.

canonisation

L'exemple le plus simple - pour vous assurer que le site ne contient pas d'erreurs pour la canonisation de la page d'accueil.

Beaucoup de webmasters ne souffrent pas d'un très bon classement dans les moteurs de recherche en raison du fait qu'il existe plusieurs versions de la page d'accueil URL, par exemple:

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

Ceux-ci apparaissent comme la page URL différente, en dépit du fait qu'ils pointent vers le même contenu. Google décide finalement quelle version est plus correct, mais il peut prendre un certain temps, et pendant ce temps, vous pouvez baiser des problèmes inutiles.

Pour résoudre ce problème, il suffit d'ajouter la ligne suivante à votre htaccess fichier:

  Options + FollowSymLinks 
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 permet de rediriger toutes les options possibles sur la page d'accueil http://www.site.com.

La conversion de fichiers HTML à PHP

Parfois, vous devez utiliser PHP-code sur la page HTML site Web statique. Au lieu de rediriger toutes vos pages HTML en leur équivalent PHP version, vous avez juste besoin de "dire" votre serveur, il doit analyser les fichiers HTML comme PHP.

  AddHandler application / x-httpd-php .html 

Ce code fonctionne avec tous les fichiers, donc si vous voulez créer un XML- dynamique ou ASP-fichiers qui se comportent comme PHP fichiers, vous avez juste besoin de faire les modifications suivantes:

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

pages d'erreur

pages d'erreur personnalisées peuvent être facilement personnalisés, tels que CPanel (ou DirectAdmin), mais si vous voulez personnaliser la page d'erreur par le htaccess fichier, ajoutez la ligne suivante:

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

répertoire d'indexation

Pour empêcher les robots de Google pour indexer le répertoire , vous devez définir la page d'index pour les répertoires nécessaires. Il est pas obligatoire pour certains serveurs.

  DirectoryIndex index.php3 

Je préfère faire une redirection vers le répertoire de la page d'index, ou d'une autre page appropriée. Par exemple, www.site.com/images/ peut être transmis à www.site.com et www.site.com/forum/ peuvent être transmis à www.site.com/forum/index.php~~V

Redirection pages

Un excellent exemple de l'utilisation htaccess pour rediriger une page à l'autre:

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

Redirection votre flux Feedburner

Si vous voulez changer votre alimentation au service Feedburner, vous aurez besoin de rediriger votre alimentation en courant à la nouvelle adresse http://feeds.feedburner.com/blog-feed.

Rediriger devrait demander à tous les visiteurs, sauf le robot Feedburner:

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

Amélioration de hotlink protection

Si vous voulez éviter d'autres sites se réfèrent directement aux images situées sur votre site, mais pour permettre au moteur de recherche Google, Yahoo et MSN les indexer, 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}! Rechercher \ 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]

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

Personnellement, je laisse hotlink, mais utilise une certaine solution qui utilise Google Images service et sites Web, hotlinkery pour obtenir des liens vers votre site .

Création de liens CNC avec mod_rewrite

Apache module de réécriture est principalement utilisé pour la conversion d'URL dynamique comme www.site.com/product.php?id=123 en statique et conviviale type www.site.com/product/123.

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

Un autre exemple, ce qui conduit URL: www.yoursite.com/script.php?product=123 à www.yoursite.com/cat/product/123/~~V esprit

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

Suppression des chaînes de requête

Certains sites proposent des liens vers le vôtre, en ajoutant la 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 où votre trafic vient. Cela provoque l'apparition d'un contenu en double pour votre site, si vous avez besoin de mettre en place une redirection vers votre page d'accueil:

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

Alors que tous. Si vous avez quelque chose à ajouter, s'il vous plaît kamenty dans ...

Sur la plupart des webhosts installé deux ou plusieurs versions de PHP. Habituellement est defaul 4ème. Cependant, quelles seraient vos scripts PHP traités dans la version 5, vous pouvez vous inscrire dans le htaccess:

  AddType application / x-httpd-php5 .php 

Ou vous pouvez ajouter à chaque .php5 extension de fichier au lieu de simplement .php.
Tel est le cas si vous êtes trop paresseux rediktirovat htaccess.






Les paramètres du fichier de Exemples

Alors que certains de nos valeureux seo "gourous" traduire les articles étrangers, sans prendre la peine d'installer des liens vers l'article original, je vais vous donner une sélection de codes pour configurer .htaccess.

Presque tous les éléments sont nécessaires, en plus de

  • redirection et blocage - ils sont ajustés au besoin
  • ainsi que l'installation CNC (ChelovekoPonyatnyhURL) - en règle générale, vous pouvez obtenir la fonctionnalité CMS

Comment créer un .htaccess?

  1. cahier ouvert
  2. écrire du code (et alors vous pouvez le faire :)
  3. enregistrer le document avec le nom .htaccess
  4. remplir la racine du site (ou dans un dossier sur le serveur, où nous allons faire des ajustements)

* Yoursitename.ru exemples remplacent l'adresse de votre domaine

htaccess par défaut

htaccess par défaut

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

  DirectoryIndex pagename.html 

2. Détermination de la page d'erreur (erreur) dans le .htaccess

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

3. Protection contre les hotlinks
Le fait que le contenu des sites de volée, il n'y a plus nouvelles. Mais il arrive que la tige avec des images. Ceci afin d'éviter la charge sur le serveur, et le trafic blow-up, nous écrivons:

  RewriteEngine On 
RewriteCond% {HTTP_REFERER}! ^ $

# Domaines qui peuvent se référer à des images à partir de votre site
RewriteCond% {HTTP_REFERER} ^ http // :! ([-a-Z0-9] \.) Yoursitename \ .ru [NC]?

# Ne pas afficher les images à hotlink
. RewriteRule \ (gif | jpe g |? Png) $ - [F, NC, L]
Si vous voulez un autre site au lieu de 403 erreur se produit une certaine image, la dernière ligne devrait être remplacé par:
  RewriteRule \. (Jpg | png | gif) $ Http://yoursitename.ru/images/imagename.jpg [NC, R, L] 

4. forcé d' économie au lieu d'ouvrir le fichier
Si vous voulez que vos visiteurs prosmatra place magasin de fichiers en ligne en écriture .htaccess:

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

5. fichiers de cache
Dans WordPress il y a un plugin spécial: wp-super-cache. Si vous utilisez également le CMS, qui ne supporte pas la mise en cache, vous pouvez effectuer les réglages suivants dans .htaccess

  # Html Cache et htm pour une journée 
<FilesMatch "(html | htm) $.">

Header mis Cache-Control "max-age = 43200"
</ FilesMatch>

# Cache css, javascript et txt fichiers pour une semaine
<FilesMatch "(js | css | txt) $.">

Header mis Cache-Control "max-age = 604800"
</ FilesMatch>

# Caching flash et photos pour un mois
<FilesMatch "(flv | swf | ico | gif | jpg | jpeg | png) $.">

Header mis Cache-Control "max-age = 2592000"
</ FilesMatch>

# Interdiction des scripts de mise en cache
<FilesMatch "\ (pl | php | cgi | spl | scgi | fcgi) $.">

Header unset Cache-Control
</ FilesMatch>
paramètre Max-âge est donnée en secondes.

6. Activer erreur lors du débogage

  display_errors php_flag sur 

Mise en place d' une redirection en utilisant .htaccess

Mise en place d'une redirection en utilisant .htaccess

1. redirection 301
La solution optimale pour rediriger les visiteurs de vieux à de nouvelles adresses, si au fil du temps la structure du site a changé, et les anciennes URL peut quelque part pour rester.

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

Il se produit même une option:
  Rediriger permanent /oldpage.html http://yoursitename.ru/newpage.html 
Mais quelle est la différence fondamentale entre eux, pour être honnête, je ne peux pas expliquer. Peut-être que quelqu'un de lecteurs nous le dira.

2. encollage domaine avec www et non www
Rediriger pour faire face yoursitename.ru sur www.yoursitename.ru

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

3. redirection 302
Si vous travaillez sur le site, vous pouvez temporairement envoyer les visiteurs vers une page spécifique (par exemple, une description du moment où le travail devrait être terminé et comment contacter avec vous).

  RewriteEngine sur 
RewriteCond% {REQUEST_URI}! /informpage.html$
RewriteCond% {REMOTE_HOST}! ^ 12 \ .345 \ .678 \ .90
RewriteRule $ http://yoursitename.ru/informpage.html [R = 302, L]
Surfer sur le site sera possible uniquement avec votre adresse IP - 12.345.678.90

4. Redirection vers un autre site
Renvoyer tous les visiteurs vers un autre site, en plus de l'adresse IP spécifiée

  ErrorDocument 403 http://www.yoursitename.ru 
Ordre deny, allow
Refuser de tous
Permettre de 12.345.678.90
Permettre de 12.345.678.92

5. Forwarding pour sécuriser les connexions https

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

Sauf / blocage en utilisant .htaccess

Sauf / blocage en utilisant .htaccess

1. L'interdiction de la liste des répertoires
Il est utilisé quand il n'y a pas de fichier d'index, si vous souhaitez refuser l'accès au contenu du dossier (par exemple, images):

  Options Tous -Indexes 
Code inverse, dans le sens de la résolution
  Options + Indexes 

2. Blocage de l' accès au fichier
Par exemple, cela pourrait être votre .htaccess

  <Fichiers .htaccess> 
pour permettre, refuser
deny from all
</ Files>

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

  <Directory / accès root /> 
Order allow, deny
# Tout le monde sauf ...
permettre de toute
Deny from 198.69.
</ Directory>
Autoriser l'accès uniquement de certains IP à un dossier spécifique (l'adresse enregistrée par un espace):
  # Spécifiez le dossier dans lequel interdire l'accès par nom d'hôte et IP 
<Directory / accès root />
Ordre deny, allow
deny from all
# Les adresses sont enregistrées à travers l'espace
Permettre de 198.69.144.98 198.69.144.94 198.69.144.92
</ Directory>
Il est également possible de spécifier dans une liste, et le nom d'hôte et l'adresse IP:
  # Spécifiez le dossier dans lequel interdire l'accès par nom et IP 
<Directory / accès root />
Order allow, deny
# Toute personne ...
permettre de toute
# ... Sauf pour le nom d'hôte et IP
Deny from robot.fromx.com 148.145.21.14
</ Directory>

4. Blocage des ip
Pour les spammeurs ne se soucient pas

  <Limit GET> 
Ordre Refuser, Autoriser
Deny from 12.345.678.90
Deny from 90.876.543.
Deny from .tvoe.tv
Permettre de tous
</ Limit>
Ils seront bloqués:
  • utilisateur avec ip 12.345.678.90
  • Tous les visiteurs du ip, tombe dans une plage allant jusqu'à 90876543255 90.876.543.0
  • et tous les visiteurs du fournisseur de tvoe.tv
Pour refuser l'accès au dossier du site directives utilisées autoriser ou refuser.
Refuser l'accès à certaines adresses IP
  # Ban avec 16:18 31-03-2011 
Order allow, deny
permettre de toute
Deny from 198.69.132.24
Fermer l'accès à tout le monde sauf l'IP spécifiée
  Ordre deny, allow 
deny from all
# Liste IP séparés par un espace à partir duquel l'accès est autorisé
Allow from 194.111.70.48 194.78.47.128
Si vous avez besoin de fermer le masque d'accès qui utilisent 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 masque d'accès:
  # Ban avec 6:18 31-03-2011 
Order allow, deny
permettre de toute
Deny from 198.69.

Réglage de la CNC via .htaccess

En règle générale, si vous utilisez WordPress, puis ajustez l'url "sympathique", allez dans Paramètres »Permalinks (NC). Beaucoup CMS prend également en charge de définir l'adresse de la page. Par conséquent, si possible, essayez d'abord de gérer la fonctionnalité du moteur, et passer ensuite à mettre en place htaccess.

Réglage de la CNC via .htaccess

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

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

2. Comment faire pour supprimer la catégorie d'adresses
Par analogie avec la manière précédente de l'écriture

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