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, möchte ich Sie darauf aufmerksam machen, dass der Missbrauch von .htaccess zu einer Verringerung der Leistung Ihrer Website führen kann. Die Hauptregel: Die Verwendung von .htaccess für die Implementierung einer bestimmten Aufgabe ist nur möglich, wenn keine anderen Optionen vorhanden sind.

Stellen Sie sicher, dass Sie die ursprüngliche .htaccess-Datei für Ihre Site sichern, bevor Sie Änderungen vornehmen. Beachten Sie außerdem, dass die folgenden Regeln von den einzelnen Einstellungen Ihres Webservers abhängen, die vom Hoster festgelegt werden. Einige Richtlinien können verboten sein und nicht funktionieren.

.htaccess (from. English Hypertext Access) - zusätzliche Konfigurationsdatei für den Apache-Webserver sowie ähnliche Server. Ermöglicht das Festlegen einer großen Anzahl zusätzlicher Parameter und Berechtigungen für den Webserver in separaten Verzeichnissen (Ordnern), z. B. verwaltetem Zugriff auf Verzeichnisse, Neuzuweisen von Dateitypen usw., ohne die Hauptkonfigurationsdatei zu ändern.

Die .htaccess- Datei kann in einem beliebigen Verzeichnis abgelegt werden . Die Direktiven dieser Datei wirken sich auf alle Dateien im aktuellen Verzeichnis und in allen seinen Unterverzeichnissen aus (es sei denn, diese Direktiven werden durch die Direktiven der zugrunde liegenden .htaccess-Dateien außer Kraft gesetzt).

Damit diese .htaccess-Dateien verwendet werden können, sind die entsprechenden Einstellungen der Hauptkonfigurationsdatei erforderlich (der Wert der AllowOverride- Direktive muss auf All gesetzt sein ). In der Regel dürfen die meisten Hoster ihre .htaccess-Dateien verwenden.

1. Wir untersagen das Herunterladen von Dateien von externen Websites

Haben Sie die Leute satt, die Bilder veröffentlichen, die auf Ihrer Website veröffentlicht werden - aus eigenen Quellen, wodurch Ihr Traffic aufgebraucht wird und Ihr Hosting unnötig belastet wird? Dieser Code am Ende Ihrer .htaccess-Datei verhindert, dass Websites von Drittanbietern Ihre Bilder herunterladen.

	 Optionen + FollowSymlinks
	 # Wir untersagen das Herunterladen von Dateien von externen Websites
	 RewriteEngine On
	 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 Domainnamen zu ändern und ein Bild stop.gif zu erstellen, das anstelle des angeforderten Bildes angezeigt wird.

2. Blockieren Sie alle Anforderungen von unerwünschten Benutzeragenten

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

  # Blockieren Sie fehlerhafte Bots und Roboter
 SetEnvIfNoCase Benutzer-Agent ^ FrontPage [NC, OR]
 SetEnvIfNoCase Benutzer-Agent ^ Java. * [NC, OR]
 SetEnvIfNoCase Benutzer-Agent ^ Microsoft.URL [NC, OR]
 SetEnvIfNoCase Benutzer-Agent ^ MSFrontPage [NC, OR]
 SetEnvIfNoCase Benutzer-Agent ^ Offline.Explorer [NC, OR]
 SetEnvIfNoCase Benutzer-Agent ^ [Ww] eb [Bb] andit [NC, OR]
 SetEnvIfNoCase Benutzer-Agent ^ Zeus [NC]
 Auftrag zulassen, verweigern
 Erlaube von allen
 Ablehnung von env = bad_bot

Eine Liste von Benutzeragenten für Browser, Roboter und Suchmaschinenspider, Webverzeichnisse, Download-Manager, Spam-Bots und schlechte Bots finden Sie auf der Website von List of User-Agents.

3. Wir verweigern den Zugriff auf alle außer den angegebenen IP-Adressen

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

	 # Den Zugriff auf alle außer den angegebenen IP-Adressen verweigern
	 ErrorDocument 403 http://www.domainname.com
	 Auftrag verweigern, zulassen
	 Ablehnen von allen
	 Zulassen ab 124.34.48.165
	 Zulassen ab 102.54.68.123 

Denken Sie daran, Domainname.com in Ihren Domainnamen zu ändern.

4. Passen Sie die SEO-freundliche 301-Weiterleitung an

Wenn Sie einen Domainnamen (oder Ihren eigenen Sub-Site) übertragen haben oder den Benutzer ohne Sanktionen der Suchmaschinen auf eine bestimmte Seite (n) umleiten möchten, verwenden Sie diesen Code:

	 # Anpassen einer SEO-freundlichen 301-Weiterleitung
	 Umleitung 301 /1/file.html http://www.site.com/2/file.html 

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

5. Erstellen Sie Ihre eigenen Fehlerseiten.

Sind Sie müde von der Standardansicht von Fehlerseiten? Kein Problem - mit dem folgenden Code können Sie ganz einfach Ihre eigene Seite erstellen und dem Benutzer anzeigen:

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

<Vergessen Sie nicht, einen Fehlerordner im Stammverzeichnis Ihres Servers zu erstellen und die entsprechenden Dateien darin abzulegen. / P>

6. Erstellen Sie eine schwarze Liste von IP-Adressen

Müde von Spam-Kommentaren oder einem bestimmten Benutzer? Blockieren Sie einfach die IP-Adresse, und fügen Sie den folgenden Code der .htaccess-Datei hinzu.

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

Sie finden die IP-Adressen der Kommentatoren entweder in den Apache-Protokollen oder mithilfe der Statistikdienste. Viele CMS verfügen über eigene integrierte Tools zur Überwachung der Besucheradressen. In Drupal können zum Beispiel die IP-Adressen von Kommentatoren im Verwaltungsbereich - 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
	 ServerSignature EMail
	 SetEnv SERVER_ADMIN default@domain.com 

Vergessen Sie nicht, default@domain.com durch Ihre E-Mail-Adresse zu ersetzen.

8. Eine bestimmte Datei schützen.

Mit dem folgenden Code können Sie den Zugriff auf alle Dateien verweigern. Wenn Sie dazu aufgefordert werden, wird ein Fehler 403 ausgegeben. Ich habe beispielsweise den Zugriff auf die Datei htaccess selbst geschlossen, wodurch die allgemeine Sicherheitsstufe der Site erhöht wurde.

  # Die .htaccess-Datei schützen
 Ordnung erlauben, verweigern
 leugnen von allen

9. Komprimieren Sie Elemente mit mod_deflate

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

  # Elemente mit mod_deflate komprimieren
 SetOutputFilter DEFLATE

10. Fügen Sie Kopfzeilen Leben hinzu

Mit diesem Code können Sie den Kopfzeilen Lebensdauer hinzufügen:

  # Fügen Sie den Kopfzeilen Lebensdauer hinzu
 Kopfsatz verfällt "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 standardmäßig eine alternative Seite fest
	 DirectoryIndex about.html 

12. Ordner und Dateien mit einem Kennwort schützen.

Mit diesem Code können Sie die Kennwortprüfung für den Zugriff auf einen beliebigen Ordner oder eine Datei auf Ihrem Server aktivieren:

  # Passwortschutz für Dateien
 AuthType Basic
 AuthName "Eingabeaufforderung"
 AuthUserFile /pub/home/.htpasswd
 Erlaube einen gültigen Benutzer
 # Passwort schützen Ordner
	 wohnt
	 AuthType basic
	 AuthName "Dieses Verzeichnis ist geschützt"
	 AuthUserFile /pub/home/.htpasswd
	 AuthGroupFile / dev / null
	 Erlaube einen gültigen Benutzer 

Um den Zugriff auf die Datei mit einem Kennwort zu organisieren, müssen Sie eine .htpasswd-Datei erstellen und das Login-Kennwort-Paar im Format Benutzer: Kennwort eingeben .

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

In unserem Beispiel befindet sich die Datei mit Zugriffskennwörtern im Stammverzeichnis der Site und heißt .htpasswd. Das Verzeichnis wird vom Stammverzeichnis des Servers aus angegeben. Wenn der Pfad falsch ist, verweigert Apache keinen Zugriff auf den Ordner für jeden Benutzer - in den Chiles und in dem Verzeichnis, das das korrekte Login eingegeben hat : Kennwort .

13. Umleitung von der alten Domäne zur neuen.

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

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

Die Umleitung wird verwendet, wenn Sie Ihre vorhandene Site auf einen neuen Domainnamen übertragen. In diesem Fall wird jeder Benutzer, der die Adressleiste www.old.com eingibt, zu www.new.com umgeleitet.

14. Wir verstärken das Caching

Die Verwendung dieser Regel bedeutet keine direkte Beschleunigung des Ladens Ihrer Website. Es ist für ein schnelleres Laden der Site gedacht - für einen Besucher, der ihn bereits besucht hat, indem der Status 304 für die Elemente gesendet wird, die nicht aktualisiert wurden.

  # Caching verbessern
 FileETag MTime-Größe
 ExpiresActive am
 ExpiresDefault "Zugriff plus 1 Jahr"

Beim erneuten Laden der Seite lädt der Browser des Besuchers Bilder, Skripts oder CSS nicht erneut herunter, sondern gibt die Dateien aus, die bereits in seinem Cache gespeichert sind. Sie können die Cache-Lebensdauer ändern, indem Sie den Wert in Jahren (Jahre), Monaten (Monaten) oder beispielsweise Sekunden (Sekunden) anpassen. Im Beispiel ist 1 Jahr angegeben.

15. Komprimieren Sie die Site-Komponenten, indem Sie Gzip aktivieren

Bei Verwendung von Gzip komprimiert der Server die Dateien, bevor sie an den Benutzer gesendet werden. Dies bedeutet, dass Ihre Site schneller geladen wird.

	 # Squeeze Site-Komponenten durch Aktivieren von Gzip
	 AddOutputFilterByType DEFLATE text / html text / plain ..
	 .. Text / XML-Anwendung / XML-Anwendung / Xhtml + XML .. 
	 .. Text / Javascript Text / CSS-Anwendung / X-Javascript
	 BrowserMatch ^ Mozilla / 4 Nur-GZIP-Text / HTML
	 BrowserMatch ^ Mozilla / 4.0 [678] no-gzip
	 BrowserMatch bMSIE! No-gzip! Nur Gzip-Text / HTML 

Bitte beachten Sie, dass die Einbeziehung der Komprimierung den Prozessor des Servers stärker belastet. Hier wird die AddOutputFilterByType- Zeichenfolge in eine lange Zeile mit zwei niedrigeren geschrieben (alle .. müssen entfernt werden).

16. Entfernen Sie "category" von der URL

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

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

Stellen Sie sicher, dass Sie www.site.com in Ihren Domainnamen ändern.

17. Wir untersagen den Inhalt des Ordners.

Fügen Sie diesen Code zur .htaccess-Datei hinzu, um den Zugriff auf Verzeichnisse einzuschränken, die verschiedene Informationen enthalten können, und um die Serversicherheit zu gewährleisten

	 # Den Inhalt eines Ordners nicht anzeigen
	 Options All --Indexes 

18. Umleitung Ihres RSS-Feeds an FeedBurner

Lassen Sie uns am Beispiel des Drupal RSS-Feeds für den Google Feedburner-Service zeigen, wie dies möglich ist.

  # Leiten Sie den Drupal-RSS-Feed an FeedBurner weiter
 RewriteEngine einschalten
 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 Ihren Blog- Feed bei Feedburner registrieren . Vergessen Sie nicht, Ihren Feed durch den Namen Ihres Feeds zu ersetzen, der sich bereits in Feedburner befindet.

19. Verbot von Kommentaren von Benutzern ohne Referrer

In den meisten Fällen greifen Spam-Bots direkt auf die Kommentardatei zu, z. B. wp-comments-post.php , ohne die Seiten Ihrer Blogeinträge zu besuchen . Mit dem folgenden Code können Sie Kommentare blockieren, die von Benutzern gesendet wurden, die "aus dem Nirgendwo" kamen. Dies ermöglicht Ihnen, nur Leser zu kommentieren, die von anderen Seiten auf Ihre Blogseite verschoben wurden (z. B. Google-Suchergebnisse).

	 # Verbot von Kommentaren von Benutzern ohne Referrer
	 RewriteEngine On
	 RewriteCond% {REQUEST_METHOD} POST
	 RewriteCond% {REQUEST_URI} .com \ / reply \ / *
	 RewriteCond% {HTTP_REFERER} !. * Yourblog.com. * [ODER]
	 RewriteCond% {HTTP_USER_AGENT} ^ $
	 RewriteRule (. *) ^ Http: //% {REMOTE_ADDR} / $ [R = 301, L] 

Vergessen Sie nicht, yourblog.com durch den Domainnamen 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 ändern, zum Beispiel - .html) von den URLs der Seiten entfernen.

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

21. Schutz der Site

Mit diesem Code können Sie die Website vor der Skripterstellung und unerwünschten Änderungen schützen. _REQUEST und / oder GLOBALS:

  # Aktivieren Sie die Nachverfolgung von Sim-Links
 Optionen + FollowSymLinks
 # Führen Sie url_rewriting aus
 RewriteEngine On
 # Blockieren Sie alle Links, die <script> enthalten
 RewriteCond% {QUERY_STRING} (\ <|% 3C). * Skript. * (\> |% 3E) [NC, OR]
	 # Blockieren Sie alle Skripts, die versuchen, die Variablen von PHP Globals zu ändern:
	 RewriteCond% {QUERY_STRING} GLOBALS (= | \ [| \% [0-9A-Z] {0,2}) [ODER]
	 # Blockieren Sie alle Skripts, die versuchen, die _REQUEST-Variable zu ändern:
	 RewriteCond% {QUERY_STRING} _REQUEST (= | \ [| \% [0-9A-Z] {0,2})
	 # Alle umleiten ähnlich der Seite mit Fehler 403 - verboten
	 RewriteRule ^ (. *) $ Index.php [F, L] 

22. Umleiten des Besuchers mithilfe der RedirectMatch-Direktive und regulärer Ausdrücke

Eine weitere nützliche Direktive, die zur Verwendung empfohlen wird, ist RedirectMatch . Zitat: "Diese Direktive erlaubt die Verwendung eines regulären Ausdrucks als angeforderte Adresse (das Senden erfolgt nicht" vom Dokument ", sondern" von allen Dokumenten, wie ... "). Externe Weiterleitung: Der Browser wird darüber informiert, dass eine weitere Seite geladen werden muss.

Syntax:

	 RedirectMatch [status] regexp URL 

Statuswerte (Webserver-Rückkehrcode) sind Standard:

permanent (301 - permanente Weiterleitung), temporär (302 - temporäre Weiterleitung, kommen wieder), seeother (303 - fliegt dorthin, es gibt viel Leckeres), gegangen (410 - für immer gelöscht).

Beispiel:

Dieselbe Umleitung von der alten Domäne zur neuen ohne Verbindung mit RewriteEngine:

	 RedirectMatch 301 ^ (. *) $ Www.domainname.com/$1 

Von mir möchte ich hinzufügen, dass Sie nicht nur http-Status verwenden können , sondern auch andere Bedingungen:

	 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 Leistung der gesamten Site - nachdem Sie neue Zeilen hinzugefügt haben.

23. Schutz vor direkten Links zu Bildern über .htaccess

Hotlink (Hotlink) - fügt direkte Links zu Bildern oder Dateien von einer Site zur anderen ein. Diese Technik wird häufig verwendet, z. B. haben Sie auf Ihrem Server nicht genügend Speicherplatz zum Speichern von Bildern, und Sie verwenden einen kostenlosen Dienst zum Speichern von Bilddateien, d. H. Laden Sie ein Bild hoch, rufen Sie eine URL ab und fügen Sie sie in Ihre Site ein.

Fazit: Sie sparen Platz für Ihre Website und nutzen die Hosting-Bandbreite für Bilder. Dies ist jedoch nicht Ihr Geschäft. Aber wie soll man sein, wenn jemand entschieden hat, dass Ihre Website als ähnlicher Dienst verwendet werden kann?

Wie werden Sie nicht zum kostenlosen Anbieter von Bildern und Dateien?

Gibt es einen Schutz dagegen? Ja, gibt es! Fügen Sie Ihrer .htaccess- Datei die folgenden Zeilen hinzu, um zu verhindern, dass andere Websites Ihren Datenverkehr verwenden und / oder direkt direkte Links zu Ihren Dateien (Bildern) enthalten.

	 # Verbieten Sie anderen Websites die Verwendung direkter Links zu Ihren Bildern
	 RewriteCond% {HTTP_REFERER}! ^ $
	 # Weitere Liste der erlaubten Domains
	 RewriteCond% {HTTP_REFERER}! ^ Http (s) ?: // (www.)? Sitename.com. * $ [NC]
	 RewriteCond% {HTTP_REFERER}! ^ Http (s) ?: // (www.)? Sitename.ru: 80. * $ [NC]
	 # IP der Site (Domain)
	 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_of einer freundlichen Site.ru [NC]
	 RewriteCond% {HTTP_REFERER}! Suche? Q = Cache [NC]
	 # Dateiformate, für die ein Schutz eingestellt ist
	 # Zeigt den Fehler 403 an
	 # RewriteRule \. (Jpe? G | bmp | gif | png | css | mov | swf | dcr | exe | rar | avi | vob | zip | txt | doc | flv | mp3 | mp4) $ - [NC, F, L]
	 # oder zeigt eine Sonderzeichnung anstelle der angegebenen
	 RewriteRule. * \. (Jpe? G | bmp | gif | png) $ files / images / nohotlink.jpg [NC, L] 

Als Ergebnis erhalten alle anderen Sites einen 403-verbotenen Fehler (d. H. Zugriff wird verweigert ) und Ihre Bandbreite "funktioniert für andere nicht mehr".

24. ImageCache- und Hotlink-Schutz über .htaccess

Für ImageCache funktioniert das vorherige Element nicht. Daher fügen wir die folgenden Einstellungen hinzu:

  SetEnvIfNoCase Referer “^ $” local_ref = 1
 # Erlaubte Domains
 # Weitere zulässige Domains
 SetEnvIfNoCase Referer "^ http: // (www \.)? Domain \. En" local_ref = 1
 SetEnvIfNoCase Referer "^ http: // (www \.)? Domain \ .com" local_ref = 1
 # Dateierweiterungen, die Sie schützen möchten
 # Dateierweiterungen zum Schutz
 Auftrag zulassen, verweigern
 Zulassen von env = local_ref

Jetzt haben wir sowohl den Hotlink- Schutz als auch das ImageCache- Modul - zusammen funktionieren sie perfekt. Ein "aber" - so wie Sie es sehen, wird es nicht möglich sein, ein anderes Bild zu erzeugen; Nur der Schutz ihrer Bilder ist das Hauptziel.