Eine der Stärken von TYPO3 ist die Fähigkeit, große Mutlidomain Instanzen verwalten zu können. Gewöhnlich laufen in einem solchen Szenario alle auf die Instanz gemappten Domains in den gleichen Document Root. Besteht nun die Anforderung, einzelne Domains des gesamten Projektes mit einem vorgeschalteten Passwortschutz zu versehen (z.B. für Entwicklungszwecke oder Änderungen an einzelnen Teilen des Seitenbaumes), hilft der gewöhnliche Ansatz via .htaccess ("AuthType Basic") zunächst nicht weiter. Denn dieser wirkt sich erst einmal global auf das gesamte physikalische Verzeichnis aus, in dem sich die TYPO3 Instanz befindet. Es gibt dennoch eine Lösung auf .htaccess Basis, die einen individuellen Schutz auf Domainebene ermöglicht. Als Voraussetzung wird das Apache Modul "mod_setenvif" benötigt.

.htaccess

#
# Default: Alle Domains mit Passwortschutz
#
AuthType Basic
AuthName "Geschützter Bereich"
AuthUserFile /path/to/.htpasswd
Require valid-user
Order Deny,Allow
Deny from all

#
# www.abc.tld: Ohne Passwortschutz
#
SetEnvIf HOST "^www.abc.tld" require-abc
SetEnvIf HOST "^abc.tld" require-abc
Allow from env=require-abc

#
# www.def.tld: Ohne Passwortschutz
#
SetEnvIf HOST "^www.def.tld" require-def
SetEnvIf HOST "^def.tld" require-def
Allow from env=require-def

#
# Wichtig!
#
Satisfy any

Im obigen Beispiel sind 3 Domains "www.abc.ltd", "www.def.tld" sowie "www.ghi.tld" gegeben und auf den gleichen Doument Root gemappt. Über die default Policy wird in Abschnitt 1 zunächst generell ein Passwortschutz aktiviert. Dieser wird in Abschnitt 2 und 3 jeweils auf Domainebene wieder aufgehoben.

Der Trick dabei ist nun, dass das Matchen des Hostnames mit einem bestimmten Muster ("SetEnvIf") als Requirement zwischengespeichert wird ("require-abc") und diese Requirements dann explizit erlaubt werden ("Allow from require-abc"). Die letzte Direktive ("Satisfy any") besagt, dass eine (beliebige) der Voraussetzungen erfüllt sein muss.

Natürlich lässt sich das Beispiel auch auf andere Szenarien übertragen: Anstelle des Matchings auf den Hostname ("SetEnvIf HOST") könnten auch beliebige andere Variablen ("USER_AGENT, REQUEST_PROTOCOL, REQUEST_URI, REFERER") abgefragt werden.





Kommentare

Kathrin Gaber schrieb am 24.01.2018:
Danke für diese tolle Anleitung! Super Lösung für unser umfangreiches TYPO3 Projekt mit mehr als 60 Domains (Multidomain)