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

25 .htaccess Regeln, die jeder Webentwickler kennen sollte

Nach Thema:


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


Bevor wir beginnen, weise ich darauf hin, dass der Missbrauch der .htaccess-Nutzung zu einer Leistungsminderung Ihrer Website führen kann. Die Hauptregel: Die Verwendung von .htaccess zur Implementierung einer bestimmten Aufgabe ist nur möglich, wenn keine anderen Optionen vorhanden sind.

Stellen Sie sicher, dass Sie eine Sicherungskopie der ursprünglichen .htaccess-Datei für Ihre Site erstellt haben, bevor Sie Änderungen vornehmen. Beachten Sie außerdem, dass die Funktionalität der folgenden Regeln von den individuellen Einstellungen Ihres Webservers abhängt, die vom Host festgelegt werden. Einige Richtlinien können verboten werden und funktionieren nicht.

.htaccess (vom englischen Hypertext-Zugriff) ist eine zusätzliche Konfigurationsdatei für den Apache-Webserver sowie für ähnliche Server. Ermöglicht Ihnen, eine große Anzahl zusätzlicher Parameter und Berechtigungen für den Betrieb des Webservers in separaten Verzeichnissen (Ordnern) anzugeben, z. B. verwalteten Zugriff auf Verzeichnisse, Neuzuweisung von Dateitypen usw., ohne die Hauptkonfigurationsdatei zu ändern.

Die .htaccess- Datei kann in einem beliebigen Verzeichnis abgelegt werden . Die Anweisungen dieser Datei gelten für alle Dateien im aktuellen Verzeichnis und in allen Unterverzeichnissen (sofern diese Direktiven nicht von den Anweisungen der zugrunde liegenden .htaccess-Dateien überschrieben werden).

Damit diese .htaccess-Dateien verwendbar sind, ist die entsprechende Konfiguration der Hauptkonfigurationsdatei erforderlich (der Wert der AllowOverride- Direktive muss auf All festgelegt sein ). In der Regel erlaubt die überwiegende Mehrheit der Hosts die Verwendung ihrer .Htaccess-Dateien.

1. Laden Sie keine Dateien von externen Sites hoch

Sind Sie es leid, dass Nutzer Bilder, die auf Ihrer Website veröffentlicht wurden, auf ihren Ressourcen veröffentlichen und damit Ihren Traffic aufladen und Ihr Hosting unnötig belasten? Dieser Code, der am Ende Ihrer .htaccess-Datei platziert wird, verhindert den Download Ihrer Bilder - durch Websites von Drittanbietern.

	 Optionen + FolgenSymlinks
	 # Laden Sie keine Dateien von externen Sites hoch
	 RewriteEngine Ein
	 RewriteCond% {HTTP_REFERER}! ^ $
	 RewriteCond% {HTTP_REFERER}! ^ Http: // (www.)? Site.com/ [nc]
	 RewriteRule. *. (Gif | jpg | png) $ http://site.com/stop.gif[nc] 

Vergessen Sie nicht, site.com in Ihren Domain-Namen zu ändern und erstellen Sie ein stop.gif-Bild, das anstelle des angeforderten Bildes angezeigt wird.

2. Blockieren Sie alle Anfragen von unerwünschten Benutzeragenten

Mit dieser Regel können Sie unerwünschte Benutzeragenten blockieren, die möglicherweise gefährlich sind oder den Server einfach mit unnötigen Anforderungen überlasten.

  # Blockiere schlechte Bots und Roboter
 SetEnvIfNoCase user-Agent ^ FrontPage [NC, ODER]
 SetEnvIfNoCase user-Agent ^ Java. * [NC, ODER]
 SetEnvIfNoCase user-Agent ^ Microsoft.URL [NC, ODER]
 SetEnvIfNoCase user-Agent ^ MSFrontPage [NC, OR]
 SetEnvIfNoCase user-Agent ^ Offline.Explorer [NC, OR]
 SetEnvIfNoCase user-Agent ^ [Ww] eb [Bb] andit [NC, ODER]
 SetEnvIfNoCase user-Agent ^ Zeus [NC]
 Bestellung zulassen, verweigern
 Erlaube von allen
 Verweigern von env = bad_bot

Eine Liste von User Agent-Browsern, Robots und Spidern von Suchmaschinen, Web-Verzeichnissen, Download-Managern, Spam-Bots und schlechten Bots finden Sie auf der Liste der User-Agents- Website .

3. Verweigern Sie den Zugriff für alle außer den angegebenen IP-Adressen

Wenn Sie aus irgendeinem Grund alle verweigern oder nur bestimmten IP-Adressen den Zugriff auf Ihre Site gestatten möchten, fügen Sie diesen Code zu Ihrer .htaccess-Datei hinzu:

	 # Zugriff für alle außer den angegebenen IP-Adressen verweigern
	 ErrorDocument 403 http://www.domainname.com
	 Bestellverweigerung, erlauben
	 Von allen ablehnen
	 Zulassen von 124.34.48.165
	 Zulassen von 102.54.68.123 

Vergessen Sie nicht, domainname.com zu Ihrem Domain-Namen zu ändern.

4. Konfigurieren von SEO-Friendly 301 Redirect

Wenn Sie den Domainnamen (oder Ihre Unterwebsite) verschoben haben oder den Benutzer auf eine bestimmte Seite (Seiten) umleiten möchten, verwenden Sie diesen Code ohne die Zustimmung der Suchmaschinen:

	 # Konfigurieren Sie SEO-Friendly 301 Redirect
	 Redirect 301 /1/file.html http://www.site.com/2/file.html 

Vergessen Sie nicht, site.com in Ihren Domain-Namen und /1/file.html und /2/file.html in die entsprechenden Verzeichnisse und Seiten zu ändern.

5. Erstellen Sie eigene Fehlerseiten

Sind Sie müde von den Standardfehlerseiten? Kein Problem - mit dem folgenden Code können Sie ganz einfach Ihre eigene Seite erstellen und dem Benutzer genau zeigen:

	 ErrorDocument 401 / Fehler / 401.php
	 ErrorDocument 403 /error/403.php
	 ErrorDocument 404 / Fehler / 404.php
	 ErrorDocument 500 / Fehler / 500.php 

<Vergessen Sie nicht, den Fehlerordner im Stammverzeichnis Ihres Servers zu erstellen und die entsprechenden Dateien darin zu speichern

6. Erstellen Sie eine schwarze Liste von IP-Adressen

Müde von Spam-Kommentaren oder einem bestimmten Benutzer? Blockieren Sie die IP-Adresse mit dem folgenden Code, der der .htaccess-Datei hinzugefügt wurde.

	 # Erstellen Sie eine schwarze Liste von IP-Adressen
	 von allen zulassen
	 leugnen von 145.186.14.122
	 leugnen von 124.15. 

Sie können die IP-Adressen von Kommentatoren entweder in den Apache-Logs oder mit Hilfe von Statistikdiensten herausfinden. Viele CMS verfügen über eigene integrierte Tools zur Überwachung der Besucheradressen. Zum Beispiel können in Drupal die IP-Adressen von Kommentatoren im Administrationsbereich - Berichte angezeigt werden.

7. Legen Sie die Standard-E-Mail-Adresse für den Administrator fest

Verwenden Sie diesen Code, um die Standard-E-Mail-Adresse für den Serveradministrator festzulegen.

	 # Legen Sie die Standard-E-Mail-Adresse für den Administrator fest
	 Serversignatur EMail
	 SetEnv SERVER_ADMIN default@domain.com 

Vergessen Sie nicht default@domain.com zu ersetzen - mit Ihrer E-Mail-Adresse.

8. Schützen Sie eine bestimmte Datei

Mit dem folgenden Code können Sie den Zugriff auf jede Datei verweigern - ein Fehler 403 wird auf Anfrage ausgegeben, zum Beispiel habe ich den Zugriff auf die htaccess-Datei selbst beendet, wodurch sich das Sicherheitsniveau der Website insgesamt erhöht hat.

  # Schützen Sie die .htaccess-Datei
 Reihenfolge erlauben, verweigern
 leugne von allem

9. Komprimiere die Elemente mit mod_deflate

Als Alternative zum Komprimieren von Dateien mit Gzip können Sie mod_deflate verwenden (es funktioniert wahrscheinlich schneller). Fügen Sie den folgenden Code am Anfang Ihrer .htaccess-Datei ein (Sie können auch Enumerationen hinzufügen .jpg | .gif | .png | .tiff | .ico):

  # Komprimiere die Elemente mit mod_deflate
 SetOutputFilter DEFLATE

10. Hinzufügen von Lebenszeit zu Kopfzeilen

Mit diesem Code können Sie Lebenszeiten zu Überschriften hinzufügen:

  # Fügen Sie den Headern Lebensdauer hinzu
 Kopfsatz läuft ab «Mi, 21 Mai 2010 20:00:00 GMT»

11. Legen Sie die Standardseiten fest

Normalerweise ist die Standardseite index.html, aber mit diesem Code können Sie standardmäßig jede andere Seite konfigurieren.

	 # Legen Sie die Standardseite standardmäßig fest
	 Verzeichnisindex about.html 

12. Passwort schützen Ordner und Dateien

Sie können die Kennwortprüfung aktivieren, um mit diesem Code auf einen beliebigen Ordner oder eine Datei auf Ihrem Server zuzugreifen:

  # Passwortschutzdatei
 AuthType Grundlegend
 AuthName "Eingabeaufforderung"
 AuthUserFile /pub/home/.htpasswd
 Erfordert einen gültigen Benutzer
 # Passwortschutzordner
	 wohnt
	 AuthType grundlegend
	 AuthName "Dieses Verzeichnis ist geschützt"
	 AuthUserFile /pub/home/.htpasswd
	 AuthGroupFile / dev / null
	 Erfordert einen gültigen Benutzer 

Um den Zugriff auf die Datei mit einem Passwort zu organisieren, müssen Sie eine .htpasswd-Datei erstellen und ein Login-Passwort-Paar im Format user: password hinzufügen.

In diesem Fall werden die Passwörter jedoch in einer offenen Form gespeichert, was aus Sicherheitsgründen nicht sehr gut ist. Daher ist es besser, das Passwort zu verschlüsseln. Verwenden Sie dazu die Dienste zum Generieren von Datensätzen in den .htpasswd-Dateien. Zum Beispiel, hier z .

In unserem Beispiel befindet sich die Datei mit den Zugriffskennwörtern im Stammverzeichnis der Site und heißt .htpasswd. Das Verzeichnis wird von der Wurzel des Servers angezeigt und wenn der Pfad falsch ist - Apache, ohne Zugriff auf die Datei, verweigert den Zugriff auf den Ordner für jeden Benutzer - in der Chile und die, die das richtige Passwort- Paar eingegeben : Passwort .

13. Umleitung von der alten zu einer neuen Domain

Mit .htaccess können Sie die Umleitung vom alten zum neuen Domänennamen konfigurieren, indem Sie den folgenden Code hinzufügen:

	 # Umleitung von der alten Domain old.com auf eine neue Domain
	 RewriteEngine Ein
	 RewriteRule ^ (. *) $ Http://www.new.com/$1 [R = 301, L] 

Die Umleitung wird verwendet, wenn Sie Ihre vorhandene Website auf einen neuen Domänennamen verschieben. In diesem Fall wird jeder Benutzer, der sich in der Adressleiste von www.old.com einwählt, zu www.new.com weitergeleitet.

14. Verstärken Sie das Caching

Die Verwendung dieser Regel bedeutet nicht, dass das Laden Ihrer Site beschleunigt wird. Sie dient zum schnelleren Laden einer Site - für einen Besucher, der sie bereits besucht hat, indem sie den Status 304 für die Elemente sendet, die nicht aktualisiert wurden.

  # Verstärken Sie das Caching
 FileETag MTime Größe
 ExpiresActive auf
 ExpiresDefault "Zugriff plus 1 Jahr"

Wenn die Seite erneut geladen wird, lädt der Browser des Besuchers Bilder, Skripte oder CSS nicht erneut herunter, sondern gibt die Dateien aus, die bereits in seinem Cache gespeichert sind. Sie können die Lebensdauer des Caches ändern, indem Sie seinen Wert in Jahren, Monaten oder z. B. in Sekunden anpassen. Im Beispiel ist 1 Jahr angegeben.

15. Komprimieren Sie die Komponenten der Site, indem Sie Gzip einfügen

Wenn Sie Gzip verwenden , komprimiert der Server die Dateien, bevor sie an den Benutzer gesendet werden. Dadurch wird Ihre Website schneller geladen.

	 # Komprimieren Sie die Komponenten der Site, indem Sie Gzip einfügen
	 AddOutputFilterByType DEFLATE Text / HTML-Text / plain ..
	 .. Text / XML-Anwendung / XML-Anwendung / xhtml + xml .. 
	 .. Text / Javascript Text / CSS-Anwendung / x-javascript
	 BrowserMatch ^ Mozilla / 4 gzip-only-text / html
	 BrowserMatch ^ Mozilla / 4.0 [678] no-gzip
	 BrowserMatch bMSIE! No-gzip! Gzip-nur-Text / HTML 

Beachten Sie, dass die Einbeziehung der Komprimierung zu einer höheren Auslastung des Serverprozessors führt. Hier wird die Zeile AddOutputFilterByType in eine lange Zeile mit zwei unteren geschrieben (alle ... müssen entfernt werden).

16. Entfernen Sie die "Kategorie" aus der URL

Um yourdomain.com/category/blue in yourdomain.com/blue zu ändern , fügen Sie einfach den folgenden Code am Ende Ihrer .htaccess- Datei hinzu.

	 # Entferne die Kategorie von der URL
	 RewriteRule ^ Kategorie /(.+)$ http://www.site.com/$1 [R = 301, L] 

Vergessen Sie nicht, www.site.com zu Ihrem Domain-Namen zu ändern.

17. Wir verbieten es, den Inhalt eines Ordners anzuzeigen

Um den Zugriff auf Verzeichnisse einzuschränken, die eine Vielzahl von Informationen enthalten können, und um die Sicherheit des Servers zu gewährleisten, fügen Sie diesen Code der .htaccess-Datei hinzu

	 # Den Inhalt eines Ordners nicht anzeigen
	 Optionen Alle -Indexe 

18. Umleiten Ihres RSS-Feeds an FeedBurner

Lassen Sie uns zeigen, wie dies am Beispiel des Drupal-RSS-Feeds für den Google Feedburner-Dienst getan werden kann.

  # Weiterleitung des RSS-Feeds an Drupal auf FeedBurner
 RewriteEngine an
 RewriteCond% {HTTP_USER_AGENT}! FeedBurner [NC]
 RewriteCond% {HTTP_USER_AGENT}! FeedValidator [NC]
 RewriteRule ^ rss.xml $ http://feeds.feedburner.com/yourfeed [R = 302, NC, L]

Zunächst müssen Sie einen Feed für Ihren Blog im Feedburner- Dienst registrieren . Als nächstes vergiss nicht, deinen Feed in Feedburner durch den Namen deines Bandes zu ersetzen.

19. Wir verbieten Kommentare von Nutzern ohne Referrer

Meistens verweisen Spam-Bots direkt auf die Kommentar-Datei, zum Beispiel auf wp-comments-post.php , ohne auf die Seiten Ihrer Blog-Einträge zu gehen. Mit dem unten stehenden Code können Sie Kommentare blockieren, die von Nutzern gesendet wurden, die "aus dem Nichts" kommen. Sie können nur die Leser kommentieren, die von anderen Seiten auf Ihre Blog-Seite gewechselt sind (z. B. Google-Suchergebnisse).

	 # Wir verbieten Kommentare von Nutzern ohne Referrer
	 RewriteEngine Ein
	 RewriteCond% {REQUEST_METHOD} POST
	 RewriteCond% {REQUEST_URI} .com \ \ Antwort \ / *
	 RewriteCond% {HTTP_REFERER}!. * Yourblog.com. * [ODER]
	 RewriteCond% {HTTP_USER_AGENT} ^ $
	 RewriteRule (. *) ^ Http: //% {REMOTE_ADDR} / $ [R = 301, L] 

Vergessen Sie nicht, yourblog.com durch den Domain-Namen Ihres Blogs zu ersetzen.

20. Entfernen Sie die Dateierweiterung von der URL

Mit diesem Code können Sie die Erweiterung der .php-Datei (Sie können sie in eine andere Datei ändern, z. B. - .html) aus den URLs der Seiten löschen.

	 # Entfernen Sie die Dateierweiterung von der URL
	 RewriteRule ^ (([^ /] + /) * [^.] +) $ /$1.php [L] 

21. Wir schützen die Website

Dieser Code schützt die Site vor der Unterdrückung von Skripts und unerwünschten Änderungen von _REQUEST und / oder GLOBALS:

  # Aktivieren Sie die Simlink-Verfolgung
 Optionen + FolgenSymLinks
 # Führen Sie url_rewriting aus
 RewriteEngine Ein
 # Wir blockieren alle Links, die <script> enthalten
 RewriteCond% {QUERY_STRING} (\ <|% 3C). * Skript. * (\> |% 3E) [NC, OR]
	 # Wir blockieren alle Skripts, die versuchen, die PHP-Globals-Variablen zu ändern:
	 RewriteCond% {QUERY_STRING} GLOBALS (= | \ [| \% [0-9A-Z] {0,2}) [ODER]
	 # Wir blockieren alle Skripts, die versuchen, die Variable _REQUEST zu ändern:
	 RewriteCond% {QUERY_STRING} _REQUEST (= | \ [| \% [0-9A-Z] {0,2})
	 # Wir leiten alle ähnlichen auf Seite mit einem Fehler 403 um - es ist verboten
	 RewriteRule ^ (. *) $ Index.php [F, L] 

22. Leiten Sie den Besucher mit der RedirectMatch-Direktive und regulären Ausdrücken um

Eine weitere nützliche Richtlinie, die zur Verwendung empfohlen wird, ist RedirectMatch . Zitat: "Diese Direktive erlaubt Ihnen, den regulären Ausdruck (die Übertragung ist nicht" aus dem Dokument ", sondern" aus allen Dokumenten, wie ... ") als die angeforderte Adresse zu verwenden. Externe Weiterleitung - Der Browser wird über die Notwendigkeit informiert, eine weitere Seite herunterzuladen.

Syntax:

	 RedirectMatch [Status] regexp URL 

Die Statuswerte (Webserver-Return-Code) sind Standard:

permanent (301 - permanente Umleitung), temp (302 - temporäre Weiterleitung, komm wieder), seeother (303 - fliege dort, es gibt viele leckere), weg (410 - permanent gelöscht).

Beispiel:

Dieselbe Umleitung von der alten zur neuen Domain, ohne RewriteEngine zu verbinden:

	 RedirectMatch 301 ^ (. *) $ Www.domänenname.com/$1 

Von mir werde ich hinzufügen, dass Sie nicht nur http-Zustände , sondern auch andere Bedingungen verwenden können:

	 RedirectMatch (. *) \. Gif $ http: //www.myserver.com$1.png
	 RedirectMatch (. * \. Jpg) $ http: //www.myanother.com$1 

Stellen Sie sicher, dass Sie eine Sicherungskopie der .htaccess-Datei erstellen, bevor Sie Änderungen vornehmen, und überprüfen Sie die Funktionalität der gesamten Site, nachdem Sie neue Zeilen hinzugefügt haben.

23. Schutz vor direkten Links für Bilder durch .htaccess

Hotlink - direkte Verknüpfungen von Bildern oder Dateien von einer Site zur anderen einfügen. Diese Methode wird häufig verwendet, zum Beispiel haben Sie nicht genug Platz auf Ihrem Server, um Bilder zu speichern, und Sie verwenden einen kostenlosen Dienst zum Speichern von Bilddateien, d. Lade ein Bild herunter, erhalte eine URL und füge sie auf deiner Seite ein.

Am Ende: Sie sparen Platz für Ihre Website und nutzen das Bandbreiten-Hosting für Bilder, aber das geht Sie nichts an. Aber hier ist wie, wenn jemand entschieden hat, dass Ihre Website als ein ähnlicher Dienst verwendet werden kann.

Wie wird man kein kostenloser Anbieter von Bildern und Dateien?

Gibt es Schutz vor diesem? Ja, gibt es! Um zu verhindern, dass andere Websites Ihren Datenverkehr verwenden und / oder Sie einfach auf direkte Links zu Ihren Dateien (Bildern) verweisen, fügen Sie Ihrer .htaccess- Datei die folgenden Zeilen hinzu:

	 # Verhindern Sie, dass andere Websites direkte Links zu Ihren Bildern verwenden
	 RewriteCond% {HTTP_REFERER}! ^ $
	 # Nächste Liste der erlaubten Domains
	 RewriteCond% {HTTP_REFERER}! ^ Http (s) ?: // (www.)? Sitename.ru. * $ [NC]
	 RewriteCond% {HTTP_REFERER}! ^ Http (s) ?: // (www.)? Sitename.ru: 80. * $ [NC]
	 # IP-Site (Domäne)
	 RewriteCond% {HTTP_REFERER}! ^ Http (s) ?: //111.111.111.111.*$ [NC]
	 RewriteCond% {HTTP_REFERER}! ^ Http (s) ?: //111.111.111.111: 80. * $ [NC]
	 RewriteCond% {HTTP_REFERER}! ^ Http (s) ?: // (www.)? Yandex.ru [NC]
	 RewriteCond% {HTTP_REFERER}! ^ Http (s) ?: // (www.)? Google.  [NC]
	 # RewriteCond% {HTTP_REFERER}! ^ Http (s) ?: // (www.)? Domain_freundliche Seite. [NC]
	 RewriteCond% {HTTP_REFERER}! Suche? Q = Cache [NC]
	 # Dateiformate, für die der Schutz installiert ist
	 # Zeigt den Fehler 403 an
	 # RewriteRule \. (Jpe? G | bmp | gif | png | css | mov | swf | dcr | exe | rar | avi | vob | zip | pdf | txt | doc | flv | mp3 | mp4) $ - [NC, F, L]
	 # oder zeigt die speziellen Künstler anstelle des angegebenen
	 RewriteRule. * \. (Jp? G | bmp | gif | png) $ files / images / nohotlink.jpg [NC, L] 

Als Ergebnis erhalten alle anderen Websites einen Fehler 403 Forbidden (dh Zugriff verweigert ) und Ihre Bandbreite ist mehr "nicht für andere arbeiten".

24. ImageCache und Schutz vor Hotlinks durch .htaccess

Für ImageCache funktioniert das vorherige Element nicht. Fügen Sie daher die folgenden Einstellungen hinzu:

  SetEnvIfNoCase Referer "^ $" local_ref = 1
 # Erlaubte Domains
 # Dann erlaubte Domains
 SetEnvIfNoCase Referer "^ http: // (www \.)? Domäne \ .ru" local_ref = 1
 SetEnvIfNoCase Referer "^ http: // (www \.)? Domäne \ .com" local_ref = 1
 # Dateierweiterungen, die Sie schützen möchten
 # Erweiterungen von Dateien, die Sie schützen müssen
 Bestellung zulassen, verweigern
 Erlaube von env = local_ref

Jetzt haben wir beide Hotlink- Schutz und ImageCache- Modul - sie arbeiten perfekt zusammen. Ein "Aber" - so, wie Sie sehen, wird es nicht möglich sein, ein anderes Bild zu geben; nur der Schutz ihrer Bilder, was das Hauptziel ist.