DrĂŒcke „Enter”, um zum Inhalt zu springen.

htaccess erstellen & konfigurieren – Eine Anleitung

Dan 0

In diesem Artikel wird es technischer. Wir werden die gĂ€ngigsten .htaccess Themen in einem Artikel zusammenfassen. Leider findet man kaum eine kompakte aber ausfĂŒhrliche sowie aktuelle Liste zu diesem Thema. Wir werden das Ă€ndern 😉

Aber wozu dient eine .htaccess Konfigurationsdatei? In dieser Datei werden Anweisungen zur Konfiguration fĂŒr den Server hinterlegt und damit verbundene Regeln festgelegt. Zum Beispiel speichert WordPress Anweisungen in der .htaccess die fĂŒr die Ausgabe der URL-Struktur zustĂ€ndig sind. Der Webserver erfĂ€hrt, wie er die Verzeichnisstruktur ausgeben soll. Das sind so genannte Redirects. Aber auch fĂŒr die Sicherheit und die schnelle Ladezeit deiner Website gibt es EintrĂ€ge in der .htaccess Datei.

An den Anfang jeder .htaccess Datei muss die folgende Zeile. Ohne diese lÀuft nichts. WordPress bringt das direkt beim Standardeintrag mit. Dazu erfÀhrst du gleich mehr.

RewriteEngine On

Erster Schritt: Backup anlegen!

Wie bei allen Aktionen die du am Server beziehungsweise an deiner Webseite vollziehst, du legst vorher ein Backup an. 🙂 In unserem Fall reicht ein Backup der .htaccess. So kannst du mit der Originaldatei jederzeit den ursprĂŒnglichen Zustand wieder herstellen und deine Seite bleibt intakt.

Zudem hilft es die und dem potentiellen Verwender, wenn die eingefĂŒgten Konfigurationsanweisungen kommentiert werden. Das geht sehr einfach in dem du ĂŒber dem Code eine Zeile mit

# Hier kommt mein Kommentar zum Code

einfĂŒgst. In unseren folgenden Beispielcodes ist diese Zeile schon enthalten, damit du den Überblick behĂ€ltst.

Ich sehe keine .htaccess-Datei in meinem FTP-Programm

In den meisten FĂ€llen ist dann gar keine .htaccess auf dem Webserver vorhanden. Andernfalls blendet das FTP-Programm die Datei auf dem Server aus, da sie mit einem Punkt startet. Beides lĂ€sst sich simple lösen 😉

Bedenke: Nur Webserver die NCSA kompatibel sind kennen das Konzept der .htaccess Dateien. Der Vorteil dabei, die am weitesten verbreitete Variante des Apache Webservers ist kompatibel.

Du kannst in den Einstellungen deines FTP-Programms die Anzeige von „versteckten Dateien“ erzwingen. Meist geht das sehr einfach in den Einstellungen. Am Beispiel von FileZilla kannst du das im MenĂŒ unter „Server“ einstellen.

Wenn keine .htaccess vorhanden ist, leg eine Textdatei (txt) an und lade diese per FTP auf deinen Server. Dort benennst du deine Textdatei in .htaccess um.

Wie bearbeite ich die Datei?

Mit jedem gĂ€ngigen Texteditor sind Änderungen an der Datei möglich.

Komfortabler als der Standard-Editor ist unter Windows: Notepad++.

Auf dem Mac kannst du die Datei einfach mit Textedit bearbeiten.

Beim Speichern kann es mitunter zu Schwierigkeiten kommen. Bei Notepad++ beispielsweise solltest du bei der Auswahl des Dateityp auf „alle Typen“ umschalten. Dann lĂ€sst sich die Datei ohne Endung speichern.

Zum ÜberprĂŒfen kannst du einen Rechtsklick auf die Datei vollfĂŒhren, hier klickst du auf Eigenschaften und besuchst den Reiter „Allgemein“. An dieser Stelle sollte .htaccess Datei stehen und nichts anders.

 

Standardinhalt fĂŒr WordPress

Wie eingangs beschrieben, fĂŒgt WordPress selbsttĂ€tig einen Eintrag in deine .htaccess Konfiguration ein. Dieser Eintrag tt dir die Benutzung der Permalinkstruktur nach z.B. domainname/jahr/beitragsname. Sollte dieser Eintrag nicht hinterlegt sein, kannst du ihn ganz einfach in deine .htaccess Datei einfĂŒgen.

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

Bei einer WordPress Multisite Installation muss der Code z.B. anders aussehen. Mehr dazu erfÀhrst du direkt im htaccess WordPress Codex.

Korrekte Domainumleitung

Da nicht jeder Webserver bzw. die direkte Domainkonfiguration richtig rund lĂ€uft, behelfen wir uns mit einer sauberen Umleitung der Domain auf die Ziel-URL die wir nutzen möchten. In unserem Fall: https://www.domainname.de/ – Wir möchten gern generell die Domain mit SSL ansprechen und auch mit www. Sollte die Domain jetzt ĂŒber http://domainname.de aufgerufen werden, wird in einem Schritt direkt auf die richtige URL umgeleitet. Ob eure Domain bereits richtig konfiguriert ist, könnt ihr mit dem Redirect Checker prĂŒfen. Falls das nicht der Fall ist, hier unser Code fĂŒr das richtige umleiten der Domain.

# Domainumleitung mit https und www
RewriteCond %{HTTP_HOST} ^domainname.de [NC]
RewriteRule (.*) https://www.domainname.de/$1 [R=301,L]

Das Ergebnis ist also folgendes:

Eingabe: http://domainname.de ermöglicht die Ausgabe: https://www.domainname.de/ .

Eingabe: http://www.domainname.de ermöglicht ebenfalls die Ausgabe: https://www.domainname.de/.

Eingabe: https://domainname.de/ leitet korrekt auf: https://www.domainname.de/.

Interne URLs richtig umleiten (301)

Auf einer Webseite Ă€ndert sich gern mal etwas. Alte Blogposts werden gelöscht, URLs Ă€ndern sich aus verschiedenen GrĂŒnden. Aber meistens wird die richtige Umleitung von Alt auf Neu vergessen. Damit fĂŒhren Links zu alten Artikeln ins leere und auf eine 404 Seite. Aber ein neuer Inhalt ist vielleicht viel passender oder wenigstens leitet der Link dann zu einer sinnvollen Kategorie die Ă€hnliche Themen bietet. Wir handhaben so etwas meist hĂ€ndisch, ohne Plugin, und zwar so:

# Interne 301 Weiterleitungen Alt zu Neu
RedirectPermanent /mein-blogpost/ https://www.domainname.de/mein-aktueller-blogpost/

Die Eingabe von https://www.domainname.de/mein-blogpost fĂŒhrt somit zur Ausgabe: https://www.domainname.de/mein-aktueller-blogpost/.

Wem das allerdings zu kompliziert ist, fĂŒr den haben wir noch ein besonderes Schmankerl. Die Google Docs Tabelle erstellt euch eure htaccess Weiterleitungsregel. In der ersten Spalte könnt ihr die jeweilige Regel eintragen. Wir verwenden „RedirectPermanent“ und nicht „Redirect 301“ aber das ist Ansichtssache. Spalte B und C fĂŒllt ihr mit euren URLs und die htaccess Regel wird automatisch erstellt.

Externe Nutzung von Bildern vermeiden

Gern benutzen andere Webmaster Bilder von anderen Webseiten, sogar direkt verlinkt. Das nennt man dann Image Hotlinking. Leider geht das zu lasten deines Traffics und kann damit Performance und eventuell Geld kosten. Je nach Hostingpaket sind die Trafficmengen zum Teil begrenzt. Wir sperren diesen Zugriff nicht einfach nur, sondern fĂŒgen ein spezielles Bild hinzu was dann ausgegeben werden soll.

# Kein Image Hotlinking - Ersetzung mit speziellem Bild
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?domainname.de [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ https://domainname.de/hotlink.jpg [NC,R,L]

Achtung: Dieser Code kann einige RSS Reader beeintrĂ€chtigen die deine Bilder im RSS Feed auslesen. Das trifft allerdings nicht auf alle zu. ÜberprĂŒfe am besten nach dem EinfĂŒgen des Codes, ob die gĂ€ngigsten RSS Reader deine Bilder noch anzeigen oder nun das „Anti Hotlinking Image“. Du kannst natĂŒrlich ein allgemein gĂŒltiges Bild verwenden, was die Anzeige nicht beeintrĂ€chtigt.

Passwortschutz mit .htaccess/.htpasswd

Der Verzeichnisschutz/Zugriffsschutz mit .htaccess und .htpasswd kann in den meisten FĂ€llen ĂŒber die KonfigurationsoberflĂ€che beim Hoster geschehen. ABER: Nicht immer funktioniert das wie gewĂŒnscht, denn einige Hoster ĂŒberschreiben damit die eigene .htaccess. Somit sind alle deine Anpassungen weg. Wir machen das also selbst! Die .htaccess muss natĂŒrlich in dem zu Unterverzeichnis liegen.

In deiner .htaccess legst du folgende Zeilen ab:

# Ordner mit Passwortschutz
AuthName "Admin-Bereich"
AuthType Basic
AuthUserFile /pfadzur/.htpasswd
require valid-user

Jetzt mĂŒssen wir noch den Inhalt fĂŒr die .htpasswd Datei erzeugen. Am einfachsten geht das z.B. ĂŒber htpasswdgenerator.de – Wir geben den gewĂŒnschten Benutzernamen in das Tool ein und das gewĂŒnschte Passwort. VerschlĂŒsselung sollte md5 sein. Als Ergebnis bekommen wir dann in etwa so eine Zeile ausgegeben:

benutzer:$1$l\l{SWcz$gj79dl7d40HPFwGECKPJA0

Diese Zeile packen wir nun in eine leere Datei die wir dann .htpasswd nennen. Danach wird die Konfigurationsdatei auf den Server in das Stammverzeichnis unseres Webspace geladen.

Wir benutzen diese Methode gern fĂŒr den /wp-admin/ Bereich unserer Kundenwebsites auf WordPress Basis. Damit dringen potentielle Angreifer gar nicht bis zum Loginformular vor. Wir haben auch einen Beitrag zum Thema WordPress Sicherheit erstellt, in dem du mehr zum Thema erfahren kannst.

Zugriff auf bestimmte Dateien trotz Passwortschutz

Im eben von uns geschĂŒtzten Ordner befindet sich nun vielleicht eine Datei auf die aber euer Design zugreift, oder einige Plugins die ihr benutzt. Im konkreten Fall wĂ€re das die admin-ajax.php im /wp-admin/ Ordner. Wir ermöglichen also den Zugriff auf diese eine Datei, trotz Passwortschutz.

# Zugriff auf admin-ajax.php zulassen
<Files admin-ajax.php>
Order allow,deny
Allow from all
Satisfy any
</Files>

Zugriff auf bestimmte Dateien verbieten

Im umgekehrten Fall kann man aber auch einzelne Dateien ausschließen die von außen nicht aufgerufen werden können. So lassen sich Dateien vor unerwĂŒnschten Zugriffen schĂŒtzen.

# Zugriff auf bestimmte Datei verhindern
 <files datei.php>
 order allow,deny
 deny from all
 satisfy all
 </files>

Trailing Slash anfĂŒgen

Je nach Konfiguration des CMS ist es sinnvoll den Trailing-Slash anzufĂŒgen, da es ansonsten zwei URLs geben kann. Also beispielsweise

http://was-mit-internet.de/unterseite/ und zeitgleich

http://was-mit-internet.de/unterseite

Dieser Umstand lÀsst sich wie folgt vermeiden.

##Add a Trailing slash##
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ https://www.domainname.tld/$1/ [L,R=301]

Caching aktivieren

Schlechte Ladezeiten sind ein Killer fĂŒr alle Webseiten. Wer möchte schon lange warten bis die Inhalte geladen sind? Aber wie kriegt man das nun in den Griff? Viele Systeme bringen so etwas nicht unbedingt von den Werkseinstellungen direkt mit. Aber man kann sich sehr einfach behelfen. Wir teilen das ganze in verschiedene Bereiche auf.

Browsercaching

Hiermit gebt Ihr dem Browser Anweisungen, wie er mit den Inhalten eurer Seite umzugehen hat. In dem Falle wollen wir dem Browser mitteilen er soll nicht bei jedem Seitenaufruf alle Ressourcen, wie Grafiken & Javascript, neu laden. Anstatten greift er auf seinen eigenen Cache zurĂŒck und spart damit Ladezeit. Aktivieren könnt ihr das mit folgenden Zeilen in der .htaccess:

# Browser Caching
ExpiresActive On
ExpiresByType image/jpg "access 1 month"
ExpiresByType image/jpeg "access 1 month"
ExpiresByType image/gif "access 1 month"
ExpiresByType image/png "access 1 month"
ExpiresByType image/x-icon "access 1 month"
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"
ExpiresDefault "access 3 days"

GZIP Komprimierung aktivieren

Im nĂ€chsten Schritt werden wir das ganze noch komprimieren und damit die zu ĂŒbertragende Datenmenge reduzieren. Die meisten Server, auch bei Webhostingpaketen, können damit umgehen und haben die entsprechende Funktion GZIP aktiviert. Mit dem GZIP compression Testing Tool kannst du vorab prĂŒfen ob bereits GZIP aktiv ist. Dort siehst du nach der Einbindung auch ob alles funktioniert und wie viel eingespart wird. Nicht alle Server unterstĂŒtzen die folgende Variante.

# GZIP Komprimierung aktivieren
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

mod_deflate aktivieren

Nun wenden wir noch mod_deflate an um das endgĂŒltige Resultat zu erzielen, welches wir anstreben. Kompression aller Ressourcen!

# mod_deflate aktivieren
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/vtt 
AddOutputFilterByType DEFLATE text/x-component
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/js
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE application/atom+xml 
AddOutputFilterByType DEFLATE application/json
AddOutputFilterByType DEFLATE application/ld+json 
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject 
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/font-woff2
AddOutputFilterByType DEFLATE application/x-font-woff
AddOutputFilterByType DEFLATE application/x-web-app-manifest+json font/woff
AddOutputFilterByType DEFLATE font/woff 
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon 
</IfModule>

Auslesen der Benutzer verhindern (WordPress spezifisch)

WordPress bietet die Option ĂŒber domainname.de/?author=1 den Benutzer auszulesen, welcher hinter der ID 1 steht. Du wirst also direkt auf die entsprechende Autorenseite von ID 1 weitergeleitet. So könnten Benutzernamen fĂŒr Loginversuche sehr einfach ausgelesen werden. Um das etwas zu erschweren, bauen wir einen weiteren Codeschnipsel in die .htaccess eures WordPress ein. NatĂŒrlich bietet das ganze nur eine kleine HĂŒrde, aber so werden solche Ausleseversuche direkt auf die Startseite des Blogs geleitet.

# Auslesen der Benutzer verhindern
RewriteCond %{QUERY_STRING} .*author=(.+.?) [NC]
RewriteRule (.*) /?author= [NC,L,R=301]

Download .htaccess fĂŒr WordPress

Wir haben dir eine .htaccess fĂŒr dein WordPress vorbereitet. Bitte achte aber darauf, ob deine .htaccess Datei nicht schon andere EintrĂ€ge durch Plugins erhalten hat. Das könnte sonst zu Problemen fĂŒhren. Du bist dir nicht sicher? Dann melde dich gern bei uns.

Download .htaccess – WP

Download .htaccess fĂŒr Webseite

Du hast eine normale Website, möchtest aber trotzdem die Hacks unseres Beitrags anwenden? Kein Problem, wir haben dir eine .htaccess vorbereitet.  Bitte achte darauf, dass evtl dein System bereits eine .htaccess Datei angelegt hat.

Download .htaccess – Web

Schreibe einen Kommentar

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