Die Konfigurationsdatei .htaccess von Apache ist ein schwieriger und wichtiger Punkt. Ich habe mich nie damit beschäftigt, es sorgfältig zu lernen. Ich habe immer gedacht, dass die Redirect-Methode zu mod_rewrite gehört, und ich bin verwirrt, wenn ich sie verwende. Ich habe heute ein sehr gutes Tutorial gefunden und beim Lernen einige Gedanken niedergeschrieben.
aktualisiert: Kontinuierliche Korrektur einiger kleinerer Probleme
Quelle: Umfassende Anleitung zu .htaccess
Offizielle Referenz: Kurzreferenz zur Richtlinie
1 Einführung Einführung <br />Dateiname.htaccess-Attribut 644 (RW-R–R–)
htaccess wirkt sich auf alle Unterverzeichnisse in dem Verzeichnis aus, in dem es sich befindet. Beachten Sie, dass die meisten Inhalte innerhalb einer Zeile bleiben und nicht umbrochen werden dürfen.
2 Fehlerdokumente Fehlerdokumente
Offizielles Dokument: ErrorDocument-Richtlinie
ErrorDocument-Codedokument
Beispiel
Fehlerdokument 400 /errors/badrequest.html
Fehlerdokument 404 http://yoursite/errors/notfound.html
Fehlerdokument 401 „Autorisierung erforderlich“
(Beachten Sie, dass alle doppelten Anführungszeichen, die später im Inhalt erscheinen, als " maskiert werden müssen.)
Allgemeine HTTP-Statuscodes
Erfolgreiche Kundenanfragen
200 OK
201 erstellt
202 Akzeptiert
203 Nicht verbindliche Informationen
204 Kein Inhalt
205 Inhalt zurücksetzen
206 Teilinhalt
Kundenanfrage umgeleitet
300 Mehrfachauswahlmöglichkeiten
301 Dauerhaft verschoben
302 Vorübergehend verschoben
303 Siehe Andere
304 Nicht geändert
305 Proxy verwenden
Fehler bei Clientanfragen
400 Ungültige Anfrage
401-Autorisierung erforderlich
402 Zahlung erforderlich (noch nicht verwendet)
403 Verboten
404 Nicht gefunden
405 Methode nicht zulässig
406 Nicht akzeptabel (Kodierung)
407 Proxy-Authentifizierung erforderlich
408 Zeitüberschreitung bei Anforderung
409 Widersprüchliche Anfrage
410 Weg
411 Inhaltslänge erforderlich
412 Vorbedingung fehlgeschlagen
413 Anforderungsentität zu lang
414 Anforderungs-URI zu lang
415 Nicht unterstützter Medientyp
Serverfehler
500 Interner Serverfehler
501 Nicht implementiert
502 Schlechtes Gateway
503 Dienst nicht verfügbar
504 Gateway-Zeitüberschreitung
505 HTTP-Version nicht unterstützt
3 Passwortschutz Passwortschutz
Offizielles Dokument: Authentifizierung, Autorisierung und Zugriffskontrolle
Gehen Sie davon aus, dass die Passwortdatei .htpasswd ist
AuthUserFile /usr/local/safedir/.htpasswd (hier muss der vollständige Pfadname verwendet werden)
AuthName EnterPassword
AuthType Basic
Zwei gängige Verifizierungsmethoden:
Erfordert userwindix
(Nur Benutzer windix darf sich anmelden)
Erfordert einen gültigen Benutzer
(Alle legalen Benutzer können sich anmelden)
Tipp: So generieren Sie eine Passwortdatei mit dem Befehl htpasswd (im Lieferumfang von Apache enthalten)
Für die erste Generation muss eine Passwortdatei erstellt werden
htpasswd -c .htpasswd Benutzer1
Fügen Sie später neue Benutzer hinzu
htpasswd .htpasswd Benutzer2
4 Aktivieren von SSI über htaccess Erlauben Sie die SSI-Funktion (Server Side Inclusive) über htaccess
AddType text/html .shtml
Vom AddHandler vom Server analysiertes .shtml
Optionen Indizes FollowSymLinks Includes
DirectoryIndex index.shtml index.html
5 Blockieren von Benutzern nach IP Blockieren des Benutzerzugriffs basierend auf IP
Befehl erlauben, verweigern
ab 123.45.6.7 verweigern
ab 12.34.5 verweigern (gesamte Klasse-C-Adresse)
von allen zulassen
6 Blockieren von Benutzern/Sites nach Referrer Blockieren von Benutzern/Sites basierend auf Referrer <br />Erfordert das Modul mod_rewrite
Beispiel 1. Blockieren eines einzelnen Referrers: badsite.com
RewriteEngine aktiviert
# Optionen +FollowSymlinks
RewriteCond %{HTTP_REFERER} badsite.com [NC]
RewriteRule .* - [F]
Beispiel 2. Blockieren Sie mehrere Referrer: badsite1.com, badsite2.com
RewriteEngine aktiviert
# Optionen +FollowSymlinks
RewriteCond %{HTTP_REFERER} badsite1.com [NC,OR]
RewriteCond %{HTTP_REFERER} badsite2.com
RewriteRule .* - [F]
[NC] – Groß- und Kleinschreibung wird nicht beachtet
[F] – 403 Verboten
Beachten Sie, dass die Anweisung „Options +FollowSymlinks“ im obigen Code auskommentiert ist. Wenn der Server FollowSymLinks nicht im Abschnitt httpd.conf festlegt, müssen Sie diesen Satz hinzufügen, andernfalls erhalten Sie die Fehlermeldung „500 Internal Server error“.
7 Blockieren schädlicher Bots und Site-Ripper (auch Offline-Browser genannt) Blockieren schädlicher Bots und Offline-Browser <br />Erfordert das Modul mod_rewrite
Schlechte Crawler? Zum Beispiel einige Crawler, die Spam-E-Mail-Adressen erfassen, und Crawler, die nicht mit robots.txt kompatibel sind (wie Baidu?).
Sie können anhand von HTTP_USER_AGENT beurteilt werden
(Aber es gibt noch schamlosere wie „Zhongsou zhongsou.com“, die ihren eigenen Agenten auf „Mozilla/4.0 (kompatibel; MSIE 5.5; Windows NT 5.0)“ setzen. Sie sind zu schurkisch und können nichts tun.)
RewriteEngineOn
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Bot mailto:[email protected] [ODER]
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Custo [ODER]
RewriteCond %{HTTP_USER_AGENT} ^DISCo [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Download Demon [ODER]
RewriteCond %{HTTP_USER_AGENT} ^eCatch [ODER]
RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [ODER]
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [ODER]
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Express WebPictures [ODER]
RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [ODER]
RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [ODER]
RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetWeb!
RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [ODER]
RewriteCond %{HTTP_USER_AGENT} ^GrabNet [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Grafula [ODER]
RewriteCond %{HTTP_USER_AGENT} ^HMView [ODER]
RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Image Stripper [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Image Sucker [ODER]
RewriteCond %{HTTP_USER_AGENT} Indy Library [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]
RewriteCond %{HTTP_USER_AGENT} ^Internet Ninja [ODER]
RewriteCond %{HTTP_USER_AGENT} ^JetCar [ODER]
RewriteCond %{HTTP_USER_AGENT} ^JOC Web Spider [ODER]
RewriteCond %{HTTP_USER_AGENT} ^larbin [ODER]
RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Mass Downloader [ODER]
RewriteCond %{HTTP_USER_AGENT} ^MIDown-Tool [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Mister PiX [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Navroad [ODER]
RewriteCond %{HTTP_USER_AGENT} ^NearSite [ODER]
RewriteCond %{HTTP_USER_AGENT} ^NetAnts [ODER]
RewriteCond %{HTTP_USER_AGENT} ^NetSpider [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Net Vampire [ODER]
RewriteCond %{HTTP_USER_AGENT} ^NetZIP [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Octopus [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Offline Explorer [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Offline Navigator [ODER]
RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Papa Foto [ODER]
RewriteCond %{HTTP_USER_AGENT} ^pavuk [ODER]
RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [ODER]
RewriteCond %{HTTP_USER_AGENT} ^RealDownload [ODER]
RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [ODER]
RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [ODER]
RewriteCond %{HTTP_USER_AGENT} ^SuperBot [ODER]
RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Surfbot [ODER]
RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]
RewriteCond %{HTTP_USER_AGENT} ^Teleport Pro [ODER]
RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Web Image Collector [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Web Sucker [ODER]
RewriteCond %{HTTP_USER_AGENT} ^WebAuto [ODER]
RewriteCond %{HTTP_USER_AGENT} ^WebCopier [ODER]
RewriteCond %{HTTP_USER_AGENT} ^WebFetch [ODER]
RewriteCond %{HTTP_USER_AGENT} ^WebGo IS [ODER]
RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [ODER]
RewriteCond %{HTTP_USER_AGENT} ^WebReaper [ODER]
RewriteCond %{HTTP_USER_AGENT} ^WebSauger [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Website eXtractor [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Website Quester [ODER]
RewriteCond %{HTTP_USER_AGENT} ^WebStripper [ODER]
RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [ODER]
RewriteCond %{HTTP_USER_AGENT} ^WebZIP [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Wget [OR]
RewriteCond %{HTTP_USER_AGENT} ^Widow [OR]
RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon WebSpider [ODER]
RewriteCond %{HTTP_USER_AGENT} ^Zeus
RewriteRule ^.* - [F,L]
[F] – 403 Verboten
[L] - ?
8 Ändern Sie Ihre Standardverzeichnisseite. Ändern Sie Ihre Standardverzeichnisseite
DirectoryIndex index.html index.php index.cgi index.pl
9 Weiterleitungen <br />Einzelne Datei
Leiten Sie /old_dir/old_file.html http://yoursite.com/new_dir/new_file.html um
gesamtes Verzeichnis
Leiten Sie /old_dir http://yoursite.com/new_dir um
Wirkung: Identisch mit dem Verschieben des Verzeichnisses
http://yoursite.com/old_dir -> http://yoursite.com/new_dir
http://yoursite.com/old_dir/dir1/test.html -> http://yoursite.com/new_dir/dir1/test.html
Tipp: Lösung des Problems, dass Redirect bei Verwendung des Benutzerverzeichnisses nicht umleiten kann
Wenn Sie das Standardbenutzerverzeichnis von Apache verwenden, z. B. http://mysite.com/~windix, und zu http://mysite.com/~windix/jump umleiten möchten, werden Sie feststellen, dass dies bei der folgenden Umleitung nicht der Fall ist arbeiten:
Weiterleiten /jump http://www.google.com
Der richtige Weg ist, es zu ändern
Leiten Sie /~windix/jump http://www.google.com um
(Quelle: .htaccess Redirect in „Sites“ leitet nicht weiter: Warum?)
10 Anzeige der .htaccess-Datei verhindern. Anzeige der .htaccess-Datei verhindern
Befehl erlauben, verweigern
von allen leugnen
11 MIME-Typen hinzufügen MIME-Typen hinzufügen
AddType application/x-shockwave-flash swf
Tipps: Wenn Sie den Typ auf application/octet-stream festlegen, werden Sie zum Herunterladen aufgefordert
12 Verhindern von Hot-Linking von Bildern und anderen Dateitypen Anti-Hot-Linking <br />Erfordert das Modul mod_rewrite
RewriteEngine aktiviert
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www/.)?mydomain.com/.*$ [NC]
RewriteRule .(gif|jpg|js|css)$ - [F]
Analyse:
Wenn HTTP_REFERER nicht leer ist (die Quelle sind andere Sites, die nicht direkt verbunden sind) und wenn HTTP_REFERER nicht mit (www.)mydomain.com beginnt (Groß- und Kleinschreibung [NC] ignorieren) (die Quelle ist nicht diese Site)
Gibt 403 Forbidden error [F] für alle Dateien aus, die mit .gif/.jpg/.js/.css enden
Sie können auch eine Antwort angeben, da das folgende Beispiel ein Ersatzbild zeigt
RewriteRule .(gif|jpg)$ [R,L]
[R] – Umleiten
[L] – Link
13 Verhindern der Verzeichnisauflistung Verhindern der Anzeige der Verzeichnisauflistung
IndexIgnorieren*
IndexIgnore *.jpg *.gif
Tipps:
Anzeige der Verzeichnisliste zulassen: Optionen + Indizes
Anzeige der Priesterliste deaktivieren: Optionen - Indizes
Eingabeaufforderungsinformationen anzeigen: Kopfzeilendatei HEADER, Fußzeilendatei README