Was ist eine .htaccess-Datei und wofür brauchst du sie?

Beschäftigst du dich mit WordPress wirst du früher oder später über den Begriff “htaccess-Datei” stolpern. Denn um komplexere Einstellungen vorzunehmen sind Änderungen in dieser Datei notwendig.

Aber was ist jetzt diese .htaccess-Datei, wozu ist sie notwendig und was kannst du damit machen?
Was ist eine .htaccess-Datei und wofür brauchst du sie?

Grundlagen: wie funktioniert ein Webserver?

Bevor ich dir zeige, was eine .htaccess-Datei ist, möchte ich dir noch kurz erklären, wie WordPress überhaupt funktioniert. Dazu ein Bild:

Wie funktioniert ein Webserver - Rechenzentrum - WordPress

Dein Hosting-Provider betreibt ein Rechenzentrum für dich und andere Kunden; in diesem Rechenzentrum befinden sich mehrere Server.

Einen Server kannst du dir wie einen Computer vorstellen, der ohne Tastatur, Maus und Bildschirm betrieben wird.

Auf diesen Servern läuft ein Webserver. Das ist eine spezielle Software, welche Dateien an deinen Browser sendet und Programme, wie z.B. WordPress ausführen kann.

Dieser Webserver ist in den meisten Fällen der Apache httpd Server. Das ist ein mächtige Software, mit sehr vielen Einstellungsmöglichkeiten. Diese werden von deinem Hosting-Provider für dich vorgenommen.

Mit .htaccess-Dateien kannst du diese Konfiguration vom Webserver anpassen.

Du kannst zum Beispiel den Zugriff zu bestimmten Teilen deiner Website sperren (mehr dazu weiter unten), schöne, SEO-freundliche URLs im WordPress einstellen oder die Konfiguration von PHP ändern.

Warum ein . am Anfang?

Der Apache httpd Server kommt ursprünglich aus der Linux-Welt, und als Betriebssystem verwendet dein Hosting-Provider vermutlich auch Linux. Und unter Linux beginnen versteckte Dateien mit einem Punkt.

Mit “versteckt” ist gemeint, dass diese Dateien im normalen Browser nicht sichtbar sind – weil sie eben nur für spezielle Zwecke benötigt werden.

So bearbeitest du die .htaccess-Datei

Um die .htaccess-Datei bearbeiten zu können, benötigst du Zugang via FTP zum Server. Ich verwende sehr gerne das Programm Cyberduck. Die Software ist kostenlos und erlaubt dir mit FTP und auch dem sicheren SSH auf den Server zuzugreifen.

Das ganze sieht dann so aus:

Cyberduck und WordPress - .htaccess Datei hervorgehoben

Wie du schon siehst ist die .htaccess-Datei grau dargestellt – weil sie eben “versteckt” ist.

Ein Rechtsklick und “Bearbeiten mit…” sowie die Auswahl des entsprechenden Programms (oder der Shortcut Cmd+k) erlauben dir die .htaccess-Datei zu bearbeiten.

Der Inhalt der Datei ist reiner Text und sieht bei einem Standard-WordPress so aus:

.htaccess von WordPress

Wie du vielleicht auf den ersten Blick erkennst – sehr kryptisch. Viele komische Symbole und Klammern. Aber mit ein wenig Übung machen die Inhalte dann doch Sinn.

Wichtig: erstelle auf jeden Fall ein Backup der Inhalte der Datei!

Denn wenn du dich vertippst, dann funktioniert deine WordPress-Seite nicht mehr.

Dazu reicht schon eine falsche Klammer und du siehst nur mehr eine weiße Seite oder bekommst eine Fehlermeldung “Error 500” vom Browser.

Daher: Backup anlegen!

So, jetzt aber zum spannenden Teil, nämlich was du mit der .htaccess-Datei alles anstellen kannst :-)

Weiterleitungen mit mod_rewrite und .htaccess

Du kennst das vielleicht – du hast einen Artikel im WordPress umgeschrieben und auch den Permalink vom Artikel geändert. Nur jetzt funktionieren die Links, welche du im Facebook geteilt hast, nicht mehr.

In diesem Fall kannst du dir mit einer Weiterleitung helfen – von der alten URL auf die neue URL, unter der dein Artikel jetzt erreichbar ist.

Eine der Möglichkeiten so eine Weiterleitung einzurichten ist durch folgenden Eintrag in der .htaccess-Datei:

RewriteEngine On
RewriteBase /
RewriteRule ^alter-permalink https://%{HTTP_HOST}/neuer-permalink [R=308,L]

Die Zahl hinter dem “R=“ gibt an, ob die Umleitung dauerhaft (308) oder nur übergangsweise (307) sein soll. (Für alte Hasen mag 307 und 308 “komisch” aussehen, aber dies sind die offiziellen Nachfolger von 301 und 302!).

Das ist nur ein sehr einfaches Beispiel, es gibt noch viel mehr Möglichkeiten, die ich in einem getrennten Blog-Beitrag beschreiben werde. Bis dahin findest du alle Details in der offiziellen Dokumentation von mod_rewrite.

SSL erzwingen mit mod_rewrite und .htaccess

Deine Website wurde im Browser als “nicht sicher” angezeigt und du hast daraufhin ein SSL-Zertifikat installiert? Super, aber dann solltest du noch sicherstellen, dass deine Website auch nur mehr über https:// erreichbar ist.

Das geht mit dem folgenden Eintrag in der .htaccess-Datei:

# SSL erzwingen - Standard-Setup
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=308]

Sollte daraufhin deine Seite nicht mehr angezeigt werden und in einem Redirect-Loop hängen (das sagt dir dein Browser), dann verwende diese Einträge:

# SSL erzwingen - mit Reverse Proxy
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{SERVER_NAME}/%{REQUEST_URI} [L,R=308]

Erzwinge ein www. am Anfang deiner Domain – oder auch nicht

Manche Seiten haben ein www am Anfang, andere nicht. Wie du dich entscheidest, ist im Endeffekt egal, Hauptsache du bleibst bei einer Form.Wichtig ist nur, dass du deine Seite entsprechend umleitest. Also entweder von www.deine-domain.com auf deine-domain.com oder umgekehrt. Sonst hast du ein Problem mit den Suchmaschinen (SEO).
# Umleitung von domain.com auf www.domain.com
RewriteCond %{HTTP_HOST} ^domain.com
RewriteRule ^(.*)$ https://www.domain.com/$0 [R=308,L]
# Umleitung von www.domain.com auf domain.com
RewriteCond %{HTTP_HOST} ^www.domain.com
RewriteRule ^(.*)$ https://domain.com/$0 [R=308,L]

PHP konfigurieren in der .htaccess-Datei

WordPress ist in PHP programmiert, und dieses PHP kann in der “php.ini” konfiguriert werden. Das Problem? Du hast üblicherweise keinen Zugriff auf diese php.ini-Datei.

Bei manchen Hostern kannst du ein paar Einstellungen in deren Administrations-Oberfläche ändern (zum Beispiel die PHP-Version). Bei anderen Hostern geht dies über Einträge in der .htaccess-Datei. Willst du also die PHP-Version ändern, dann frage bei deinem Hoster nach, wie das geht.

Bei manchen Hostern kannst du die Einstellungen von PHP in der .htaccess vornehmen, das sieht dann zum Beispiel so aus:

php_flag display_errors off
php_flag register_globals off
php_flag max_execution_time 180
php_flag max_input_time 180

Hier findest du die komplette Liste aller möglichen Einstellungen – Achtung, nicht alle Einträge können verändert werden!

PHP-Fehler loggen mit einem Eintrag in der .htaccess-Datei

Es gibt einen netten Trick, um eventuelle PHP-Fehler zu erkennen, ohne dass die Besucher der Seite das mitbekommen. Das geht mit den folgenden zwei Zeilen, der Pfad zur Log-Datei ist entsprechend anzupassen:

php_flag log_errors on
php_value error_log /www/htdocs/…/error_log.txt

Zugriff sperren mit .htaccess

Aus Sicherheitsgründen kann es erforderlich sein, dass du den Zugriff zu gewissen Ordnern sperrst. Damit hast du nur mehr mit FTP oder via SSH Zugang zu diesen Ordnern oder Dateien.

Um zum Beispiel den Zugriff zur wp-config.php-Datei zu sperren kannst du diese Zeilen verwenden:

<files wp-config.php>
Order allow,deny
Deny from all
</files>

Zugriff auf XML-RPC blockieren mit .htaccess

Genau den selben Mechanismus kannst du anwenden, um den Zugriff auf die xmlrpc.php zu sperren. Diese Datei erlaubt externen Applikationen (zum Beispiel der WordPress-App) auf WordPress zuzugreifen.

Das Problem dabei? Kaum jemand verwendet externe Apps, die Datei wird aber sehr gerne für Angriffe auf WordPress verwendet.

Deaktiviere daher den Zugriff auf die XML-RPC-Schnittstellen, indem du diesen Code in deine .htaccess-Datei einfügst:

# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

Die Ladezeit verbessern mit der .htaccess-Datei

Falls das nicht schon dein Hoster für dich erledigt, kannst du mit entsprechenden Einträgen in der .htaccess-Datei die Ladezeit deiner Website verbessern, indem du

  • das clientseitige Caching aktivierst. Dateien werden dann nicht mehr, bei jedem Aufruf einer neuen Seite, wiederholt vom Server geladen.
    Weniger Dateien, die übertragen werden = höhere Geschwindigkeit.
  • die gzip-Komprimierung aktivierst. Die Dateien werden dann vor der Übertragung komprimiert.
    Weniger Daten, die übertragen werden müssen = höhere Geschwindigkeit.

Das Setup für Browser-Caching sowie Komprimierung ist aber recht komplex, daher empfehle ich dir dafür ein WordPress-Plugin wie z.B. den w3 Total Cache zu verwenden. Dieses Plugin erweitert automatisch und korrekt deine .htaccess-Datei mit den entsprechenden Einträgen.

Da geht noch mehr!

Pfuh, das war jetzt ganz schön viel Info. Dabei wäre noch so viel zu sagen – du kannst zum Beispiel nicht nur einzelne Dateien sperren oder von einer URL weiterleiten, sondern auch immer sogenannte “Reguläre Ausdrücke” verwenden. Damit lassen sich echt spannende, aber auch komplizierte Lösungen erstellen.

Aber wie sagte schon Brian Moore:

“Despite the tons of examples and docs, mod_rewrite is voodoo. Damned cool voodoo, but still voodoo.”

Dieser Artikel hat daher nur an der Oberfläche gekratzt – weitere, detaillierte werden folgen.

Lass mich wissen, wofür du die .htaccess-Datei verwendest oder an welchem Problem du dir schon einmal die Zähne ausgebissen hast.

Lass uns einfach Websites bauen,

Lies weiter

0 Kommentare

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Die Daten werden wie in der Datenschutzerklärung angegeben verarbeitet und gespeichert.

DI (FH) Michael Baierl - einfach Websites für Selbstständige

Hi! Ich bin Michael, Web-Developer aus Wien.

Du findest hier Tipps & Tricks rund um deine Selbstständigkeit sowie deine Website.

Lass uns einfach Websites bauen!