.htaccess - Konfigurationsdatei

Der Inhalt der Konfigurationsdatei .htaccess ist ein Bestandteil der Konfiguration von Linux-Servern und wird meistens für die Aktivierung sogenannter Rewrite-Regeln (mod rewrite) genutzt. Damit lassen sich aber auch andere nützliche Parameter beeinflussen. Einige Anwendungsbeispiele finden Sie nachfolgend.
 

Wie erstellt / bearbeitet man die .htaccess-Datei ?
 

Die .htaccess-Datei können Sie bequem direkt im Kundencenter bearbeiten oder mithilfe eines Texteditors erstellen und anschließend über das FTP auf den Server ins entsprechende Verzeichnis hochladen.

  1. Melden Sie sich im Kundencenter an.
  2. Gehen Sie zu Einstellungen Ihres Hostings, bei dem Sie die .htaccess-Daten bearbeiten möchten
    (Server und Hosting » Server im Überblick  » Detailseite öffnen).

  3. Öffnen Sie die Einstellungen des Servers, scrollen Sie bis zum Abschnitt Einstellungen und öffnen Sie die Bearbeitung von .htaccess.

  4. Wählen Sie ein Verzeichnis, in welchem Sie die .htaccess bearbeiten möchten ( "/" ist das Stammverzeichnis - WWW).

  5. Tragen Sie die benötigten Code Zeilen ein und speichern Sie die Datei ab. Die Konfiguration wird sofort wirksam. 

 

Übertragung der Konfigurationen

Die Konfigurationen mittels einer .htaccess-Datei wirken sich auf alle in der Verzeichnishierarchie darunter gelegenen Verzeichnisse aus (dies kann bei Rewrite-Regeln manchmal stören). Wenn Sie in einem der Unterverzeichnisse andere Konfiguration wünschen, müssen Sie in diesem Unterverzeichnis eine neue .htaccess-Datei ablegen, d.h. die .htaccess-Konfiguration der Verzeichnisse kann durch eine neue .htaccess-Datei im gewünschten Unterverzeichnis überschrieben werden (die Konfiguration wird in weitere, darunterliegenden Unterverzeichnisse übertragen).

Wichtig: Fehlerhafte Einstellungen führen zum internen Serverfehler "Internal Server Error".



Die häufigsten Anwendungsbeispiele


Passwortschutz für ein Verzeichnis einrichten

Einen Passwortschutz für ein bestimmtes Verzeichnis richten Sie im Kundencenter über eine .htaccess-Datei ein:
Server und Hosting » Server im Überblick » Detailseite des benötigten Servers öffnen » Einstellungen des Servers öffnen » Bearbeitung von .htaccess.

  1. Klicken Sie beim gewünschten Verzeichnis auf Nach Vorlage erstellen

  2. Setzen Sie ein Häkchen beim Zugriff mit einem Passwort schützen, geben Sie den Bereich, der geschützt werden soll, einen Benutzernamen und ein Passwort (am besten automatisch generieren) an. Scrollen Sie nach unten und bestätigen Sie die Konfiguration mit dem Klick auf .htaccess-Datei erstellen. Die Konfiguration wird sofort wirksam. 

TIPP: Die Übersicht festgelegter Zugriffsberechtigter, einschließlich ihrer (verschlüsselten) Passwörter finden Sie im Kundencenter bei der Bearbeitung der .htaccess-Datei unter "Passwörtern" (hier können Sie auch weitere Zugriffe einstellen) oder auf dem FTP-Server in der Datei .htpasswd. 
Wenn Sie den Verzeichniszugriff ohne das Passwort wieder erlauben möchten, löschen Sie in der entsprechenden .htaccess-Datei die nachfolgende Direktive:

AuthType Basic
AuthName "geschützer Bereich"
AuthUserFile /dateipfad/.htpasswd
AuthGroupFile /dev/null
Require valid-user

Konfiguration des Webservers


Kommentar - Ein beliebiger Text mit dem Anfangszeichen "#" wird vom Server ignoriert
So können wichtige Beschriftungen und Bemerkungen aufbewahrt werden 


Einstellen von Ausgangsdateien (Index-Dateien) der Verzeichnisse - Übersicht der Ausgangsdateien 
Die Namen werden durch ein Leerzeichen getrennt, es wird zwischen Groß-und Kleinschreibung unterschieden (Die "index.php" und "Index.php" sind also zwei unterschiedliche Dateien)


Beispiel: 
DirectoryIndex
index.php index2.php Dritterindex.htm LetzterIndex.html

Auflistung der Verzeichnisinhalte - bei Grundeinstellungen deaktiviert
# Falls im Verzeichnis keine Index-Datei angegeben ist (siehe DirectoryIndex oben), können Sie den Verzeichnisinhalt im Browser anzeigen lassen

Befehl: Options + Indexes

Eigene Fehlerseiten einstellen
# Man kann die vollständige URL oder einen relativen Verzeichnispfad eingeben - ein relativer Pfad beginnt ab dem /www/-Verzeichis

ErrorDocument 401 /cesta/soubor401.html # (gelegen in  /www/cesta/soubor401.html)
ErrorDocument 404 /cesta/soubor404.html
ErrorDocument 500 /cesta/soubor500.html
ErrorDocument 503 http://domena.cz/cesta/soubor.html

Zugríffsbeschränkungen
# Verzeichniszugriff von bestimmten IP-Adressen erlauben/verwehren

Allow from all # Voreinstellung - Zugriff von allen IP-Adressen erlaubt
Deny from all # Beschränkt den Zugriff von allen IP-Adressen (z.B. PHP kann jedoch lokal auf das Verzeichnis zugreifen)
Deny from 81.95.96.29 # Zugriff von einer bestimmten IP-Adresse blockieren
Deny from 81.95.96 # Zugriff von allen IP-Adressen des Bereichs 81.95.96.xx blockieren


PHP-Einstellungen

# Einstellen von "register globals"
php_flag register_globals on/off

Einstellen von "magic quotes"
php_flag magic_quotes_gpc on

Einstellen von "display errors"
php_flag display_errors on

# Einstellen von "max_input_vars" 
php_value max_input_vars 5000 (oder einen anderen Wert nach Bedarf)

Einige PHP-Parameter (z.B. für memory_limit) kann man über die .htaccess-Datei bei einem Shared-Hosting nicht ändern. Sie können sie jedoch bei der VMS-Lösung durch folgende Einstellungen erhöhen:

upload_max_filesize
php_flag upload_max_filesize 256MB (Standardwert, kann man erhöhen)  

memory_limit
php_flag memory_limit 256MB (Standardwert, kann man erhöhen)

 # max_execution_time
php_flag max_execution_time 120 (Standardwert, kann man erhöhen, Angabe in Sekunden)

 # post_max_size
php_flag post_max_size 256MB (Standardwert, kann man erhöhen)

 

Mod Rewrite

# bevor Sie bestimmte Regeln festlegen, müssen Sie den Rewrite durch folgende Zeile aktivieren
RewriteEngine On

# leitet die Domain neco.domain.de auf das Verzeichnis domain.de/verzeichnis um (301-Umleitung)
RewriteCond %{HTTP_HOST} ^neco\.domain\.de$
RewriteRule ^(.*)$ http://domain.de/verzeichnis [R,L]

# leitet die Domain neco.domain.de auf das Verzeichnis domain.de/verzeichnis um
RewriteCond %{HTTP_HOST} ^neco\.domain\.de [NC]
RewriteCond %{REQUEST_URI}  !^/verzeichnis/
RewriteRule ^(.*)$ /verzeichnis/$1 [L,QSA]

Mehr Informationen zum Mod Rewrite finden Sie in der Dokumentation:
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html
http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

eAccelerator deaktivieren

php_flag eaccelerator.enable 0
php_flag eaccelerator.optimizer 0


Die HTTPS-Implementierung (Umleitung mittels .htaccess)


Die HTTPS-Implementierung bei einem LINUX-Hosting erfolgt (gleich wie HTTP) mittels Reverse Proxy Nginx, dieser regelt ein sogenanntes TLS offloading.

Die Datenübertragung zwischen Nginx und Apache läuft unverschlüsselt ab. Die Verschlüsselung wird auf den Apache übertragen. Daraus ergeben sich folgende Einschränkungen für Anwendungen, die nachzuprüfen versuchen, ob man darauf über eine verschlüsselte HTTPS-Verbindung zugreift.

- Variable $_SERVER['HTTPS'] !='on' ist aktiv  
- Variable $_SERVER['SERVER_PORT'] hat den Zahlenwert 80
- "RewriteCond %{SERVER_PORT} !^443$" und "RewriteCond %{HTTPS} !on" ist deaktiviert! In solchen Fällen ist der Port je nach PHP-Version stets 8x und die Variable HTTPS "Off". Statt der Variable %{HTTPS} muss für die Erkennung die Variable %{HTTP:X-Forwarded-Proto} verwendet werden.

Die HTTPS-Umleitung unter Beibehaltung der Rückkompatibilität, können Sie durch folgenden Quellcode in der .htaccess-Datei erreichen:

RewriteEngine On

RewriteCond %{HTTPS} !on

RewriteCond %{HTTP:X-Forwarded-Proto} !=https

RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [L,QSA,NE]

Header set Content-Security-Policy "upgrade-insecure-requests;" 

Der Header mit dem Wert "upgrade-insecure-requests" behebt Warnungen zu sogenannten gemischten Inhalten.

Die HTTPS-Umleitung Ihrer Webseiten, können Sie bequem und automatisch im Kundencenter aktivieren.