Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


Vorhergehende Überarbeitung
webhosting:webserver:htaccess [05.05.2023 09:15] (aktuell) admin
Zeile 1: Zeile 1:
 +====== .htaccess Datei ======
 +Über die .htaccess Datei können Sie die Konfiguration des Webservers anpassen und verzeichnisbezogene Regeln festlegen. Darüber ist es beispielsweise möglich, eigene HTTP-Fehlerseiten festzulegen, Verzeichnisse und URLs umzuleiten, Verzeichnisse mit Zugangsdaten (Benutzer und Passwort) vor unberechtigten Zugriffen zu schützen, und vieles mehr.
  
 +Content Management Systeme (CMS) wie beispielsweise WordPress legen bereits bei der Installation solche .htaccess Dateien an, in denen entsprechende Grundeinstellungen für die Anwendung bereits enthalten sind. Bei einer WordPress Installation sieht diese Datei zum Beispiel wie folgt aus:
 +
 +<code apache>
 +# BEGIN WordPress
 +# Die Anweisungen (Zeilen) zwischen „BEGIN WordPress“ und „END WordPress“ sind
 +# dynamisch generiert und sollten nur über WordPress-Filter geändert werden.
 +# Alle Änderungen an den Anweisungen zwischen diesen Markierungen werden überschrieben.
 +<IfModule mod_rewrite.c>
 +RewriteEngine On
 +RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
 +RewriteBase /
 +RewriteRule ^index\.php$ - [L]
 +RewriteCond %{REQUEST_FILENAME} !-f
 +RewriteCond %{REQUEST_FILENAME} !-d
 +RewriteRule . /index.php [L]
 +</IfModule>
 +</code>
 +
 +**Erklärung zum gezeigten Beispiel**: Bei Zeilen, die mit einer Raute (#) beginnen, handelt es sich um Kommentare. Diese werden vom Webserver bei der Verarbeitung der Datei ignoriert. Die darauf folgenden Zeilen legen entsprechende Regeln für den Webserver fest, mit denen die Seiten-URL umgeformt wird. Die in diesem Beispiel gezeigten Regeln besagen, dass eine URL, die direkt die Datei index.php aufruft, nicht verändert wird. Wird nicht die Datei index.php aufgerufen, wird geprüft, ob sich an besagter Stelle auf dem Webspace eine Datei oder ein Verzeichnis befindet und entsprechend aufgerufen, wenn dem so ist. Falls dies nicht der Fall ist, wird stattdessen die Datei index.php aufgerufen. Diese verarbeitet die aufgerufene URL entsprechend. Auf diese Weise wird sichergestellt, dass in WordPress hinterlegte Permalinks auf die entsprechenden Seiten umgeleitet werden (die Weiterleitung wird dann über den PHP-Code ausgeführt).
 +
 +----
 +
 +Die .htaccess Datei können Sie per [[webhosting:ftp|FTP]] oder [[webhosting:ssh|SSH]] bearbeiten. Beachten Sie bitte, dass Dateien, die mit einem Punkt (.) beginnen, auf Linux, Unix, BSD und ähnlichen Systemen als unsichtbare bzw. versteckte Dateien angesehen werden. Falls Ihr FTP-Programm die .htaccess Datei nicht anzeigt, stellen Sie bitte sicher, dass versteckte Dateien von Ihrem FTP-Programm angezeigt werden. Sollte noch keine .htaccess Datei angelegt worden sein, können Sie diese mit Ihrem FTP-Programm anlegen.
 +
 +Wir haben an dieser Stelle einige praktische Beispiele aufgeführt, die Sie bei Bedarf in Ihre .htaccess Datei übernehmen können. Eine vollständigere Liste der möglichen Einstellungen und weitere Beispiele finden Sie auf [[https://wiki.selfhtml.org/wiki/Webserver/htaccess|SELFHTML]] sowie in der [[https://httpd.apache.org/docs/2.4/howto/htaccess.html|Apache Webserver Dokumentation (englisch)]].
 +
 +**Hinweis zu Beispielen, die eine Umleitung von HTTP auf HTTPS vornehmen: Sobald Sie für einen Webserver-Eintrag SSL aktiviert haben, nimmt der Webserver die Umleitung auf die jeweilige HTTPS-Variante einer URL automatisch vor. Hierzu muss keine Anpassung über die .htaccess Datei vorgenommen werden.**
 +
 +In den hier folgenden Beispielen gehen wir davon aus, dass wir für die Domain beigoneo.de auf dem Webserver ein eigenes Verzeichnis angelegt haben, in dem sich eine .htaccess Datei mit dem Inhalt der jeweiligen Beispiele befindet.
 +
 +===== Domainumleitung =====
 +Mit folgendem Code wird Ihre Domain beim Aufruf auf eine andere Domain mittels 301-Weiterleitung umgeleitet:
 +
 +<code apache>
 +RewriteEngine On
 +RewriteCond %{REQUEST_URI} (.*)
 +RewriteRule ^(.*)$ https://www.meine-goneo-domain.de/ [L,R=301]
 +</code>
 +
 +Dieser Code leitet alle Anfragen Ihrer Domain auf das in der dritten Zeile angegebene Ziel weiter (im Beispiel wird auf ''https:%%//www.meine-goneo-domain.de/%%'' weitergeleitet).
 +
 +Soll statt einer fest eingestellten Seite lediglich die Domain umgelenkt werden (z.B. wenn Ihre Webseite unter mehreren Domainnamen erreichbar sein soll), können Sie folgendes Beispiel verwenden:
 +
 +<code apache>
 +RewriteEngine On
 +RewriteCond %{REQUEST_URI} (.*)
 +RewriteRule ^(.*)$ https://www.meine-goneo-domain.de/$1 [L,R=301]
 +</code>
 +
 +In diesem Beispiel wird der auf die Domain folgende Teil der URL bei der Weiterleitung übernommen. So würde zum Beispiel die Adresse ''%%https://www.beigoneo.de/impressum%%'' auf ''%%https://www.meine-goneo-domain.de/impressum%%'' weiterleiten.
 +
 +===== Umleitung zwischen www/nicht-www =====
 +In früheren Zeiten des Internets begannen Webseitenadressen in der Regel immer mit einem vorangestellten www. Inzwischen können Webseiten auch ohne vorangestelltes www aufgerufen werden. Soll Ihre Webseite grundsätzlich nur über eine der beiden Arten aufgerufen bzw. dargestellt werden, können Sie die jeweils andere Variante entsprechend umleiten.
 +
 +Soll die Domain ohne vorangestellte Subdomain auf die jeweilige www-Variante umgeleitet werden, können Sie folgenden Code verwenden:
 +
 +<code apache>
 +RewriteEngine On
 +RewriteCond %{HTTP_HOST} ^beigoneo\.de$ [NC]
 +RewriteRule ^(.*)$ https://www.beigoneo.de/$1 [L,R=301]
 +</code>
 +
 +Möchten Sie stattdessen Aufrufe per www auf die Variante ohne vorangestelltes www umleiten, lautet der Code wie folgt:
 +
 +<code apache>
 +RewriteEngine On
 +RewriteCond %{HTTP_HOST} ^www\.beigoneo\.de$ [NC]
 +RewriteRule ^(.*)$ https://beigoneo.de/$1 [L,R=301]
 +</code>
 +
 +===== Eigene HTTP-Fehlerseiten festlegen =====
 +Tritt beim Aufruf einer Seite bzw. einer Datei ein Fehler auf, wird vom Webserver ein entsprechender Statuscode zurückgegeben. Dieser besagt, weswegen eine Datei nicht abgerufen werden konnte. Der vermutlich bekannteste dieser Fehler ist der Fehler 404 (Not Found). Dieser besagt, dass die angeforderte Datei nicht existiert. Wenn dies nicht anders festgelegt wurde über die Serverkonfiguration bzw. die .htaccess Datei, wird hier lediglich eine simple Fehlermeldung angezeigt. Möchten Sie stattdessen die Fehlermeldung etwas anschaulicher gestalten, können Sie über die .htaccess Datei mit ''ErrorDocument'' eigene Fehlerseiten für jeden HTTP-Statuscode festlegen. Wird der Wert mit einem Schrägstrich begonnen, wird der Wert als Pfad bzw. Datei interpretiert und die entsprechend angegebene Datei geladen. Auch die Angabe einer URL ist möglich. Diese muss mit ''http:%%//%%'' bzw. ''https:%%//%%'' beginnen. Andernfalls wird der jeweils eingetragene Wert als Text übertragen. Auf diese Weise können Fehlerseiten auch in der .htaccess Datei Hartcodiert werden.
 +
 +<code apache>
 +ErrorDocument 401 /unauthorized.html
 +ErrorDocument 403 /forbidden.html
 +ErrorDocument 404 /not_found.html
 +</code>
 +
 +Die wichtigsten und am häufigsten auftretenden Fehlercodes haben wir hier für Sie zusammengefasst:
 +
 +^ Code ^ Bedeutung ^
 +| 401 (Unauthorized) | Dieser Fehler tritt auf, wenn der entsprechende Bereich der Webseite mit Zugangsdaten (Benutzername und Passwort) gesichert wurde, jedoch keine gültigen Zugangsdaten übermittelt wurden. |
 +| 403 (Forbidden) | Dieser Fehler tritt auf, wenn ein Verzeichnis aufgerufen werden sollte, in dem sich jedoch keine Index-Datei befindet (siehe DirectoryIndex). |
 +| 404 (Not Found) | Dieser Fehler tritt auf, wenn die angeforderte Datei auf dem Server nicht vorhanden ist (also nicht existiert). |
 +| 500 (Internal Server Error) | Dieser Fehler tritt auf, wenn beim Abruf der Datei ein serverseitiger Fehler aufgetreten ist. Dieser kann z.B. durch eine fehlerhafte .htaccess Datei oder einen (PHP-)Skriptfehler verursacht werden. |
 +
 +===== DirectoryIndex ändern =====
 +Im Normalfall wird beim Aufruf eines Verzeichnisses nach einer entsprechenden Index-Datei gesucht, die aufgerufen werden kann (z.B. index.php, index.html, ...). Soll stattdessen eine andere Datei aufgerufen werden, kann dies mithilfe von ''DirectoryIndex'' festgelegt werden.
 +
 +<code apache>
 +DirectoryIndex start.php start.html
 +</code>
 +
 +Hinter ''DirectoryIndex'' können Sie beliebig viele Dateinamen angeben. Sind mehrere davon vorhanden, wird die zuerst genannte Datei bevorzugt. Im gezeigten Beispiel würde ''start.php'' aufgerufen, wenn diese vorhanden ist. Ist keine Datei namens ''start.php'' vorhanden, wird stattdessen ''start.html'' aufgerufen.
 +
 +===== Directory Browsing aktivieren =====
 +Standardmäßig ist Directory Browsing bei goneo deaktiviert. Das bedeutet, wenn in einem Verzeichnis keine entsprechende Index-Datei enthalten ist, gibt der Webserver eine Fehlerseite mit dem HTTP-Statuscode 403 (Forbidden) zurück. Soll stattdessen eine Liste der im Verzeichnis enthaltenen Dateien angezeigt werden, können Sie das sogennante Directory Browsing aktivieren mit folgendem Eintrag in der .htaccess Datei:
 +
 +<code apache>
 +Options +Indexes
 +</code>