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

Apache-Server-Konfigurationsdatei .htaccess-Datei

Nach Thema:


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


.htaccess (mit einem Punkt am Anfang des Namens) ist die Konfigurationsdatei des Apache-Servers, mit der Sie den Server so konfigurieren können, dass er in separaten Verzeichnissen (Ordnern) funktioniert, ohne Zugriff auf die Hauptkonfigurationsdatei zu erhalten. Legen Sie beispielsweise Berechtigungen für Dateien in einem Verzeichnis fest, ändern Sie die Namen von Indexdateien, behandeln Sie Apache-Fehler unabhängig voneinander und leiten Sie Besucher auf spezielle Fehlerseiten um. .htaccess ist ein Nur-Text-Dokument mit der Erweiterung htaccess. Diese Datei befindet sich normalerweise im Stammverzeichnis der Site. Sie können jedoch zusätzliche .htaccess-Dateien für verschiedene Verzeichnisse Ihrer Site erstellen.

Mod_rewrite ist ein Modul, mit dem Webserver URLs konvertieren.

Mod_rewrite-Modul-Anweisungen

  • Rewritebase
  • RewriteCond
  • RewriteEngine
  • Rewritelock
  • Reriterit
  • RewriteLogLevel
  • Rewritemap
  • RewriteOptions
  • Reriterit

Optionen für die Implementierung der Weiterleitung mithilfe der .htaccess-Datei

  1. Einfache Weiterleitung:
      Umleitung 301 / http://www.domainname.ru/
    
    oder
      Weiterleitung / Geheimnis http://www.site.ru/nosecret
    
    Fügen Sie die Datei .htaccess oder httpd.conf für Apache ein. Das erste "/" bedeutet, dass alles von der obersten Ebene der Site, einschließlich aller Unterverzeichnisse, umgeleitet wird (das letzte "/" darf nicht vergessen werden). Wenn Sie nur die Seite umleiten möchten und dabei die PR der alten Seite beibehalten, können Sie Folgendes tun:

    Umleitung 301 /old/old.htm http://www.you.ru/new.htm Dabei gilt Folgendes:
    /old/old.htm - Pfad und Name der alten Seite
    http://www.you.com/new.htm - Neuer Pfad und neuer Name der verschobenen Seite

  2. Umleiten auf eine beliebige Seite über die IP-Adresse des Benutzers oder bei Anforderung einer bestimmten Seite (sowie über die Namensmaske).
    Wenn der Benutzer die IP-Adresse 192.152.37.125 hat, wird er auf die Seite user.php umgeleitet:
      SetEnvIf REMOTE_ADDR 192.152.37.125 REDIR = "redir"
     RewriteCond% {REDIR} redir
     RewriteRule ^ / $ /user.php
    
  3. Umleiten, wenn bestimmte Dateien angefordert werden. Wenn Dateien angefordert werden, deren Erweiterung nicht in der .htaccess-Datei (gif und jpg) angegeben ist, folgt die Umleitung:
      RewriteEngine On
     RewriteRule !. (Gif | jpg) $ index.php
    

  4. Mod_rewrite verwenden:
      Optionen + FollowSymLinks 
     RewriteEngine einschalten 
     RewriteCond% {HTTP_HOST} ^ IhrerDomäne \ .ru 
     RewriteRule ^ (. *) $ Https://www.IhreDomain.ru/$1 [R = permanent, L]
    

  5. Reguläre Ausdrucksumleitung:
      RedirectMatch 301 (. *) Http: //www.IhreDomain.ru$1 Es ist in der .htaccess-Datei registriert. 
    
    (. *) RedirectMatch vergleicht tatsächlich reguläre Ausdrucksmuster nach dem Domänennamen. Daher ist es nicht möglich, das Pattern-Matching auf ^ / yourdomain.ru durchzuführen. Sie können Seiten jedoch mit der Erweiterung .html in Dateien mit demselben Namen konvertieren, jedoch mit der Erweiterung .php:
      RedirectMatch 301 (. *) \. Html $ http: //www.ihredomain.ru$1.php
    
    Wenn Sie für einzelne Seiten eine andere Umleitung durchführen müssen, können Sie Folgendes verwenden:
      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 " entspricht "RedirectMatch 301". Die Zeile mit "* (Wildcard)" sollte die letzte in dieser Liste sein.

  6. Lesbare URL erstellen
    So konvertieren Sie beispielsweise www.site.ru/product.php?id=123 wie folgt in www.site.ru/product/123:
      RewriteEngine einschalten
     RewriteRule ^ product / ((//) / product product.php? Id = $ 1 [L]
    
    Konvertieren Sie im folgenden Beispiel www.site.ru/script.php?product=123 in www.site.ru/cat/product/123/:
      RewriteRule cat /(.*)/(.*)/$ /script.php?$1=$2
    

  7. Umleitung zu PHP:
      Header ("HTTP / 1.1 301 dauerhaft verschoben"); 
     header ("location: http://www.newdomain.ru/newdir/newpage.htm"); 
     exit (); 
    
    Natürlich müssen Sie eine Seite erstellen, auf die verwiesen wird, auf die die Umleitung ausgeführt wird, und diese auf dem Server ablegen. Und besser HTTP / 1.1 angeben (und nicht HTTP / 1.0 oder HTTP / 0.9, die kein virtuelles Hosting unterstützen)

  8. Leiten Sie alle Dateien in einem Ordner in eine Datei um.
    Sie benötigen beispielsweise nicht mehr den Super-Rabatt-Site-Abschnitt und möchten alle Anforderungen an den Ordner / superdiscount in eine /hot-offers.php-Datei umleiten. Fügen Sie dazu den folgenden Code zu .htaccess hinzu.
      RewriteRule ^ Superdiscount (. *) $ /Hot-offers.php [L, R = 301]
    

  9. Leiten Sie den gesamten Ordner mit Ausnahme einer Datei um
    Im folgenden Beispiel werden alle Dateien im Ordner / superdiscount in die Datei /hot-offers.php umgeleitet, mit Ausnahme der Datei /superdiscount/my-ebook.html, die in /hot-to-make-million.html umgeleitet werden soll
      RewriteRule ^ superdiscount / mein-ebook.html /hot-to-make-million.html [L, R = 301]
     RewriteRule ^ Superdiscount (. *) $ /Hot-offers.php [L, R = 301]
    

  10. Leiten Sie die dynamische URL in eine neue Datei um.
    Diese Option ist nützlich, wenn Sie eine dynamische URL mit Parametern in eine neue statische Datei umleiten möchten.
      RewriteRule ^ article.jsp? Id = (. *) $ /Latestnews.htm [L, R = 301]
    
    Das heißt, jetzt wird eine Anfrage an die Datei der Form http://www.kass.ws/article.jsp?id=8632 und / oder http://www.kass.ws/article.jsp?id=1245 an die http-Datei gesendet : //www.kass.ws/latestnews.htm.

  11. Massenumleitung neuer Dateien.
    Lassen Sie uns nun zum schwierigsten Moment übergehen, in dem Sie viele URLs umleiten müssen, zum Beispiel, nachdem Sie Ihr CMS geändert haben. Hier treten sofort einige Probleme auf. Vor allem das Hinzufügen aller geänderten Adressen zur .htaccess-Datei wird sehr lange dauern und die unangenehme Arbeit an sich. Zweitens, zu viele Einträge in der .htaccess-Datei verlangsamen den Apache-Server. Und drittens, wenn Sie eine solche Menge an Informationen eingeben, werden Sie höchstwahrscheinlich woanders hingehen. Deshalb ist es am besten, einen Programmierer anzustellen, der Ihnen eine dynamische Weiterleitung schreibt.
    Das folgende Beispiel ist in PHP geschrieben, kann aber auch in einer beliebigen Sprache ausgeführt werden. Angenommen, Sie haben auf Ihrer Site zu einem neuen Linksystem gewechselt, und alle Dateien, die auf der alten ID enden, sollten gemischt werden. Zuerst erstellen wir eine Tabelle in der Datenbank, die die alte ID und die neue URL für die Weiterleitung enthält. old_id INT new_url VARCHAR (255) Schreiben Sie als Nächstes den Code, der Ihre alte ID mit den neuen URLs verknüpft
    Fügen Sie danach die folgende Zeile zu .htaccess hinzu:
      RewriteRule ^ / product - (. *) _ ([0-9] +). Php /redoldold.php?productid=$2
    
    Erstellen Sie dann eine PHP-Datei redirectold.php, die 301-Weiterleitungen unterstützt:
      <? php
     Funktion getRedirectUrl ($ productid) {
     // Verbindung zur Datenbank herstellen
     $ dServer = "localhost";
     $ dDb = "Mydbname";
     $ dUser = "mydb_user";
     $ dPass = "Passwort";
    
     $ s = @mysql_connect ($ dServer, $ dUser, $ dPass)
     oder die ("Konnte keine Verbindung zum Datenbankserver herstellen");
    
     @mysql_select_db ($ dDb, $ s)
     oder sterben ("Konnte keine Verbindung zur Datenbank herstellen");
    
     $ query = "SELECT new_url FROM leitet WHERE old_id = um".  $ productid;
     mysql_query ($ query);
     $ result = mysql_query ($ query);
     $ hasRecords = mysql_num_rows ($ result) == 0?  falsch: wahr;
     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 dauerhaft verschoben");
     header ("Location: $ url");
     exit ();
     ?>
    

    Jetzt rufen alle Anfragen an Ihre alten URLs redirectold.php auf, die die neue URL findet und 301 Antworten mit Ihrem neuen Link zurückgibt.

    Weiterleitungen abhängig von der Zeit

    Wenn Tricks wie der Inhalt einer zeitabhängigen Masse von Webmastern verwendet werden müssen, verwenden sie immer noch CGI-Skripts, die auf spezielle Seiten umleiten. Wie kann das über mod_rewrite gemacht werden?

    Es gibt viele Variablen mit dem Namen TIME_xxx für Umleitungsbedingungen. In Verbindung mit speziellen lexikographischen Beispielen zum Vergleich STRING und = STRING können zeitabhängige Weiterleitungen erstellen:
     
      RewriteEngine auf RewriteCond% {TIME_HOUR}% {TIME_MIN}> 0700 RewriteCond% {TIME_HOUR}% {TIME_MIN} <1900 RewriteRule ^ foo \ .html $ foo.day.html RewriteRule ^ foo.night.day 

    Dies gibt den Inhalt von foo.day.html an, wenn die URL foo.html von 07:00 bis 19:00 Uhr angefordert wird, und für den Rest der Zeit den Inhalt von foo.night.html.


  12. Wir entfernen von allen Anfragen am Anfang "WWW".
     RewriteEngine on # gibt bekannt, dass wir mod_rewrite verwenden wollen
     RewriteCond% {HTTP_HOST} ^ www \. (. *) [NC]
     RewriteRule ^ /? (. *) Http: //% 1 / $ 1 [L, R = permanent]
    

  13. Ändern Sie die Erweiterung .html in .php
    Manchmal kommt es vor, dass Sie eine statische Website haben, und Sie müssen ein PHP-Skript darauf ausführen. Dazu müssen Sie dem Server mitteilen, dass er diese Seite als PHP-Datei verarbeiten soll.
     AddHandler-Anwendung / x-httpd-php .html
    
    Diese Technik kann auch für andere Dateierweiterungen verwendet werden:
     AddHandler-Anwendung / x-httpd-php .xml
     AddHandler-Anwendung / x-httpd-php .asp
    

Zugriff auf ein bestimmtes Verzeichnis verweigern

  1. für alle an alle Dateien im Verzeichnis:
      leugnen von allen
    
  2. zu einer bestimmten Datei:
     leugnen von allen
    
  3. von Benutzer ip:
      Bestellung verweigern, zulassen
     leugnen von allen
     erlauben von 192.152.37.125
    
    Der Zugriff auf dieses Verzeichnis ist nur einem Benutzer mit der IP 192.152.37.125 gestattet.

    Und wenn Sie das Gegenteil wünschen, um einzelnen IP-Benutzern den Zugriff auf Ihre Website zu untersagen, schreiben wir die folgenden Zeilen:

     Ordnung erlauben, verweigern
     von allen zulassen
     verweigern von 192.152.37.125
     verweigern von 123.456.177
    
  4. Die Options -Indexes-Direktive - ein Verbot der Anzeige des Inhalts eines Verzeichnisses ohne Indexdatei. Manchmal müssen Sie sicherstellen, dass die Liste der Dateien im Verzeichnis nicht angezeigt wird, wenn sich in dem standardmäßig angezeigten Verzeichnis keine Datei befindet. Dann können Sie diese Zeile zu .htaccess hinzufügen:
      Optionen -Indexes
    
    In diesem Fall erhält der Besucher anstelle einer Liste von Dateien im Verzeichnis einen HTTP-Fehler 403 - Zugriff verboten.
  5. Verweigern Sie den Zugriff auf Dateien mit verschiedenen Erweiterungen
     leugnen von allen
    
    Zugriff auf Dateien mit der Erweiterung * .inc, * .conf und * .cfg wurde verweigert. Obwohl die Direktive standardmäßig nicht mit regulären Ausdrücken funktioniert, können Sie sie aktivieren, indem Sie das Tilde-Zeichen (~) in die Direktive-Optionen setzen. Die Syntax lautet wie folgt: [Tilde] [Leerzeichen] [Weiter_all_non_there] Um diesen Zugriff zu blockieren, schreiben wir Folgendes:
      RewriteRule ^ .htaccess $ - [F]
    
    Diese Regel wird übersetzt als:
    Wenn jemand versucht, auf die .htaccess-Datei zuzugreifen, sollte das System den Fehlercode "HTTP-Antwort von 403" oder "403 nicht zulässig - keine Berechtigung zum Zugriff auf /.htaccess auf diesem Server" ausgeben.

    Die Konstruktion von ^ .htaccess $ in diesem regulären Ausdruck bedeutet:
    ^ - Ankerstartlinie
    $ - Ende des Leinenankers
    . - in regulären Ausdrücken ein Punkt "." bezeichnet ein Meta-Symbol und muss mit einem Backslash geschützt werden, wenn Sie den tatsächlichen Punkt dennoch verwenden möchten.

    Der Dateiname muss genau zwischen dem Anfangs- und Endanker liegen. Dadurch wird sichergestellt, dass nur dieser bestimmte Dateiname und kein anderer einen Fehlercode generiert.
    [F] ist eine spezielle "verbotene" Flagge.
    [NC] - Groß- und Kleinschreibung ignorieren.
    [ODER] - bedeutet "oder die folgende Bedingung".

Kodierungsdefinition

Bestimmen der Kodierung, in der der Server Dateien "gibt"

  AddDefaultCharset windows-1251
Optionen: KOI8-R , UTF-8 , Windows-1251

Definition der Kodierung für herunterladbare Dateien

  CharsetSourceEnc windows-1251

Festlegen eines Kennworts für ein Verzeichnis mithilfe von .htaccess

Um ein Kennwort für ein Verzeichnis festzulegen, können Sie das im Apache-Webserver bereitgestellte grundlegende Autorisierungssystem verwenden. Erstellen Sie in dem Verzeichnis, für das Sie den Zugriff durch Kennwort einschränken möchten, eine .htaccess-Datei mit den folgenden Anweisungen:
  AuthType Basic
 AuthName "irgendein Name"
 AuthUserFile /www/some_login/www/htdocs/some_dir/.htpasswd
 Gültiger Benutzer erforderlich
Der Pfad /www/some_login/www/htdocs/some_dir/.htpasswd steht für den vollständigen Pfad zur Kennwortdatei auf unserer Serverfestplatte. Wenn Sie zum Beispiel eine .htpasswd-Datei (darin werden Passwörter enthalten) in Ihrem Home-Verzeichnis ablegen, wo Sie sich durch FTP-Anmeldung am Server anmelden, wird der Pfad zu dieser Datei wie folgt aussehen: /www/some_login/www/htdocs/some_dir/.htpasswd wo some_login dein Login ist. In der Direktive AuthUserFile geben Sie den absoluten Pfad zur Datei mit den Logins / Passwörtern an, die wir später erstellen werden. Wenn Sie eine .htaccess-Datei auf Ihrem Computer und nicht sofort mit einem Texteditor auf dem Server erstellen, achten Sie besonders darauf, dass .htaccess ausschließlich im Textmodus (ASCII) über FTP übertragen wird.

Erstellen Sie eine Kennwortdatei. Die Kennwortdatei muss Zeilen des Formulars login: password enthalten. Das Passwort muss mit dem MD5-Algorithmus verschlüsselt werden. Eine Möglichkeit, eine solche Datei zu erstellen, besteht darin, das im Apache-Paket enthaltene Programm htpasswd zu verwenden (auf unserem Server befindet es sich im Verzeichnis / usr / local / apache / bin, der vollständige Pfad ist / usr / local / apache / bin / htpasswd).

Überlegen Sie, wie Sie eine Kennwortdatei in der Unix-Shell direkt auf dem Server erstellen. Gehen Sie zur Shell und führen Sie die folgenden Befehle aus:

  htpasswd -mbc .htpasswd user1 7B1safkir
- Erstellen Sie eine neue .htpasswd-Datei, in der wir einen Eintrag für Benutzer1 mit dem in der Befehlszeile angegebenen Kennwort hinzufügen.
  htpasswd .htpasswd user2
- Fügen Sie die bereits vorhandene .htpasswd-Datei von Benutzer2 hinzu, und geben Sie das Kennwort manuell als Antwort auf die entsprechende Programmanforderung ein.

Nach Beendigung einer Einrichtung aller Logins muss die Datei auf den Server geladen werden. Weitere Möglichkeiten zum Festlegen von Kennwörtern auf der Seite

Legen Sie Ihre eigenen Fehlerseiten fest

Sie können Ihre eigene Fehlerseite wie folgt einstellen:
  ErrorDocument 404 http://www.site.ru/404.php
IE ignoriert Seiten, die kleiner als 512 Byte sind.

Verzeichnisse und Unterverzeichnisse indizieren

Um zu vermeiden, dass Verzeichnisse und Unterverzeichnisse von Suchmaschinen indiziert werden, müssen Sie eine solche Zeichenfolge vorschreiben. Beispiel:
  DirectoryIndex index.php
Diese Anweisung gibt die Datei an, die beim Zugriff auf das Verzeichnis ohne Angabe des Dateinamens aufgerufen wird.

Sie können mehrere Indexseiten angeben. Wenn ein Verzeichnis angefordert wird, werden diese in der Reihenfolge durchsucht, die in der DirectoryIndex-Direktive aufgeführt ist. Wenn die Datei index.html nicht gefunden wird, wird die Datei index.php usw. durchsucht.

  DirectoryIndex index.html index.php index.shtml

Ich persönlich ziehe es vor, von leeren Verzeichnissen entweder auf die Hauptseite der Website oder auf eine andere geeignete Seite umzuleiten. Beispielsweise kann das Verzeichnis www.site.ru/pic/ auf www.site.ru umgeleitet werden.

Bilder vor dem Herunterladen schützen

Es kommt häufig vor, dass Webmaster Inhalte von Ihrer Website zusammen mit Bildern unverschämt kopieren und die Bilder von Ihrem eigenen Server hochladen. Dies erzeugt zusätzlichen Verkehr, der oft zu einer Reihe von Problemen führt. Wie kann man sich vor solchen Webmastern schützen und Suchmaschinen nicht daran hindern, Bilder zu indizieren? Es ist ganz einfach:
  RewriteEngine einschalten
 RewriteCond% {HTTP_REFERER}.
 RewriteCond% {HTTP_REFERER}! ^ Http: // ([^.] + \.)? Site \.  [NC]
 RewriteCond% {HTTP_REFERER}! Google \.  [NC]
 RewriteCond% {HTTP_REFERER}! Suche \ 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 - Das Bild, das angezeigt wird, anstelle der echten Bilder. Ich empfehle in diesem Bild, Ihr Logo und den Link zu Ihrer Website anzuzeigen.

Eine andere Möglichkeit, den Zugriff auf Bilder von nicht aufgelösten Websites zu verbieten:

  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
 Auftrag zulassen, verweigern
  Zulassen von env = local_ref

Suchmaschinen und alle Arten von Crawlern generieren großen Datenverkehr auf Ihrer Website. Der folgende Codeblock ermöglicht den Zugriff auf Bots auf der Site.

  RewriteCond% {HTTP_USER_AGENT} (Googlebot | Slurp | Spider | Twiceler | Heritrix |
	 Kombinieren Sie | Appie | Boitho | E-SocietyRobot | Exabot | Nutch | OmniExplorer |
	 MJ12bot | ZyBorg / 1 | Ask \ Jeeves | AskJeeves | ActiveTouristBot |
	 JemmaTheTourist |  agadine3 | BecomeBot | Clustered-Search-Bot |
	 MSIECrawler | freefind | galaxy | genieknows | INGRID | grub-client |
	 MojeekBot | NaverBot | NetNose-Crawler | OnetSzukaj | PrassoSunner |
	 Asterias \ Crawler | THUNDERSTONE | GeorgeTheTouristBot |
	 VoilaBot | Vagabondo | fantomBro wser | stealthBrowser | cloakBrowser |
	 fantomCrew \ Browser | Girafabot | Indy \ Bibliothek | Intelliseek | Zealbot |
	 Windows \ 95 | ^ Mozilla / 4 \ .05 \ \ [de \] $ | ^ Mozilla / 4 \ .0 $) [NC]
 RewriteRule ^ (. *) $ - [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 ^ (. *) $ - [F]

Tracking der Datei robots.txt

Um weitere Informationen zum Besuch von Suchmaschinen zu erhalten, ist es hilfreich, detaillierte Informationen zum Zugriff auf die Datei robots.txt zu haben. Um dies zu organisieren, sollten die folgenden Einträge in '.htaccess' stehen:
  RewriteEngine einschalten
  Optionen + FollowSymlinks
  RewriteBase /
  RewriteRule ^ robots.txt $ /robot.php?%{REQUEST_URI}
Wenn Sie nun die Datei 'robots.txt' anfordern, leitet die RewriteRule den Besucher (Roboter) an das robot.php-Skript weiter, das Anforderungen verarbeitet. Zusätzlich wird die Variable an das Skript übergeben, das entsprechend Ihren Anforderungen verarbeitet wird. 'REQUEST_URI' definiert den Namen der angeforderten Datei. In diesem Beispiel ist dies 'robots.txt'. Das Skript liest den Inhalt von 'robots.txt' und sendet ihn an einen Webbrowser oder einen Suchmaschinen-Bot. So können wir Besuchertreffer zählen und Protokolldateien führen.

PHPSESSID

Um das Hinzufügen von PHPSESSID zur URL zu deaktivieren, fügen Sie am Anfang index.php ein:

  ini_set ("session.use_trans_sid", 0);

Oder in einer .htaccess-Liste:

  php_flag session.use_trans_sid Aus

Wenn Ihnen alles schwierig erschien, verwenden Sie die Bereitschaft Dynamische URL zu Static Service mit htaccess

Caching-Anweisungen

Caching für alle Dateitypen nach Zugriffszeit
  ExpiresActive am
 ExpiresDefault "Zugriff plus 600 Sekunden"
Caching für alle Arten von Dateien zum Zeitpunkt der Änderung
  ExpiresActive am
 ExpiresDefault "Modifikation plus 600 Sekunden"
Caching für bestimmte Dateitypen
  ExpiresByType text / css "Modifikation plus 600 Sekunden"
 ExpiresByType image / jpeg "Änderung plus 600 Sekunden"
 ExpiresByType image / gif "Modifikation plus 600 Sekunden"
 ExpiresByType image / x-ico "Modifikation plus 600 Sekunden"
 ExpiresByType image / png "Modifikation plus 600 Sekunden"

Apache-Zwischenspeicherung deaktivieren

Öffnen Sie die Apache-Server-Konfigurationsdatei httpd.conf und kommentieren Sie die folgenden Zeilen aus:

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

Geben Sie Folgendes in .htaccess ein:

  # Cacheverbot in diesem Ordner
 # Es ist notwendig, Module zu aktivieren
 # mod_headers.c und mod_expires.c
 #
 # Cache-Control-Header
 Header anhängen Cache-Control "no-store, no-cache, must-revalidate"
 # Läuft den Header ab
 ExpiresActive On
 ExpiresDefault "jetzt"

Die erforderlichen Header werden automatisch übertragen und müssen nicht mehr spezifisch in PHP geschrieben werden - der Cache ist bereits deaktiviert!

HTTP-Header-Beschreibung zum Zwischenspeichern der Cache-Steuerung

Zwischenspeicherung mit der .htaccess-Datei

  # Aktivieren Sie die Zwischenspeicherung in diesem Ordner
 # Es ist notwendig, Module zu aktivieren
 # mod_headers.c und mod_expires.c
 #
 # Cache-Control-Header
 Header anhängen Cache-Control "public"
 # Läuft den Header ab
 ExpiresActive On
  ExpiresDefault "Zugriff plus 1 Stunden"
  #ExpiresDefault "Zugriff plus 10 Jahre"

Zwischenspeichern von Javascript-Dateien mithilfe einer .htaccess-Datei

 ExpiresDefault "Zugriff plus 3 Tage"

Seien Sie vorsichtig beim Cachen, weil Beim Ändern der Datei kann der Benutzer erst nach 3 Tagen eine neue Version erhalten!

Wie kann man HTML-Seiten zwingen, PHP-Code zu verarbeiten?

Schreiben Sie die folgenden Zeilen in Ihre .htaccess-Datei:
  RemoveHandler .php .htm .html
 AddHandler-Anwendung / x-httpd-php .php .htm .html

Wie hosten Sie mehrere Websites in einem einzigen gemeinsam genutzten Hosting?

Um zwei oder mehr Standorte auf einem virtuellen Hosting zu platzieren, müssen Sie im Gegensatz zur Anzahl der Domänen, die Ihnen vom Tarifplan zugewiesen wurden, die folgenden Zeilen in die Datei ".htaccess" schreiben:

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

Wo
newdirectory / - Ordner, in dem sich der zweite Standort befindet
newdomain.ru - die Domäne, für die wir die Umleitung durchführen

Bitte beachten Sie, dass Sie in diesem Fall ein einziges E-Mail-Konto haben. Ie Wenn Sie über ein Postfach admin@domain.ru verfügen, wird nach dem Verbinden der Domäne newdomain.ru ein zweiter Name in der Mailbox admin@domain.ru - admin@newdomain.ru angezeigt. Beim Erstellen einer neuen Mailbox (z. B. info) werden ihr automatisch zwei Namen zugewiesen - info@domain.ru und info@newdomain.ru.

Durchsuchen Sie Seiten in mehreren Verzeichnissen

Manchmal muss der Webserver Seiten in mehreren Verzeichnissen durchsuchen können.

  RewriteEngine einschalten

 # Versuchen Sie es zuerst an der angegebenen Stelle / ...
 # ... und wenn gefunden, beenden Sie die Suche:
 RewriteCond / Ihr / docroot / dir1 /% {REQUEST_FILENAME} -f
 RewriteRule ^ (. +) / Ihr / docroot / dir1 / $ 1 [L]

 # zweitens - wir werden versuchen, es im Pub / ... zu finden
 # ... und wenn gefunden, beenden Sie die Suche:
 RewriteCond / Ihr / docroot / dir2 /% {REQUEST_FILENAME} -f
 RewriteRule ^ (. +) / Ihr / docroot / dir2 / $ 1 [L]

 # Ansonsten fahren wir mit anderen Anweisungen fort
 RewriteRule ^ (. +) - [PT]

Virtuelle Benutzerhosts

Wenn Sie www.subdomain.domain.ru-Adressen für Benutzerseiten bereitstellen möchten, können Sie den folgenden Regelsatz zum Konvertieren von http://www.subdomain.domain.ru/path in den internen Pfad / home / subdomain / path verwenden:

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

Dateien sind beim Hochladen auf den Server beschädigt

Wenn beim Übertragen von Dateien über Formulare (mit dem angegebenen enctype = "multipart / form-data") binäre Daten beschädigt sind, schreiben Sie in die Direktive /cgi-bin/.htaccess:
  CharsetRecodeMultipartForms Off.

Fehler beim Laden von SWF-Dateien.
Fehler beim Zugriff auf Seiten mit Schlüsselwörtern
Geben Sie $ _REQUEST ein

Dies kann an dem installierten Modul liegen. im Apache Standardmäßig werden Zeilen mit SQL-Argumenten und anderen potenziell gefährlichen Befehlen in Abfragen blockiert.

Mögliche Fehlermeldungen:

Verboten

Sie haben keine Berechtigung zum Zugriff auf /adm/index.php auf diesem Server. Zusätzlich ist es eine 404
oder
Die Anfrage ist nicht sicher und wurde abgelehnt.
Zu .htaccess hinzufügen
 SecFilterEngine Off
 SecFilterScanPOST Aus
Für die Nachricht:
"POST /wp-admin/async-upload.php HTTP / 1.1" 406 354 "-" "Shockwave Flash"
Sie können den Schutz nur für das Hochladen von Dateien auf den Server aufheben:
 SecFilterEngine Off
 SecFilterScanPOST Aus

Entfernen Sie den Schutz optimal nur aus dem Ordner, in dem es erforderlich ist, ohne den Schutz für die gesamte Site aufzuheben.

Servervariablen

Dies sind Variablen wie % {NAME_OF_VARIABLE}

Dabei kann NAME_OF_VARIABLE eine Zeichenfolge aus der folgenden Liste sein:

HTTP-Header: Verbindung & Anfrage:
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
interne Server: systemisch: speziell:
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
ZEIT
API_VERSION
THE_REQUEST
REQUEST_URI
REQUEST_FILENAME
IS_SUBREQ

Diese Variablen entsprechen vollständig den ähnlich benannten HTTP-MIME-Headern, Apache-Servervariablen oder Unix-Systemstrukturen. Zu den besonderen Eigenschaften von mod_rewrite gehören:

IS_SUBREQ - Enthält den Text "true", wenn die Abfrage derzeit als Unterabfrage ausgeführt wird, andernfalls "false". Unterabfragen können von Modulen generiert werden, die zusätzliche Dateien oder URIs bearbeiten müssen, um ihre eigenen Aufgaben auszuführen.

API_VERSION - Dies ist die Apache-API-Version (interne Schnittstelle zwischen Server und Modul) im aktuellen Server-Build, die in include / ap_mmn.h definiert ist. Die API-Version des Moduls entspricht der verwendeten Apache-Version (für die Version von Apache 1.3.14 z. B. 19990320: 10). Dies ist jedoch vor allem für die Autoren der Module interessant.

THE_REQUEST - Die vollständige HTTP-Anforderungszeichenfolge, die vom Browser an den Server gesendet wurde (d. H. " GET /index.html HTTP / 1.1 "). Es enthält keine zusätzlichen Header, die vom Browser gesendet werden.

REQUEST_URI - Die in der HTTP-Anforderungszeile angeforderte Ressource.

REQUEST_FILENAME - Der vollständige Pfad im Server-Dateisystem zu der dieser Anforderung entsprechenden Datei oder Skript.

Anmerkungen:

  1. Die Variablen SCRIPT_FILENAME und REQUEST_FILENAME enthalten dieselben Werte, d. H. Den Wert des Dateinamenfelds in der internen Struktur Apache request_rec . Der erste Name ist einfach der bekannte Name der CGI-Variablen, während der zweite die permanente Kopie von REQUEST_URI ist (die den Wert des Felds uri der Struktur request_rec enthält ).
  2. Es gibt ein spezielles Format: % {ENV: variable}, wobei die Variable eine beliebige Umgebungsvariable sein kann. Dies wird in den internen Apache-Strukturen und (wenn nicht) durch Aufrufen von getenv () vom Apache-Serverprozess gesucht .
  3. Es gibt ein spezielles Format: % {HTTP: header}, wobei der Header ein beliebiger HTTP-Name des MIME-Headers sein kann. Dies wird in einer HTTP-Anfrage nachgeschlagen. Beispiel: % {HTTP: Proxy-Connection} Der HTTP-Wert des Header " Proxy-Connection: ".
  4. Es gibt ein spezielles Format % {LA-U: variable} von Forward-Anforderungen, die von einer internen (URL-basierten) Unterabfrage erzeugt werden, um den endgültigen Wert der Variablen zu bestimmen. Verwenden Sie diese Option, wenn Sie eine Variable für Transformationen verwenden möchten, die tatsächlich in einer bestimmten Phase der API bestimmt wird und daher zu diesem Zeitpunkt nicht verfügbar ist. Wenn Sie beispielsweise die Variable REMOTE_USER aus dem Serverkontext (Datei httpd.conf ) konvertieren möchten , sollten Sie % {LA-U: REMOTE_USER} verwenden, da diese Variable in Autorisierungsphasen festgelegt ist, die auf die Übersetzungsphase der URL folgen, in der mod_rewrite verwendet wird. Andererseits können Sie aufgrund der Implementierung von mod_rewrite im Kontext eines Verzeichnisses (.htaccess-Datei) über die Fixup-API-Phase und da die Autorisierungsphasen in diese Phase wechseln , einfach % {REMOTE_USER} dort verwenden .
  5. Es gibt ein spezielles Format: % {LA-F: variable} , das eine interne Unterabfrage (basierend auf dem Dateinamen) erstellt, um den endgültigen Wert der Variablen zu bestimmen. Dies ist im Grunde dasselbe wie das LA-U-Format oben.

Startseite ohne Vervielfältigung

Normalerweise befindet sich der Homepage-Code physisch in der Datei index.html oder index.php, die Site sollte jedoch für alle Anforderungen geöffnet werden: yoursite.ru, yoursite.ru/index.html, www.yoursite.ru und www.yoursite.ru/index .html. Für die Suchmaschinen sind dies vier verschiedene URLs! Wenn Sie .htaccess nicht korrekt konfigurieren, fügt die Suchmaschine ihrem Index vier identische Seiten hinzu. Dies ist ein Zeichen für schlechte Site. Um dieses Problem zu vermeiden, können Sie diesen Code in .htaccess verwenden:

  Optionen + FollowSymLinks
 RewriteEngine einschalten
 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]

Alle Duplikate werden mit einer Weiterleitung mit dem Code 301 mit der Hauptseite - http://www.yoursite.ru/ verklebt.

Doppelte Seiten ohne Schrägstrich am Ende der URL

Um die Situation mit den Indexierungsseiten www.yoursite.ru/about und www.yoursite.ru/about/ zu vermeiden, geben Sie den folgenden Code ein:

Von den Seiten ohne Schrägstrich wird installiert, umleiten auf "Schrägstriche".

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

Speichern von Dateien statt Öffnen

Viele haben gesehen, wie beim Versuch, ein Archiv mit der Erweiterung .rar herunterzuladen, der Browser es in Form von einfachem Text aus einem Durcheinander von Zeichen öffnet. Dies bedeutet, dass der Standortserver nicht so konfiguriert ist, dass er das Speichern von Dateitypen erzwingt, die nicht im Browser geöffnet werden sollten.

  AddType Anwendung / Octet-Stream .rar .doc .mov .avi .pdf .xls .mp4