Bei der .htaccess handelt es sich um eine Konfigurationsdatei, die ein Programm bzw. Apache-Server indirekt umkonfiguriert. Direkten Zugriff auf die Hauptkonfigurationsdatei eines Webservers (httpd.conf) muss man also nicht haben, um dessen “Verhalten” zu ändern.
Wichtig: Die Anweisungen der .htaccess beziehen sich immer auf das jeweilige Verzeichnis, in dem sich die Datei befindet. Damit die Einstellungen global wirken, sollte sich die Datei also immer im Hauptverzeichnis befinden. Kling alles ziemlich technisch? Stimmt, doch es macht durchaus Sinn, sich mit dem Thema auseinanderzusetzen. Denn spezielle Codes für die .htaccess können WordPress und andere Seiten schneller und sicherer machen.
Bitte unterstützt meine Arbeit
Wo befindet sich die WordPress .htaccess?
Die .htaccess Datei befindet sich bei WordPress im Root-Verzeichnis – dem Hauptverzeichnis, auf dem eure Domain beim Webhoster liegt. Zugriff auf dieses Verzeichnis und damit auf die .htaccess erhaltet ihr mit einem FTP-Programm (z. B. FileZilla).
WordPress .htaccess manuell erstellen
Eine .htaccess Datei erstellt WordPress spätestens dann, sobald ihr die Permalink-Einstellungen ändert. Falls die WordPress .htaccess fehlt, könnte es also daran liegen, dass ihr an dieser Stelle noch nichts geändert habt. Je nach Server-Konfiguration kann es jedoch sein, dass das automatisierte Erstellen von Dateien nicht möglich ist. WordPress teilt euch dann beim Abspeichern neuer Permalinkeinstellungen mit, dass keine .htaccess Datei erstellt werden kann. In diesem Fall müsst ihr die Datei manuell erstellen.
Schritt 1: Texteditor öffnen
Öffnet dafür einen Texteditor und benennt das Dokument z. B. als a.htaccess – leere Dateien lassen sich mit dem Editor leider nicht erstellen. Wichtig: Nutzt auf keinen Fall „Microsoft Word“ oder etwas Vergleichbares, da solche Programme zusätzliche Formatierungen einfügen.
Schritt 2: Datei auf Server hochladen
Als nächstes müsst ihr die –> leere <– .htaccess Datei via FTP in eurem Hauptverzeichnis hochladen. Das ist der Ordner, in dem sich auch die wp-config.php befindet.
Schritt 3: Datei umbenennen
Weil die Datei ja noch a.htaccess heißt (oder wie auch immer ihr sie genannt habt), müsst ihr diese noch in „.htaccess“ (ohne Anführungsstriche natürlich) umbenennen.
Schritt 4: Rechte zuweisen
Weil die Datei leer ist, muss WordPress die .htaccess eigenständig mit Code befüllen können. Viele Plugins benötigen beispielsweise .htaccess Schreibrechte. Dafür müssen lediglich die Dateiattribute angepasst werden. Klickt hierfür in eurem FTP-Programm mit der rechten Maustaste auf die .htaccess Datei und wählt den Menüpunkt „Dateiberechtigungen“ aus. Dort müsst ihr dann das Beschreiben der .htaccess zulassen.
Wichtig: Keine Änderungen ohne BackUp vornehmen!
Bevor ihr Änderungen an der .htaccess Datei in WordPress vornehmt, solltet ihr ein .htaccess Backup erstellen. Falls ihr aus Versehen etwas “kaputt” macht, könnt ihr dann einfach die ursprüngliche Datei wieder hochladen /aktivieren und die Änderungen rückgängig machen. Das Backup könnt ihr ganz einfach durchführen, indem ihr die aktuelle .htaccess umbenennt und eine neue WordPress .htaccess erstellt.
Bevor ihr Änderungen an der .htaccess Datei in WordPress vornehmt, solltet ihr ein .htaccess Backup erstellen. Falls ihr aus Versehen etwas “kaputt” macht, könnt ihr dann einfach die ursprüngliche Datei wieder hochladen /aktivieren und die Änderungen rückgängig machen. Das Backup könnt ihr ganz einfach durchführen, indem ihr die aktuelle .htaccess umbenennt und eine neue WordPress .htaccess erstellt.
WordPress .htaccess gelöscht: was tun?
Tipp: Solltet ihr eure WordPress .htaccess gelöscht haben, könnt ihr den folgenden Code einfügen, damit alles normal funktioniert.
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Interessante Codezeilen für die .htaccess
Was anstelle bzw. zusätzlich zu den Standard-Codezeilen in eure .htaccess gehört, ist am Ende des Tages euch überlassen. Fakt ist: Sowohl die Sicherheit als auch die Performance lassen sich durch zusätzlichen Code für die .htaccess verbessern. Zu viel des Guten kann die Performance allerdings wieder schwächen. Ihr solltet also abwägen, was ihr wirklich braucht und was nicht. Dazu aber später mehr.
Adminbereich nur für bestimmte IP-Adressen sichtbar machen
# wp-admin nur für gewisse IPs freischalten
order deny,allow
deny from all
allow from IPAdresse1
allow from IPAdresse2
Zugriff auf WP-config.php für alle User sperren
# Zugriff auf wp-config unterbinden
<files wp-config.php>
order allow,deny
deny from all
</files>
Gzip Komprimierung aktivieren
# GZIP Komprimierung
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
</IfModule>
Browser Caching aktivieren
# Browser Caching
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
Image-Hotlinking unterbinden
# Image Hotlinking verhindern
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?eureseite.de [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://deinbild.jpg [NC,R,L]
301-Weiterleitung / Redirect einrichten
# 301 Weiterleitungen einrichten
Redirect 301 /alteseite.html http://neueseite.de/neueurl
Redirect 301 / http://neueseite.de/
Bestimmte Nutzer über deren IP-Adresse ausschließen
# Nutzer via IP ausschließen
<Limit GET POST>
order allow,deny
deny from XXX.XXX.XX.X
deny from XXX.XXX.XX.X
allow from all
</Limit>
Die perfekte WordPress .htaccess
Während neuer Code in der .htaccess WordPress schneller machen kann, kann zu viel Code das genaue Gegenteil bewirken. Im Endeffekt ist das wie bei Erweiterung, denn auch Caching Plugins und andere Helferlein arbeiten (teilweise) über Codezeilen in der .htaccess. Im Laufe Jahre habe ich verschiedenste Konfigurationen der .htaccess auf Herz und Nieren getestet. Herausgekommen ist die (meiner Meinung nach) perfekte WordPress .htaccess, die sozusagen den “Sweet Spot” in puncto Performance und Sicherheit darstellt.
Kein unnötiger Ballast für beste Performance
Unsere perfekte .htaccess für WordPress enthält keinerlei Ballast mehr, keine überflüssigen Zeilen. Alle wirklich wichtigen Punkte und Befehle sind jedoch weiterhin enthalten. So bleibt die Datei schön klein, angenehm schlank und natürlich extrem schnell. Die ultimative WordPress .htaccess cached Grafiken, was für enorme Performance sorgt, sie komprimiert Seiten mit Gzip, was die Größe pro Seite um bis zu 80 Prozent reduzieren kann, und verbietet beispielsweise das Verlinken von Bildern auf fremden Websites.
Ersetzt den Code innerhalb eurer Standard .htaccess durch folgende Zeilen:
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
</IfModule>
<IfModule mod_headers.c>
Header append Cache-Control "public"
Header append Vary Accept-Encoding
Header set Connection keep-alive
Header unset ETag
FileETag None
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access 60 seconds"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/ico "access plus 1 month"
ExpiresByType text/css "access 1 month"
ExpiresByType text/javascript "access 1 month"
ExpiresByType application/javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} \.(jpg|jpeg|png|gif|ico|css|js)$ [NC]
RewriteCond %{HTTP_REFERER} !^https?://([^.]+\.)?painkiller-tech\. [NC]
RewriteCond %{HTTP_REFERER} !^https?://([^.]+\.)?painkiller-tech\. [NC]
RewriteRule \.(jpg|jpeg|png|gif|ico|css|js)$ - [F,NC,L]
</ifModule>
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Hinweis #1: In der WordPress .htaccess kommt Code vor, in dem eine URL eingetragen werden muss. im Beispiel wurde dort „painkiller-tech“ eingetragen. Diese Stellen müsst ihr natürlich entsprechend abändern und eure eigene URL hinzufügen, damit der Code korrekt funktioniert.
Hinweis #2: Für Webfonts, die auf dem eigenen Server liegen, muss der Code eventuell noch erweitert werden.