Fichier Apache-serveurs Configurateur

Par thème:


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


.htaccess (avec un point au début du nom) - il est un fichier-Configurateur le serveur Apache, qui vous permet de configurer le serveur dans des répertoires distincts (dossiers) en ne fournissant pas l' accès au fichier de configuration principal. Par exemple, pour définir des autorisations de fichiers dans le répertoire, en changeant le nom du fichier d'index indépendamment pour traiter les erreurs Apache, rediriger les visiteurs vers une page d'erreur particulière. .htaccess est un simple document texte, que le htaccess d'extension. Ce fichier se trouve généralement dans le site racine, mais vous pouvez également créer .htaccess fichiers supplémentaires pour les différents répertoires sur votre site.

Mod_rewrite - module utilisé par les serveurs Web pour convertir les URL.

Module directive Mod_rewrite

  • RewriteBase
  • RewriteCond
  • RewriteEngine
  • RewriteLock
  • RewriteLog
  • RewriteLogLevel
  • RewriteMap
  • RewriteOptions
  • RewriteRule

Incarnations de la redirection via fichier .htaccess

  1. redirection simple:
      Rediriger 301 / http://www.domainname.ru/
    
    ou
      rediriger / secrète http://www.site.ru/nosecret
    
    Nous avons mis dans un fichier .htaccess ou httpd.conf pour Apache. Le premier "/" signifie que tout le site de niveau supérieur, y compris tous les sous-répertoires, sera transmis (ne pas oublier de mettre le dernier "/"). Si vous souhaitez transférer la page, en conservant l'ancien PR de la page, vous pouvez le faire:

    Rediriger 301 /old/old.htm http://www.you.ru/new.htm où:
    /old/old.htm - chemin et le nom de l'ancienne page
    http://www.you.com/new.htm - un nouveau chemin d'accès et une page nouveau nom déplacé

  2. Redirection vers une page sur l'ip de l'utilisateur ou de demander une page spécifique (ainsi que le nom du masque).
    Si l'utilisateur ip 192.152.37.125, il sera redirigé vers la page user.php:
      SetEnvIf REMOTE_ADDR 192.152.37.125 REDIR = "redir"
     RewriteCond% {REDIR} redir
     RewriteRule ^ / $ /user.php
    
  3. Rediriger lors de la demande de certains fichiers. Si les fichiers demandés, dont l'extension ne sont pas spécifiées dans le fichier .htaccess (gif et jpg), il est nécessaire de rediriger:
      RewriteEngine On
     RewriteRule (gif | jpg) $ !. Index.php
    

  4. Utilisation de mod_rewrite:
      Options + FollowSymLinks 
     RewriteEngine sur 
     RewriteCond% {HTTP_HOST} ^ yourdomain \ .ru 
     RewriteRule ^ (. *) $ Http://www.yourdomain.ru/$1 [R = permanent, L]
    

  5. Rediriger l'expression régulière:
      RedirectMatch 301 Http (*.): //www.yourdomain.ru$1 Prescrit dans le fichier .htaccess. 
    
    (. *) RedirectMatch correspond effectivement les modèles d'expression régulière après le nom de domaine. Ainsi, vous ne pouvez pas effectuer un patron sur les ^ / yourdomain.ru. Cependant, vous pouvez convertir la page avec l'extension .html aux fichiers du même nom, mais avec une extension .php:
      RedirectMatch 301 (. *) \ Html $ http :. //www.yourdomain.ru$1.php
    
    Si vous voulez faire une redirection différente pour les pages individuelles, vous pouvez utiliser ce qui suit:
      RedirectMatch permanent ^ / html / resources.html $ http://www.newdomain.com/resources.php 
     RedirectMatch permanent ^ / html / other_page.html $ http://www.newdomain.com/other_page.php 
     RedirectMatch permanent ^ / (. *) $ Http://www.newdomain.com/ 
    
    "RedirectMatch permanent" - ce qui est l'équivalent de "RedirectMatch 301" string "* (Wildcard)" devrait être la dernière dans cette liste.

  6. Création d'une URL lisible pratique
    Convertir, par exemple, www.site.ru/product.php?id=123 www.site.ru/product/123 de la manière suivante:
      RewriteEngine sur
     RewriteRule ^ produit /([^/\.]+)/?$ product.php? Id = $ 1 [L]
    
    Dans l'exemple suivant, nous transformons www.site.ru/script.php?product=123 en www.site.ru/cat/product/123/:
      RewriteRule chat /(.*)/(.*)/$ /script.php?$1=$2
    

  7. Redirection vers PHP:
      header ( "HTTP / 1.1 301 Moved permanente"); 
     header ( "Location: http://www.newdomain.ru/newdir/newpage.htm"); 
     exit (); 
    
    Naturellement, il est nécessaire de créer une page lors de l'accès qui et rediriger se produira, et placez-le sur le serveur. Et mieux sélectionner HTTP / 1.1 (au lieu de HTTP / 1.0 ou HTTP / 0.9, qui ne prend pas en charge l'hébergement virtuel)

  8. Rediriger tous les fichiers dans un dossier de fichiers.
    Par exemple, vous ne devez plus une section du site de Super escompte et souhaitez rediriger toutes les requêtes vers le dossier / Superdiscount un seul fichier /hot-offers.php. Pour ce faire, ajoutez le code suivant à votre .htaccess.
      RewriteRule ^ Superdiscount (. *) /hot-offers.php $ [L, R = 301]
    

  9. Rediriger tous les dossiers sauf un fichier
    Dans l'exemple suivant, tous les fichiers dans le dossier / Superdiscount seront redirigés vers le sur les fichiers /hot-offers.php sauf Courtyard /superdiscount/my-ebook.html entoure doit être redirigé vers /hot-to-make-million.html
      RewriteRule ^ Superdiscount / my-ebook.html /hot-to-make-million.html [L, R = 301]
     RewriteRule ^ Superdiscount (. *) /hot-offers.php $ [L, R = 301]
    

  10. Dynamic Redirect URL vers le nouveau fichier.
    Cette option est utile si vous souhaitez rediriger une URL dynamique avec des paramètres nouveau fichier statique.
      RewriteRule ^ article.jsp? Id = (. *) $ /latestnews.htm [L, R = 301]
    
    Alors maintenant, la demande au type de fichier http://www.kass.ws/article.jsp?id=8632 et / ou http://www.kass.ws/article.jsp?id=1245 fichier sera envoyé à l'adresse http : //www.kass.ws/latestnews.htm.

  11. rediriger Mass nouveaux fichiers.
    Tepep passer au moment le plus difficile, quand vous avez besoin de rediriger beaucoup d'URL-s, par exemple après un changement de votre CMS. Ici, à la fois un certain nombre de problèmes. Tout d'abord, l'introduction de la nouvelle adresse dans le fichier .htaccess prendre un temps très long, et en elle-même est une activité désagréable. Deuxièmement, trop d'entrées dans le fichier .htaccess va ralentir le serveur Apache. Et troisièmement, lors d'un si grand nombre d'informations est très probable que vous allez faire une erreur quelque part. Pour cela, le meilleur moyen est d'embaucher un programmeur qui vous écrire une redirection dynamique.
    L'exemple suivant est écrit en PHP, mais peut aussi être fait dans toute langue. Supposons que vous avez déménagé dans un nouveau système de liens sur votre site et tous les fichiers se terminant avec le vieux id devrait être sredirekcheny. Tout d'abord, créer la table de base de données qui contient la vieille id et une nouvelle URL pour redirection. old_id INT new_url VARCHAR (255) Ensuite, nous écrivons le code qui permettra de relier votre ancien id nouvelle URL-s
    Après cela, ajoutez la ligne suivante à .htaccess:
      RewriteRule ^ / produit - _ ([0-9] +) php /redirectold.php?productid=$2 (*.).
    
    puis créer un redirectold.php de fichier PHP, qui soutiendra les redirections 301:
      <? Php
     fonctionner getRedirectUrl ($ productid) {
     // Connexion à la base de données
     $ Dserver = "localhost";
     $ Ddb = "mydbname";
     $ Duser = "mydb_user";
     $ DPASS = "mot de passe";
    
     $ S = @mysql_connect ($ dserver, $ duser, $ DPASS)
     or die ( "Impossible de se connecter au serveur de base de données");
    
     @mysql_select_db ($ ddb, $ s)
     or die ( "Impossible de se connecter à la base de données");
    
     $ Query = "SELECT FROM new_url de redirections WHERE old_id =".  $ ProductID;
     mysql_query ($ query);
     $ Résultat = mysql_query ($ query);
     $ HasRecords = mysql_num_rows ($ result) == 0?  false: true;
     if (! $ hasRecords) {
     $ Ret = 'http://www.yoursite.com/';
     } Else {
     while ($ row = mysql_fetch_array ($ result))
     {
     $ Ret = 'http://www.yoursite.com/'.  $ Row [ "new_url"];
     }
     }
     mysql_close ($ s);
     return $ ret;
     }
    
     $ ProductID = $ _GET [ "ProductID"];
     $ Url = getRedirectUrl ($ productid);
    
     header ( "HTTP / 1.1 301 Moved permanente");
     header ( "Location: $ url");
     exit ();
     ?>
    

    Maintenant, toutes les demandes à votre ancienne URL s causeront redirectold.php, qui trouveront la nouvelle URL et retourne une réponse 301 à votre nouveau lien.

    Réachemine en fonction du temps

    Lorsque vous avez besoin d'utiliser des astuces telles que le contenu de la masse en fonction du temps de webmasters toujours utiliser des scripts CGI qui produisent des redirections vers des pages spéciales. Comment cela peut être fait via mod_rewrite?

    Il y a beaucoup de variables à rediriger ces conditions de TIME_xxx. En conjonction avec les modes de comparaison lexicographique particuliers nous pouvons produire en fonction du temps et redirige STRING = STRING:
     
      RewriteEngine on RewriteCond% {TIME_HOUR}% {TIME_MIN}> 0700 RewriteCond% {TIME_HOUR}% {TIME_MIN} <1900 RewriteRule ^ foo \ .html $ foo.day.html RewriteRule ^ foo \ .html $ foo.night.html 

    Il fournit foo.day.html contenu lorsque demandé URL foo.html 07:00-à-19h00 et le reste du contenu de foo.night.html.


  12. Nous enlevons toutes les requêtes commençant "WWW".
     RewriteEngine sur # pour divulguer que veulent utiliser mod_rewrite
     RewriteCond% {HTTP_HOST} ^ www \. (. *) [NC]
     RewriteRule ^ / (*.) Http :? //% 1 / $ 1 [L, R = permanent]
    

  13. Changer le extension .html en .php
    Parfois, il arrive que vous avez un site web statique, mais vous avez besoin de pannes sur elle tout php-script. Pour ce faire, vous devez indiquer au serveur pour analyser cette page php-file.
     AddHandler application / x-httpd-php .html
    
    Cette technique peut également être utilisée pour d'autres extensions de fichiers:
     AddHandler application / x-httpd-php .xml
     AddHandler application / x-httpd-php .asp
    

Refuser l'accès à un répertoire spécifique

  1. pour tous à tous les fichiers dans un répertoire:
      deny from all
    
  2. à un fichier spécifique:
     deny from all
    
  3. par ip User:
      Pour nier, permettre
     deny from all
     permettre de 192.152.37.125
    
    L'accès à ce répertoire sera autorisé uniquement à l'utilisateur avec ip 192.152.37.125.

    Et si vous voulez contraste, séparé les utilisateurs d'interdiction d'accès IP à votre site, puis d'écrire les lignes suivantes:

     pour permettre, refuser
     permettre de toute
     deny from 192.152.37.125
     refuser de 123.456.177
    
  4. Options de la directive -Indexes - une interdiction de l'affichage du contenu du répertoire en l'absence du fichier d'index Parfois, vous devez vous assurer que s'il n'y a pas de fichier dans le répertoire qui est affiché par défaut, non publié une liste de fichiers dans un répertoire. Ensuite, vous pouvez ajouter la ligne suivante à .htaccess:
      options de -Indexes
    
    Dans ce cas, au lieu d'une liste de fichiers dans un répertoire visiteur recevra une erreur HTTP 403 - accès interdit.
  5. Refuser l'accès à des fichiers avec plusieurs types d'extensions
     deny from all
    
    Accès refusé aux fichiers avec l'extension * .inc, * .conf et * .cfg. Bien que la directive est, par défaut, il ne fonctionne pas avec des expressions régulières, mais peut être activée en plaçant le caractère tilde (~) dans la directive sur les options. La syntaxe est: [tilde] [espace] [dalee_vse_bez_probelov] Pour bloquer cet accès, entrez ce qui suit:
      RewriteRule ^ .htaccess $ - [F]
    
    Il est généralement traduit par:
    Si quelqu'un tente d'accéder au fichier .htaccess, le système doit générer une «réponse de 403 HTTP» ou code d'erreur «403 Forbidden - Vous n'êtes pas autorisé à accéder à /.htaccess sur ce serveur.

    Conception ^ .htaccess $ dans une expression régulière signifie:
    ^ - Le début de la ligne d'ancrage
    $ - Fin de l' ancre de ligne
    . - Expression régulière point '.' désigne un caractère méta et doit être protégé par une barre oblique inverse (backslash), si vous voulez toujours un point réel.

    Le nom du fichier doit être situé exactement entre le début et la fin d'ancrage. Cela garantira que seul ce nom de fichier spécifique et aucun autre va générer un code d'erreur.
    [F] - une «interdiction» case spéciale (interdit).
    [NC] - lettres insensibles à la casse.
    [OR] - sens »ou la condition suivante.

encodage Définition

encodage Définition dans lequel "donne" les fichiers du serveur

  AddDefaultCharset fenêtres-1251
Options: KOI8-R, UTF-8, Windows-1251

Détermination de l'encodage des fichiers téléchargés

  CharsetSourceEnc fenêtres-1251

Définition d'un mot de passe sur un répertoire en utilisant .htaccess

Pour définir un mot de passe sur le répertoire, vous pouvez utiliser le système d'authentification de base fournies dans le serveur web Apache. Créez un répertoire auquel veulent restreindre l'accès par mot de passe, le fichier .htaccess avec ces lignes directrices:
  AuthType Basic
 AuthName "Certains Nom"
 AuthUserFile /www/some_login/www/htdocs/some_dir/.htpasswd
 exiger valid-user
Chemin /www/some_login/www/htdocs/some_dir/.htpasswd est le chemin vers le fichier de mot de passe sur le disque de notre serveur. Par exemple, si vous placez le fichier .htpasswd (ce sont les mots de passe) dans le répertoire de la maison, où vous vous trouvez, en se connectant sur le serveur FTP, le chemin d'accès à ce fichier se penchera /www/some_login/www/htdocs/some_dir/.htpasswd où some_login - Votre nom d'utilisateur. La directive AuthUserFile pour spécifier un chemin absolu vers le login / mot de passe, que nous allons créer plus tard. Si vous créez un fichier .htaccess sur votre ordinateur, plutôt que directement sur le serveur en utilisant un éditeur de texte, accorder une attention particulière au fait que le .htaccess doit être transmis via FTP est strictement un mode texte (ASCII).

Créez un fichier de mot de passe. le fichier de mot de passe doit contenir des lignes de la forme connexion: mot de passe. Le mot de passe doit être crypté en utilisant l'algorithme MD5. Une façon de créer un tel fichier - utiliser le programme fourni avec Apache - htpasswd (sur notre serveur, il est dans le répertoire / usr / local / apache / bin, chemin complet - / usr / local / apache / bin / htpasswd).

Considérez comment créer un fichier de mot de passe dans unix shell directement sur le serveur. Rendez-vous sur la coque et exécutera les commandes suivantes:

  htpasswd .htpasswd -mbc user1 7B1safkir
- Créer un nouveau .htpasswd de fichier, ce qui ajoute une entrée pour l'utilisateur user1 avec le mot de passe spécifié sur la ligne de commande.
  htpasswd .htpasswd user2
- Ajouter à la .htpasswd utilisateur fichier user2 déjà existant, et le mot de passe est entré manuellement en réponse à une demande pour le programme.

Après avoir obtenu des institutions de tous les logins besoin de télécharger le fichier. Sur les autres méthodes de définition des mots de passe sur les pages

Définissez vos propres pages d'erreur

Demandez à votre propre page d'erreur peut être comme suit:
  ErrorDocument 404 http://www.site.ru/404.php
IE ignore la taille de la page est inférieure à 512 octets.

répertoires d'indexation et sous-répertoires

Pour éviter l'indexation par les moteurs de recherche et répertoires sous-répertoires, vous devez vous inscrire cette ligne, par exemple:
  DirectoryIndex index.php
Cette directive spécifie le fichier qui sera appelé lors de l'accès au répertoire sans spécifier un nom de fichier.

Vous pouvez spécifier plusieurs pages d'index. Lorsque vous demandez un répertoire, ils seront recherchés dans l'ordre dans lequel sont énumérés dans la directive DirectoryIndex. Si aucun fichier index.html est trouvé, il va rechercher le fichier index.php, etc.

  DirectoryIndex index.html index.php index.shtml

Personnellement, je préfère transmettre aux répertoires vides ou sur la page d'accueil, ou sur toute autre page appropriée. Par exemple, le répertoire peut être transmis à www.site.ru/pic/~~V www.site.ru.

Protéger vos images de téléchargement

Très souvent, il arrive que les webmasters copie flagrante du contenu de votre site, ainsi que des dessins et peintures sont chargés avec votre même serveur. Cela crée un trafic supplémentaire qui conduit souvent à plusieurs problèmes. Comment se protéger contre ces webmasters et d'empêcher les robots des moteurs de recherche d'indexer l'image? Il est simple:
  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]
hotlinker.gif - l'image à afficher au lieu d'images réelles. Je recommande cette image afficher votre logo et un lien vers votre site Web.

Un autre varinat refuser l'accès à des sites non autorisés avec des photos:

  SetEnvIfNoCase Referer "^ $" local_ref = 1
 SetEnvIfNoCase Referer "^ http // :? (. Www \) htmlweb \ .ru" local_ref = 1
 SetEnvIfNoCase Referer "^ http // :? (. Www \) images \ .yandex \ .ru" local_ref = 1
 SetEnvIfNoCase Referer "^ http // :? (. Www \) hghltd \ .yandex \ .com" local_ref = 1
 Commande Autoriser, Refuser
  Allow from env = local_ref

Les moteurs de recherche et toutes sortes de scanners kollosalny créer du trafic vers votre site. Le bloc de code suivant permettra bots de bloquer l'accès au site.

  RewriteCond% {HTTP_USER_AGENT} (Googlebot | Slurp | spider | Twiceler | Heritrix |
	 Combinez | appie | boitho | e-SocietyRobot | Exabot | Nutch | OmniExplorer |
	 MJ12bot | ZyBorg / 1 | Demandez \ Jeeves | AskJeeves | ActiveTouristBot |
	 JemmaTheTourist |  agadine3 | BecomeBot | cluster-Search-Bot |
	 MSIECrawler | freefind | galaxie | GenieKnows | INGRID | grub-client |
	 MojeekBot | NaverBot | NetNose-Crawler | OnetSzukaj | PrassoSunner |
	 Asterias \ Crawler | THUNDERSTONE | GeorgeTheTouristBot |
	 VoilaBot | Vagabondo | fantomBro navig ateur | stealthBrowser | cloakBrowser |
	 fantomCrew \ Browser | Girafabot | Indy \ Library | Intelliseek | Zealbot |
	 Windows \ 95 | ^ Mozilla / 4 \ .05 \ \ [fr \] $ | ^ Mozilla / 4 \ .0 $) [NC]
 RewriteRule ^ de $ (*.) - [F]
 #
 RewriteCond% {HTTP_USER_AGENT} ^ Mozilla. * [NC, OR]
 RewriteCond% {HTTP_USER_AGENT} ^ Opera. * [NC, OR]
 RewriteCond% {HTTP_USER_AGENT} ^ Firefox. * [NC, OR]
 RewriteCond% {HTTP_USER_AGENT} ^ Netscape. * [NC]
 RewriteRule ^ $ (*.) - [L]
 RewriteRule ^ de $ (*.) - [F]

Suivi des résultats à votre fichier robots.txt

Pour avoir plus d'informations sur la visite des moteurs de recherche, il est utile d'avoir plus d'informations sur l'accès au fichier robots.txt Pour oganizovat cela, «.htaccess» doit avoir les entrées suivantes:
  RewriteEngine sur
  Options + FollowSymlinks
  RewriteBase /
  RewriteRule ^ robots.txt $ /robot.php?%{REQUEST_URI}
Maintenant, lorsque vous demandez le fichier 'robots.txt' notre RewriteRule redirige le visiteur (robot) pour traiter la demande de robot.php script. En outre, la variable passé au script, qui sera traitée en fonction de vos besoins. 'REQUEST_URI' indique le nom du fichier demandé. Dans cet exemple - 'robots.txt'. Le script lit le contenu du 'robots.txt' et l'envoyer à un navigateur Web ou une araignée de moteur de recherche. Ainsi, nous pouvons supposer hits et les visiteurs de fichiers journaux.

PHPSESSID

Pour désactiver l'ajout de l'URL PHPSESSID à insérer au début de index.php:

  ini_set ( "session.use_trans_sid", 0);

Ou monter dans .htaccess:

  php_flag session.use_trans_sid Off

Si vous faites tout ce bruit compliqué, prêt à l'emploi la transformation des services d'URL dynamique en statique en utilisant htaccess

directive cache

Caching pour tous les types de temps d'accès aux fichiers
  ExpiresActive sur
 "Accès plus 600 secondes" ExpiresDefault
Caching pour tous les types de fichiers par date de modification
  ExpiresActive sur
 "Modification plus 600 secondes" ExpiresDefault
Caching pour certains types de fichiers
  texte ExpiresByType / css "modification plus 600 secondes"
 ExpiresByType image / jpeg "modification plus 600 secondes"
 ExpiresByType image / gif "modification plus 600 secondes"
 l'image ExpiresByType / x-ico "modification plus 600 secondes"
 ExpiresByType image / png "modification plus 600 secondes"

Ban cache avec le serveur Apache

Ouvrez le fichier de configuration du serveur Apache httpd.conf et supprimez les lignes suivantes:

 LoadModule expires_module / mod_expires.so
 LoadModule headers_module / mod_headers.so 
 ...
 AddModule mod_expires.c
 AddModule mod_headers.c

Entrez les informations suivantes dans .htaccess:

  # Ban cache dans ce dossier
 # Vous devez passer des modules
 # Mod_headers.c et mod_expires.c
 #
 # Tête Cache-Control
 append-tête Cache-Control "no-store no-cache, doit-revalidate"
 # La tête Expires
 ExpiresActive Sur
 ExpiresDefault "maintenant"

têtes obligatoires sont envoyés automatiquement, et les écrire spécifiquement est plus nécessaire en PHP - le cache est déjà éteint!

Description de tête http-cache Cache-control

Caching via un fichier .htaccess

  Résolution # mise en cache dans ce dossier
 # Vous devez passer des modules
 # Mod_headers.c et mod_expires.c
 #
 # Tête Cache-Control
 append-tête Cache-Control "public"
 # La tête Expires
 ExpiresActive Sur
  «Accès plus 1 heures" ExpiresDefault
  #ExpiresDefault "Accès plus 10 ans»

Caching des fichiers javascript en utilisant le fichier .htaccess

 "Accès plus 3 jours" ExpiresDefault

Soyez prudent lorsque la mise en cache, depuis quand un fichier change, l'utilisateur peut obtenir la nouvelle version seulement après 3 jours!

Comment faire des pages HTML pour gérer php-code?

Prescrire dans votre fichier .htaccess les lignes suivantes:
  RemoveHandler .php .htm .html
 AddHandler application / x-httpd-php .php .htm .html

Comment héberger plusieurs sites sur le même hébergement mutualisé?

Pour placer deux ou plusieurs sites sur le même hébergement mutualisé, malgré vous mène au plan tarifaire le nombre de domaines doit être dans le fichier ".htaccess" prescrire les lignes suivantes:

  RewriteEngine On
 RewriteRule ^ newdirectory / - [L]
 RewriteCond% {HTTP_HOST} Newdomain.ru (www.)? [NC]
 RewriteRule (. *) Newdirectory / 1 $ [L]

Où:
newdirectory / - dossier, qui sera basé sur le deuxième site
newdomain.ru - le domaine pour lequel nous faisons la redirection

Notez que dans ce cas, vous aurez un seul compte de messagerie. Ie si vous avez une boîte il [email protected]~~V~~singular~~2nd, le newdomain.ru après la connectivité de domaine à la case de [email protected] apparaît deuxième nom - [email protected]. Et lorsque vous créez toute nouvelle boîte aux lettres (par exemple, info), il est automatiquement attribué deux noms - [email protected] et [email protected].

Pages de recherche dans plus d'un répertoire

Parfois, il est nécessaire pour permettre au serveur Web pour rechercher la page dans plus d'un répertoire.

  RewriteEngine sur

 # Tout d'abord essayer de le trouver à l'emplacement spécifié / ...
 # ... Et si trouvé puis terminer la recherche:
 RewriteCond / votre / docroot / dir1 /% {REQUEST_FILENAME} -f
 RewriteRule ^ (. +) / Votre / docroot / dir1 / 1 $ [L]

 # Deuxièmement - essayer de le trouver dans le pub / ...
 # ... Et si trouvé puis terminer la recherche:
 RewriteCond / votre / docroot / dir2 /% {REQUEST_FILENAME} -f
 RewriteRule ^ (. +) / Votre / docroot / dir2 / 1 $ [L]

 # Sinon, poursuivez pour d'autres directives
 RewriteRule ^ (+.) - [PT]

Les hôtes de l'utilisateur virtuel

Si vous voulez fournir des adresses www.subdomain.domain.ru pour les utilisateurs de pages, vous pouvez utiliser l'ensemble suivant des règles de conversion http://www.subdomain.domain.ru/path le chemin / home / subdomain / chemin intérieur:

  RewriteEngine sur
 RewriteCond% {HTTP_HOST} ^ www \. [^.] + \. Ru $
 $ 1 [C] RewriteRule ^ (. +)% {HTTP_HOST}
 \. Ru (. *) 2 / Accueil / $ 1 $ RewriteRule ^ www \. (+ [^.])

fichiers endommagés lors téléchargés vers le serveur

Si le transfert de fichiers via le formulaire (si spécifié enctype = "multipart / form-data") des données binaires sont endommagés, inscrivez-vous dans la directive /cgi-bin/.htaccess:
  CharsetRecodeMultipartForms Off.

Erreur de chargement des fichiers SWF.
Erreurs lors de l'accès aux pages qui contiennent des mots-clés,
tels que $ _REQUEST

Cela peut être dû au module installé dans Apache. Par défaut, il bloque dans la chaîne de requête aux arguments SQL, et d'autres commandes potentiellement dangereuses.

Messages d'erreur possibles:

interdit

Vous n'êtes pas autorisé à accéder à /adm/index.php sur ce serveur. En outre, une erreur 404 Not Found a été rencontrée lors de la tentative d'utiliser un ErrorDocument pour traiter la demande.
ou
La demande a été rejetée et l'insécurité.
Ajouter à .htaccess
 SecFilterEngine Off
 SecFilterScanPOST Off
Pour les messages:
"POST /wp-admin/async-upload.php HTTP / 1.1" 406 354 "-" "Shockwave Flash"
Vous pouvez supprimer la protection que pour télécharger des fichiers sur le serveur:
 SecFilterEngine Off
 SecFilterScanPOST Off

Une protection optimale est seulement retiré du dossier où il est nécessaire, sans enlever la protection de l'ensemble du site.

Variables de serveur

Ce type de variable% {NOM_DE_VARIABLE}

NOM_DE_VARIABLE qui peut être une chaîne pris dans la liste suivante:

têtes HTTP: Se connecter et demande:
HTTP_USER_AGENT
HTTP_REFERER
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST
HTTP_PROXY_CONNECTION
HTTP_ACCEPT
REMOTE_ADDR
REMOTE_HOST
REMOTE_USER
REMOTE_IDENT
REQUEST_METHOD
SCRIPT_FILENAME
PATH_INFO
QUERY_STRING
AUTH_TYPE
serveur interne: système: spéciale:
DOCUMENT_ROOT
SERVER_ADMIN
SERVER_NAME
SERVER_ADDR
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
Time_Year
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
TIME
api_version
THE_REQUEST
REQUEST_URI
REQUEST_FILENAME
IS_SUBREQ

Ces variables sont pleinement compatibles avec un nom similaire HTTP MIME-têtes, et Apache variables de serveur ou de champs de systèmes Unix struct tm. Ceux qui sont spéciaux à mod_rewrite comprennent:

IS_SUBREQ - contiendra le texte «vrai» si la demande est en cours d' exécution d' un sous - requête, «faux» dans l'autre cas. Sous-requêtes peuvent être générés par des modules qui ont besoin de traiter les fichiers supplémentaires ou URI pour exécuter leurs propres tâches.

Api_version - Cette version de l'API module Apache (interface interne entre le serveur et le module) dans l'ensemble de serveur actuel tel que défini dans include / ap_mmn.h. version de l'API du module correspond à la version d'Apache (pour la version d'Apache 1.3.14, il est par exemple 19990320: 10), mais il est des auteurs de modules essentiellement intéressants.

THE_REQUEST - Gamme complète de la requête HTTP envoyée par le serveur de navigateur ( par exemple, «GET /index.html HTTP / 1.1» ). Il ne comprend pas les en-têtes supplémentaires envoyées par le navigateur.

REQUEST_URI - La ressource demandée dans la chaîne de requête HTTP.

REQUEST_FILENAME - chemin complet vers le système de fichiers du serveur vers le fichier ou le script correspondant à cette demande.

Remarques:

  1. Variables SCRIPT_FILENAME REQUEST_FILENAME et contiennent la même valeur, à savoir, la valeur du champ de la structure interne de request_rec Apache filename. Le premier nom est juste un nom de variable CGI bien connu alors que le second est une copie permanente REQUEST_URI (qui contient la valeur de l'uri de champ de structure request_rec).
  2. Il y a un format spécial:% {ENV: variable} , où variable peut être une variable d'environnement. Il est demandé dans les structures internes d' Apache et (s'il n'y a pas) en appelant le getenv () à partir du processus du serveur Apache.
  3. Il y a un format spécial:% {HTTP: header} où en- tête peut être un titre HTTP MIME-nom. Il est recherché dans la requête HTTP. Exemple:% {HTTP: Proxy-Connection } HTTP header valeur «Proxy-Connection:».
  4. Il y a une spéciale forme% {LA-U: variable} demandes Leading sont générés en interne (basé sur l' URL) sous-requête pour déterminer la valeur finale de la variable. Utilisez cette fonction lorsque vous souhaitez utiliser une variable pour le changement, qui a vraiment déterminé plus tard dans une phase quelconque de l'API, et ne sont pas disponibles à ce stade ainsi. Par exemple, lorsque vous voulez convertir, respectivement, du contexte du serveur REMOTE_USER variable (fichier httpd.conf), vous devez utiliser% {LA-U: REMOTE_USER} car cette variable est définie dans les phases d'autorisation qui viennent après la phase de traduction de l' URL dans laquelle le mod_rewrite travail. D'autre part, en raison de la mise en œuvre des travaux dans le cadre du mod_rewrite d'annuaire (fichier .htaccess) via la phase Fixup de l'API et de ce fait, les phases d'autorisation viennent avant cette phase, vous pouvez simplement utiliser% {REMOTE_USER}.
  5. Il y a un format spécial:% {LA-F: variable} qui crée un (basé filename-) sous-requête interne pour déterminer la valeur finale de la variable. Fondamentalement, il est le même format que le LA-U ci-dessus.

Accueil sans duplication

En règle générale, le code de la page d'accueil se trouve physiquement dans le fichier index.html ou index.php, mais le site doit être ouvert sur l'une des requêtes: yoursite.ru, yoursite.ru/index.html, www.yoursite.ru et www.yoursite.ru/index .html. Mais les moteurs de recherche sont quatre URL différente! Si vous ne configurez pas le .htaccess est vrai, le moteur de recherche va ajouter à son index de quatre pages identiques. Ceci est un signe d'un site de qualité médiocre. Pour éviter ce problème, vous pouvez utiliser ce code dans .htaccess:

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

Toutes les pages seront collés-takes rediriger avec le code 301 à la page principale - http://www.yoursite.ru/.

Doubles pages sans une barre oblique à la fin de l'URL

Pour éviter que la situation l'indexation des pages www.yoursite.ru/about~~number=plural www.yoursite.ru/about/ et comment différent, nous vous mettons le code suivant:

A partir des pages de la redirection sera installé sans une barre oblique sur "sleshevye".

  RewriteCond% {REQUEST_FILENAME}! -f
 RewriteCond% {REQUEST_URI}! (. *) / $
 RewriteRule ^ (. *) $ / 1 $ / [R = 301, L]

Enregistrement de fichiers au lieu de l'ouverture

Beaucoup ont vu en essayant de télécharger un fichier avec l'extension .rar navigateur ouvre en clair à partir des symboles de hachage. Cela signifie que le serveur de site est pas configuré épargne obligatoire des types de fichiers qui ne doivent pas être ouverts dans le navigateur.

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