.htaccess-Dateien werden zur Konfiguration von Apache sowie einer Reihe anderer Webserver verwendet. Trotz der .htaccess
Dateityperweiterung, sind dies einfach Textdateien, die mit einem beliebigen Texteditor bearbeitet werden können. In diesem Artikel werden wir überprüfen, was sie sind und wie Sie sie in Ihren Projekten verwenden können.
Bitte beachten Sie, dass .htaccess-Dateien auf Windows-basierten Systemen nicht funktionieren, obwohl sie bearbeitet und auf einen kompatiblen Webserver hochgeladen werden können und auf Linux-basierten Systemen standardmäßig ausgeblendet sind.
Um lokal mit htaccess-Dateien zu arbeiten, um zu sehen, wie sie funktionieren und allgemein damit umgehen, können wir XAMPP (oder MAMP) auf dem Mac verwenden - ein Paket, das Apache, PHP und MySQL installiert und konfiguriert. Um diese .htaccess-Dateien auf einem Mac zu bearbeiten, sollten Sie einen Texteditor verwenden, der das Öffnen von versteckten Dateien ermöglicht, beispielsweise TextWrangler.
Eine .htaccess-Datei hat dasselbe Format wie die Hauptkonfigurationsdatei von Apache: httpd.conf
. Viele der Einstellungen, die mit der Hauptkonfigurationsdatei konfiguriert werden können, können auch mit ihnen konfiguriert werden und umgekehrt.
Eine in einer .htaccess-Datei konfigurierte Einstellung überschreibt die gleiche Einstellung in der Hauptkonfigurationsdatei für das Verzeichnis, in dem sich die Datei befindet, sowie alle zugehörigen Unterverzeichnisse.
Sie werden manchmal als dynamische Konfigurationsdateien bezeichnet, da sie vom Server bei jeder Anforderung an das Verzeichnis gelesen werden, in dem sie enthalten sind. Dies bedeutet, dass Änderungen an einer .htaccess-Datei sofort wirksam werden, ohne dass ein Neustart des Servers erforderlich ist, anders als Änderungen an der globalen Konfigurationsdatei. Dies bedeutet auch, dass Sie einen geringen Performance-Hit für ihre Verwendung zahlen müssen. Sie können jedoch nützlich sein, wenn Sie keinen Zugriff auf die Hauptkonfigurationsdatei des Servers haben.
Nun wissen wir alle, was .htaccess-Dateien sind, wie sie bearbeitet und bearbeitet werden, und einige ihrer Vor- und Nachteile. Schauen wir uns an, wie sie verwendet werden können, und einige der coolen Sachen, die sie können.
Htaccess-Dateien werden häufig verwendet, um Weiterleitungen auszuführen oder URLs umzuschreiben. Dies kann beim SEO nach einer Änderung des Domainnamens oder bei der Reorganisation der Dateistruktur hilfreich sein, oder die unansehnliche URL kann freundlicher und einprägsamer werden.
Eine Umleitung kann so einfach sein wie folgt:
Umleitung 301 ^ alte \ .html $ http: //localhost/new.html
Dies setzt den HTTP-Statuscode auf 301 (dauerhaft verschoben) und leitet alle Anforderungen an weiter old.html
transparent zu new.html
. Wir verwenden einen regulären Ausdruck, um die URL für die Umleitung abzugleichen. Dies gibt uns ein feines Maß an Kontrolle, um sicherzustellen, dass nur die richtige URL für die Umleitung gefunden wird. Die Konfiguration und Verwaltung der URL wird jedoch komplexer. Die vollständige URL der Ressource, zu der umgeleitet wird, ist erforderlich.
Eine Umschreibungsregel kann so einfach sein:
RewriteEngine auf RewriteRule ^ old \ .html $ new.html
In diesem Beispiel stellen wir nur eine einfache Dateiumleitung von einer Datei zur anderen bereit, die ebenfalls transparent ausgeführt wird, ohne die Anzeige in der Adressleiste zu ändern. Die erste Richtlinie, RewriteEngine einschalten
, stellt einfach sicher, dass die Umschreibungs-Engine aktiviert ist.
Um zu aktualisieren, was in der Adressleiste des Browsers des Besuchers angezeigt wird, können Sie das verwenden R
Flagge am Ende der RewriteRule
z.B.
RewriteRule ^ old \ .html $ http: //hostname/new.html [r = 301]
Das r
Flag bewirkt eine externe Umleitung, weshalb die vollständige URL (hier eine Beispiel-URL) zur neuen Seite angegeben wird. Wir können auch den Statuscode angeben, wenn Sie das Flag verwenden. Dadurch wird die Adressleiste im Browser des Besuchers aktualisiert.
Eine der möglichen Verwendungsmöglichkeiten für das Umschreiben von URLs, die ich zu Beginn dieses Abschnitts gegeben habe, war, unansehnliche URLs (die Abfrage-String-Daten enthalten) für Besucher und Suchmaschinen freundlicher zu gestalten. Lassen Sie uns das jetzt in Aktion sehen:
RewriteRule ^ products / ([^ /] +) / ([^ /] +) / ([^ /] +) product.php? Cat = $ 1 & brand = $ 2 & prod = $ 3
Mit dieser Regel können Besucher eine URL wie verwenden produkte / plattenspieler / technik / sl1210, und haben es in umgewandelt product.php? cat = Plattenspieler &1 US-Dollar
, 2 $
und 3 $
beziehungsweise. Das [^ /]+
Zeichenklasse innerhalb der Klammern bedeutet, dass jedes Zeichen mit Ausnahme eines Schrägstrichs mindestens ein Mal übereinstimmt.
In der Praxis kann (und ist dies normalerweise) das Umschreiben von URLs viel komplexer sein und weitaus mehr erreichen. Das Umschreiben von URLs wird am besten anhand vollständiger Lernprogramme erläutert, sodass wir hier nicht näher darauf eingehen.
Es ist einfach nicht cool, die Standard-404-Seite mehr anzuzeigen. Viele Websites nutzen die Möglichkeit, die durch eine Datei gefunden wurde, die nicht als Fehler erkannt wurde, um etwas Humor in ihre Website einzubringen, aber zumindest erwarten die Menschen, dass die 404-Seite einer Website mindestens dem Stil und dem Thema einer anderen Seite der Website entspricht.
Sehr eng mit dem Umschreiben von URLs verwandt, ist die Bereitstellung einer benutzerdefinierten Fehlerseite anstelle der Standard-404-Seite mit einer .htaccess-Datei einfach:
Fehlerdokument 404 "/404.html"
Das ist alles was wir brauchen. Immer wenn ein Fehler 404 auftritt, wird die angegebene Seite angezeigt. Wir können Seiten so konfigurieren, dass sie auch für viele andere Serverfehler angezeigt werden.
Durch die Verwendung von .htaccess-Dateien können wir den Kennwortschutz für alle Dateien oder Verzeichnisse, für alle Benutzer oder basierend auf Dingen wie Domäne oder IP-Adresse aktivieren. Dies ist immerhin eine ihrer Kernanwendungen. Um den Zugriff auf ein gesamtes Verzeichnis zu verhindern, erstellen wir einfach eine neue .htaccess-Datei mit dem folgenden Code:
AuthName "Benutzername und Passwort erforderlich" AuthUserFile /path/to/.htpasswd Erfordert einen gültigen Benutzer-AuthType Basic
Diese Datei sollte dann in dem Verzeichnis gespeichert werden, das wir schützen möchten. Das AuthName
Die Direktive gibt die Nachricht an, die im Dialogfeld "Benutzername / Passwort" angezeigt werden soll AuthUserFile
sollte der Pfad zur .htpasswd-Datei sein. Das Benötigen
Direktive gibt an, dass nur authentifizierte Benutzer auf die geschützte Datei zugreifen können Authentifizierungstyp
ist eingestellt auf Basic
.
Um eine bestimmte Datei zu schützen, können Sie den obigen Code in eine
Direktive, die die geschützte Datei angibt:
AuthName "Benutzername und Passwort erforderlich" AuthUserFile /path/to/.htpasswd Erfordert einen gültigen Benutzer-AuthType Basic
Für diese Authentifizierungstypen benötigen wir auch eine .htpasswd-Datei, die eine durch Doppelpunkte getrennte Liste von Benutzernamen und verschlüsselten Kennwörtern enthält, die für den Zugriff auf die geschützten Ressourcen erforderlich sind. Diese Datei sollte in einem Verzeichnis gespeichert werden, auf das das Web nicht zugreifen kann. Es gibt eine Reihe von Diensten, mit denen diese Dateien automatisch generiert werden können, da das Kennwort in verschlüsselter Form gespeichert werden soll.
Eine andere Verwendung von .htaccess-Dateien besteht darin, alle Anfragen von einer IP-Adresse oder einem Benutzeragenten schnell und einfach zu blockieren. Um eine bestimmte IP-Adresse zu blockieren, fügen Sie Ihrer .htaccess-Datei einfach die folgenden Anweisungen hinzu:
um zu erlauben, verweigern verweigern von 192.168.0.1 von allen zulassen
Das Auftrag
Direktive teilt Apache mit, in welcher Reihenfolge die Zulassungs- / Ablehnungsrichtlinien ausgewertet werden sollen. In diesem Fall, ermöglichen
wird dann zuerst ausgewertet verweigern
. Das von allen zulassen
Direktive wird zuerst ausgewertet (auch wenn sie nach dem erscheint verweigern
Direktive) und alle IP-Adressen sind zulässig, wenn die IP-Adresse des Clients mit der in der angegebenen IP-Adresse übereinstimmt verweigern
Direktive ist der Zugang verboten. Dies erlaubt jedem außer der angegebenen IP. Beachten Sie, dass wir den Zugriff auf vollständige IP-Blöcke auch verweigern können, indem Sie eine kürzere IP-Adresse angeben, z. 192.168.
Um Anfragen basierend auf Benutzeragenten abzulehnen, können Sie Folgendes tun:
RewriteCond% HTTP_USER_AGENT ^ OrangeSpider RewriteRule ^ (. *) $ Http: //% REMOTE_ADDR / $ [r = 301, l]
In diesem Beispiel kann jeder Client mit einem HTTP_USER_AGENT
Zeichenfolge beginnend mit OrangeSpider
(ein schlechter Bot) wird an die Adresse zurückgeleitet, von der er stammt. Der reguläre Ausdruck stimmt mit jedem einzelnen Zeichen überein (.)
null oder mehrmals (*)
und leitet auf die % REMOTE_ADDR
Umgebungsvariable. Das l
Das hier verwendete Flag weist Apache an, diese Übereinstimmung als letzte Regel zu behandeln, so dass vor der Umschreibung keine weiteren verarbeitet werden.
Neben der Steuerung, wie der Server auf bestimmte Anforderungen reagiert, können wir auch den Browser des Besuchers steuern, z. B. das Erzwingen, dass IE Seiten mit einer bestimmten Rendering-Engine rendert. Zum Beispiel können wir das verwenden mod_headers
Modul, falls vorhanden, die Einstellung X-UA-kompatibel
Header:
Kopfsatz X-UA-kompatibel "IE = Edge"
Das Hinzufügen dieser Zeile zu einer .htaccess-Datei weist IE an, den höchsten verfügbaren Rendermodus zu verwenden. Wie HTML5-Boilerplate zeigt, können Sie auch vermeiden, diesen Header für Dateien festzulegen, für die er nicht erforderlich ist, indem Sie ein
Header ist nicht X-UA-kompatibel
Caching ist einfach einzurichten und kann das Laden Ihrer Website beschleunigen.
Caching ist einfach einzurichten und kann das Laden Ihrer Website beschleunigen. 'Nuff sagte! Durch das Festlegen eines Datums für die Weiterverfolgung von Elementen in Websites, die sich nicht oft ändern, können wir verhindern, dass der Browser bei jeder Anforderung unveränderte Ressourcen anfordert.
Wenn Sie Ihre Website über Google PageSpeed oder YSlow von Yahoo betreiben und die Meldung erhalten, dass die Ablaufzeilen für die Weiterverwendung in der Zukunft festgelegt werden, beheben Sie sie wie folgt:
ExpiresActive bei ExpiresActive bei ExpiresByType image / gif "Zugriff plus 1 Monat" ExpiresByType Image / png "Zugriff plus 1 Monat" ExpiresByType Image / jpg "Zugriff plus 1 Monat" ExpiresByType Image / jpeg "Zugriff plus 1 Monat" ExpiresByType Video / ogg "Zugriff plus 1 Monat Zugriff "ExpiresByType audio / ogg" plus 1 Monat Zugriff "ExpiresByType video / mp4" plus 1 Monat Zugriff "ExpiresByType video / webm" plus 1 Monat "
Sie können andere hinzufügen ExpiresByType
Anweisungen für alle Inhalte, die in dem von Ihnen verwendeten Leistungstool aufgeführt sind, oder für alle anderen Elemente, für die Sie die Zwischenspeicherung steuern möchten. Die erste Richtlinie, ExpiresActive am
, stellt einfach sicher, dass die Generierung von Expires-Headern eingeschaltet ist. Diese Richtlinien hängen davon ab, dass Apache die mod_expires Modul geladen.
Eine weitere Warnung, die wir in einer Leistungsüberprüfung erhalten, bezieht sich auf die Aktivierung der Komprimierung. Dies können wir auch beheben, indem Sie einfach unsere .htaccess-Datei aktualisieren:
FilterDeclare COMPRESS FilterProvider COMPRESS DEFLATE bzw. = Inhaltstyp $ text / html FilterProvider COMPRESS DEFLATE bzw. = Inhaltstyp $ text / css FilterProvider COMPRESS DEFLATE bzw. = Inhaltstyp $ text / javascript FilterChain COMPRESS FilterProtocol COMPRESS DEFLATE change = yes;
Dieses Komprimierungsschema funktioniert mit neueren Apache-Versionen (2.1+) unter Verwendung von mod_filter Modul. Es verwendet die DEFLATIEREN
Komprimierungsalgorithmus zum Komprimieren von Inhalt basierend auf seinem Antwortinhaltstyp. In diesem Fall geben wir an Text / HTML
, text / css
und Text / Javascript
(Dies sind wahrscheinlich die Dateitypen, die in PageSpeed / Yslow sowieso markiert sind.).
In diesem Beispiel beginnen wir mit dem Deklarieren des Filters, den wir verwenden möchten KOMPRIMIEREN
, Verwendung der FilterDeclare
Richtlinie. Wir listen dann die Inhaltstypen auf, für die dieser Filter verwendet werden soll. Das FilterChain
Die Anweisung weist den Server dann an, eine Filterkette auf der Basis von zu erstellen FilterProvider
Richtlinien, die wir aufgelistet haben. Das FilterProtocol
Mithilfe der Direktive können wir Optionen angeben, die auf die Filterkette angewendet werden, wenn sie ausgeführt wird. Die Optionen müssen verwendet werden change = ja
(Der Inhalt kann durch den Filter geändert werden (in diesem Fall komprimiert)) und byteranges = nein
(der Filter darf nur auf vollständige Dateien angewendet werden).
Bei älteren Apache-Versionen ist die mod_deflate Das Modul wird zur Konfiguration der DEFLATE-Komprimierung verwendet. Wir haben weniger Kontrolle darüber, wie der Inhalt in diesem Fall gefiltert wird, aber die Anweisungen sind einfacher:
SetOutputFilter DEFLATE AddOutputFilterByType DEFLATE Text / HTML-Text / CSS-Text / Javascript
In diesem Fall setzen wir den Kompressionsalgorithmus einfach mit SetOutputFilter
Direktive und geben Sie dann die Inhaltstypen an, die wir mit der komprimieren möchten AddOutputFilterByType
Richtlinie.
Normalerweise verwendet Ihr Webserver eines dieser Module, abhängig davon, welche Apache-Version verwendet wird. Im Allgemeinen werden Sie dies im Voraus wissen. Wenn Sie jedoch eine generische .htaccess-Datei erstellen, die Sie auf einer Vielzahl von Websites verwenden können oder die Sie mit anderen Personen teilen können, wissen Sie nicht, welche Module verwendet werden. Möglicherweise möchten Sie beide der oben genannten Code-Blöcke verwenden
Anweisungen, damit das richtige Modul verwendet wird und der Server keinen Fehler 500 ausgibt, wenn versucht wird, ein Modul zu konfigurieren, das nicht enthalten ist. Beachten Sie, dass Hosts, die eine große Anzahl von Sites von einer einzigen Box aus ausführen, relativ häufig vorgehen, um die Komprimierung zu deaktivieren, da die Komprimierung auf dem Server nur geringfügig von der CPU betroffen ist.
Wir haben uns einige der häufigsten Verwendungen für .htaccess-Dateien angesehen und untersucht, wie wir bestimmte Aufgaben lösen können, die als Website-Ersteller / Betreuer von besonderem Interesse für uns sind. Wie bei jedem einführenden Lernprogramm dieser Art werden die behandelten Themen als Einführungen in ein bestimmtes Thema dargestellt. Es gibt viele andere Optionen und Konfigurationen, als wir uns ansehen konnten. Ich würde daher dringend empfehlen, weiterführende Informationen zu jedem Thema zu lesen, das von besonderem Interesse ist.