Dumme .htaccess-Tricks

Dumme .htaccess-Tricks

Dieser Artikel, Dumme .htaccess-Tricks, deckt so ziemlich jeden .htaccess-„Trick“ im Netz ab und ist mit Abstand die beliebteste Ressource der Website. Ich hoffe, dass Sie es nützlich finden, und auf jeden Fall danke ich Ihnen für Ihren Besuch :)


.htaccess-Definition

Die Apache-Serversoftware stellt eine verteilte Konfiguration (d. h. auf Verzeichnisebene) über Hypertext Access-Dateien bereit. Diese .htaccess-Dateien ermöglichen die lokalisierte Feinabstimmung der universellen Systemkonfigurationsanweisungen von Apache, die in der Hauptkonfigurationsdatei von Apache definiert sind. Die lokalisierten .htaccess-Anweisungen müssen innerhalb einer Datei namens .htaccess ausgeführt werden. Der Benutzer muss über die entsprechenden Dateiberechtigungen verfügen, um auf die .htaccess-Datei zuzugreifen und/oder sie zu bearbeiten.

Darüber hinaus sollten .htaccess-Dateiberechtigungen niemals weltweiten Schreibzugriff zulassen – eine sichere Berechtigungseinstellung ist „644“, die universellen Lesezugriff und Schreibzugriff nur für Benutzer ermöglicht. Schließlich gelten .htaccess-Regeln für das übergeordnete Verzeichnis und alle Unterverzeichnisse. Um also Konfigurationsregeln auf eine ganze Website anzuwenden, platzieren Sie die .htaccess-Datei im Stammverzeichnis der Website.

.htaccess-Code kommentieren 

Kommentare sind wichtig, um die Kontrolle über alle beteiligten Teile des Codes zu behalten. Kommentare im .htaccess-Code werden zeilenweise erstellt, wobei jede Kommentarzeile mit einem Nummernzeichen # beginnt. Daher erfordern Kommentare, die sich über mehrere Zeilen in der .htaccess-Datei erstrecken, mehrere Nummernzeichen.

Darüber hinaus ist es aufgrund der extrem volatilen Natur von .htaccess-Voodoo ratsam, nur alphanumerische Zeichen (und vielleicht ein paar Bindestriche und Unterstriche) in .htaccess-Kommentare aufzunehmen. Weitere Informationen finden Sie in meinem Tutorial zum Kommentieren Ihres .htaccess-Codes.

Wichtige Hinweise für .htaccess Noobs

Als Konfigurationsdatei ist .htaccess sehr mächtig. Selbst der kleinste Syntaxfehler (wie ein fehlendes Leerzeichen) kann zu schwerwiegenden Serverstörungen führen. Daher ist es wichtig, Sicherungskopien von allem zu erstellen, was mit Ihrer Website zu tun hat (einschließlich aller ursprünglichen .htaccess-Dateien), bevor Sie mit Ihrer/Ihren Hypertext Access-Datei(en) arbeiten. Es ist auch wichtig, Ihre gesamte Website gründlich zu überprüfen, nachdem Sie Änderungen an Ihrer .htaccess-Datei vorgenommen haben. Wenn Fehler oder andere Probleme auftreten, verwenden Sie Ihre Sicherungen sofort, um die ursprüngliche Funktionalität wiederherzustellen.

Leistungsprobleme

.htaccess-Anweisungen bieten eine Konfiguration auf Verzeichnisebene, ohne dass Zugriff auf die Konfigurationsdatei des Hauptservers von Apache (httpd.conf) erforderlich ist. Aus Leistungs- und Sicherheitsgründen sollte jedoch nach Möglichkeit immer die Hauptkonfigurationsdatei für Serveranweisungen verwendet werden.

Wenn beispielsweise ein Server für die Verarbeitung von .htaccess-Anweisungen konfiguriert ist, muss Apache jedes Verzeichnis innerhalb der Domäne durchsuchen und alle .htaccess-Dateien bei jeder Dokumentanforderung laden. Dies führt zu einer erhöhten Seitenverarbeitungszeit und verringert somit die Leistung. Ein solcher Leistungseinbruch kann für Websites mit geringem Datenverkehr unbemerkt bleiben, wird jedoch für populärere Websites zu einem ernsteren Problem.

Daher sollten .htaccess-Dateien nur verwendet werden, wenn auf die Konfigurationsdatei des Hauptservers nicht zugegriffen werden kann. Weitere Informationen finden Sie im Abschnitt „Leistungstricks“ dieses Artikels.

Regex-Zeichendefinitionen für .htaccess

#
            Das # weist den Server an, die Zeile zu ignorieren. Wird zum Einfügen von Kommentaren verwendet. Jede Kommentarzeile benötigt eine eigene #. Beim Einfügen von Kommentaren empfiehlt es sich, nur Buchstaben, Zahlen, Bindestriche und Unterstriche zu verwenden. Diese Vorgehensweise hilft dabei, potenzielle Server-Parsing-Fehler zu eliminieren/vermeiden.

[F]
Forbidden: Weist den Server an, eine 403 „Forbidden“-Antwort an den Client zurückzugeben.
[L]
Letzte Regel: Weist den Server an, das Umschreiben zu beenden, nachdem die vorhergehende Anweisung verarbeitet wurde.
[N]
Next: Weist Apache Server an, die Umschreibungsregel erneut auszuführen, bis alle Umschreibungsanweisungen erreicht wurden.
[G]
Gone: Weist den Server an, eine 410 „Gone“-Antwort zu liefern (was darauf hinweist, dass die Ressource nicht mehr existiert)
[P]
Proxy: Weist den Server an, Anfragen von mod_proxy zu verarbeiten.
[C]
Chain: Weist den Server an, die aktuelle Regel mit der vorherigen Regel zu verketten.
[R]
Redirect: Weist Apache an, eine Umleitung auszugeben, wodurch der Client den neuen Inhalt anfordert.
[NC]
No Case: Definiert alle zugehörigen Argumente als case-insensitive. Das heißt, „NC“ = „Kein Fall“.
[PT]
Pass Through: Weist mod_rewrite an, die umgeschriebene URL zur weiteren Verarbeitung an Apache zurückzugeben.
[OR]
Or: Gibt ein logisches „Oder“ an, das zwei Ausdrücke so miteinander verbindet, dass einer der beiden, wenn er sich als wahr erweist, dazu führt, dass die zugehörige Regel angewendet wird.
[NE]
No Escape: Weist den Server an, die Ausgabe ohne Escape-Zeichen zu parsen.
[NS]
No Subrequest: Weist den Server an, die Anweisung zu überspringen, wenn es sich um eine interne Subanforderung handelt.
[QSA]
Append Query String: Weist den Server an, die Abfragezeichenfolge am Ende des Ausdrucks (URL) hinzuzufügen.
[S=x]
Skip: Weist den Server an, die nächste „x“ Anzahl von Regeln zu überspringen, wenn eine Übereinstimmung erkannt wird.
[E=variable:value]
Environmental Variable: Weist den Server an, die Umgebungsvariable „Variable“ auf „Wert“ zu setzen.
[T=MIME-type]
Mime Type: Deklariert den Mime-Typ der Zielressource.
[]
Gibt eine Zeichenklasse an, in der jedes Zeichen innerhalb der Klammern eine Übereinstimmung darstellt. Beispielsweise entspricht [xyz] entweder einem „x“, „y“ oder „z“.
[]+
Zeichenklasse, in der jede Kombination von Elementen innerhalb der Klammern eine Übereinstimmung darstellt. Beispielsweise entspricht [xyz]+ einer beliebigen Anzahl von „x“, „y“, „z“ oder einer beliebigen Kombination dieser Zeichen.
[^]
Gibt not innerhalb einer Zeichenklasse an. Beispielsweise entspricht [^xyz] jedem Zeichen, das weder „x“, „y“ noch „z“ ist.
[a-z]
Ein Bindestrich (-) zwischen zwei Zeichen innerhalb einer Zeichenklasse ([]) gibt den Zeichenbereich zwischen ihnen an. Beispielsweise entspricht [a-zA-Z] allen Klein- und Großbuchstaben von „a“ bis „z“.
a{n}
Gibt eine genaue Zahl, n, des vorangehenden Zeichens an. Beispielsweise stimmt x{3} genau dreimal mit „x“ überein.
a{n,}
Gibt n oder mehr der vorhergehenden Zeichen an. Zum Beispiel stimmt x{3,} dreimal oder öfter mit „x“ überein.
a{n,m}
Gibt einen Zahlenbereich zwischen n und m des vorhergehenden Zeichens an. Beispiel: x{3,7} stimmt mit „x“ drei-, vier-, fünf-, sechs- oder siebenmal überein.
()
Wird verwendet, um Zeichen zu gruppieren, wodurch sie als eine Einheit betrachtet werden. Beispiel: (mobile2blogger)?seo wird mit „seo“ übereinstimmen, mit oder ohne dem Präfix „mobile2blogger“.
^
Bezeichnet den Anfang einer Regex-Testzeichenfolge (regex = regulärer Ausdruck). Das heißt, beginnen Sie das Argument mit dem vorangehenden Zeichen.
$
Bezeichnet das Ende einer Regex-Testzeichenfolge (regex = regulärer Ausdruck). Das heißt, beenden Sie das Argument mit dem vorherigen Zeichen.
?
Deklariert das vorangestellte Zeichen als optional. Mensa zum Beispiel? entspricht „mensa“ oder „mensas“, während men(sa)? entspricht entweder „men“ oder „mensa“. Das heißt, x? stimmt mit „x“ null oder einmal überein.
!
Deklariert Negation. Beispielsweise passt !string auf alles außer string.
.
Ein dot (oder Punkt) zeigt ein beliebiges einzelnes Zeichen an.
Weist an, die URL „nicht“ neu zu schreiben, wie in (.*) - [F].
+
Entspricht einem oder mehreren der vorhergehenden Zeichen. Beispielsweise stimmt G+ einmal oder mehrmals mit „G“ überein.
*
Entspricht keinem oder mehreren der vorhergehenden Zeichen. Beispielsweise können Sie .* als Platzhalter verwenden, um alles (oder nichts) abzugleichen.
|
Deklariert einen logischen „oder“-Operator. Beispiel: (x|y) stimmt mit „x“ oder „y“ überein.
\
Maskiert Sonderzeichen ( ^ $ ! . * | ). Verwenden Sie beispielsweise \. um einen wörtlichen Punkt anzuzeigen/zu entkommen.
\.
Gibt einen wörtlichen Punkt (escaped) an.
/*
Null oder mehr Schrägstriche.
.*
Null oder mehr beliebige Zeichen.
^$
Definiert eine leere Zeichenfolge.
.*
Das Standardmuster zum Abgleichen von allem (oder nichts).
[^/.]
Definiert ein Zeichen, das weder ein Schrägstrich noch ein Punkt ist.
[^/.]+
Definiert eine beliebige Anzahl von Zeichen, die weder Schrägstrich noch Punkt enthalten.
http://
Dies ist eine wörtliche Anweisung – in diesem Fall die wörtliche Zeichenfolge, http://.
^domain.*
Definiert einen String, der mit dem Begriff „Domain“ beginnt, dem dann beliebig viele Zeichen vorangestellt werden können.
^domain\.com$
Definiert die genaue Zeichenfolge, “domain.com”.
-d
Testet, ob string ein vorhandenes Verzeichnis ist.
-f
Testet, ob string eine existierende Datei ist.
-s
Testet, ob die Datei in der Testzeichenfolge einen Wert ungleich Null hat.

Umleitungs-Header-Codes 

301 – Dauerhaft verschoben

302 – Vorübergehend verschoben

403 Verboten

404 Nicht gefunden

410 – Weg

Wesentliches zu .htaccess

Kommentieren Sie Ihre .htaccess-Dateien

Es ist eine ausgezeichnete Idee, Ihre .htaccess-Dateien konsistent und logisch zu kommentieren. Jede Zeile in einer .htaccess-Datei, die mit dem Nummernzeichen ( # ) beginnt, weist den Server an, sie zu ignorieren. Mehrere Zeilen erfordern mehrere Pfund und verwenden nur  Buchstaben/Zahlen/Bindestrich/Unterstrich:

# Dies ist ein Kommentar
# Jede Zeile muss ein eigenes Nummernzeichen haben
# Verwenden Sie nur alphanumerische Zeichen zusammen mit Bindestrichen - und Unterstrichen _

Grundlegendes Umschreiben aktivieren ^

Bei bestimmten Servern ist mod_rewrite (grundlegendes Umschreiben) möglicherweise nicht standardmäßig aktiviert. Um sicherzustellen, dass mod_rewrite auf Ihrer gesamten Website aktiviert ist, fügen Sie die folgende Zeile einmal zur .htaccess-Stammdatei Ihrer Website hinzu (befindet sich vor allen Rewrite-Regeln):

# mod_rewrite aktivieren
RewriteEngine on

Symbolische Links aktivieren 

Aktivieren Sie symbolische Links (Symlinks), indem Sie die folgende Anweisung zur .htaccess-Datei des Zielverzeichnisses hinzufügen. Hinweis: Damit die FollowSymLinks-Direktive funktioniert, müssen AllowOverride Options-Privilegien in der Serverkonfigurationsdatei aktiviert werden.

# Symbolische Links aktivieren
Options +SymLinks folgen

Aktivieren Sie AllowOverride 

Für Anweisungen, die AllowOverride erfordern, um zu funktionieren, wie z. B. FollowSymLinks (siehe vorheriger Abschnitt), muss die folgende Anweisung zur Serverkonfigurationsdatei hinzugefügt werden. Aus Leistungsgründen ist es wichtig, AllowOverride nur in dem bestimmten Verzeichnis oder den Verzeichnissen zu aktivieren, in denen es erforderlich ist. Im folgenden Codeabschnitt aktivieren wir die AllowOverride-Berechtigungen nur im angegebenen Verzeichnis: 

/www/replace/this/with/actual/directory

So aktivieren Sie AllowOverride für dieses Verzeichnis:
 #Allowoverride-Privilegien aktivieren

<Directory /www/replace/this/with/actual/directory>
AllowOverride Options
</Directory>

Benennen Sie die .htaccess-Datei um 

Nicht jedes System unterstützt das Nur-Erweiterungsformat von .htaccess-Dateien. Glücklicherweise können Sie sie beliebig umbenennen, vorausgesetzt, der Name ist auf Ihrem System gültig. Hinweis: Diese Direktive muss in die serverweite Konfigurationsdatei eingefügt werden, sonst funktioniert sie nicht: 

# .htaccess-Dateien umbenennen
AccessFileName ht.access

Hinweis: Wenn Sie Ihre .htaccess-Dateien umbenennen, denken Sie daran, alle zugehörigen Konfigurationseinstellungen zu aktualisieren. Wenn Sie beispielsweise Ihre .htaccess-Datei über FilesMatch schützen, denken Sie daran, sie über die umbenannten Dateien zu informieren:

 # umbenannte .htaccess-Dateien schützen
<FilesMatch "^ht\.">
Order deny,allow
Deny from all
</FilesMatch>

Weitere Informationen entnehmen Sie bitte dem Beitrag hier 

0 Kommentare:

Kommentar veröffentlichen