diff --git a/.htaccess b/.htaccess
new file mode 100644
index 0000000..e4283e9
--- /dev/null
+++ b/.htaccess
@@ -0,0 +1,31 @@
+# Zugriffsschutz fuer den gesamten Web-Root.
+#
+# restricted/.htaccess schuetzt nur ein Verzeichnis. Die Regeln hier greifen
+# fuer den ganzen Baum und fangen ab, was ausserhalb davon liegt - allen voran
+# das Git-Verzeichnis, ueber das sich sonst der komplette Quellcode samt
+# Historie herunterladen laesst.
+
+# --- Punkt-Verzeichnisse und -Dateien: .git, .claude, .gitignore ---
+# .well-known bleibt frei, das brauchen Zertifikatsausstellungen.
+
+ RewriteEngine On
+ RewriteRule (^|/)\.(?!well-known/) - [F,L]
+
+
+
+ RedirectMatch 404 (^|/)\.(?!well-known/)
+
+
+
+# --- Dateitypen, die der Browser nie anfordert ---
+# Konfiguration, Python-Skripte, Datenhaltung, Vorlagen und Archive. Die
+# Seite laedt ausschliesslich .php, .css, .js, Bilder und Schriften.
+
+
+ Require all denied
+
+
+ Order allow,deny
+ Deny from all
+
+
diff --git a/restricted/.htaccess b/restricted/.htaccess
index 3418e55..c027241 100644
--- a/restricted/.htaccess
+++ b/restricted/.htaccess
@@ -1 +1,18 @@
-deny from all
\ No newline at end of file
+# Kein Zugriff von aussen. Die Dateien hier werden ausschliesslich
+# serverseitig eingebunden.
+#
+# "deny from all" allein setzt auf Apache 2.4 voraus, dass mod_access_compat
+# geladen ist. Fehlt das Modul, quittiert Apache die Direktive mit einem
+# Fehler und liefert 500 - der Schutz haengt also an einem Modul, das nur aus
+# Abwaertskompatibilitaet existiert. Beide Schreibweisen nebeneinander machen
+# ihn davon unabhaengig.
+
+
+ # Apache 2.4
+ Require all denied
+
+
+ # Apache 2.2
+ Order allow,deny
+ Deny from all
+