Dokumentation · Integrationen
Drop-in: eine Datei, jeder Hoster
Du brauchst kein WordPress, kein Shopify und keine API-Anbindung, um Beiträge unter deiner Domain zu veröffentlichen. Das Drop-in ist eine einzige PHP-Datei. Du legst sie in ein Verzeichnis deiner Website, zum Beispiel /magazin/, und ab diesem Moment läuft dort dein Magazin: https://deine-domain.de/magazin/.
Das funktioniert auf jedem Hoster mit PHP, vom Shared Hosting bis zum eigenen Server, und neben jedem CMS, ob TYPO3, Joomla, Shopware, ein statischer Site-Generator oder eine selbst gebaute Seite.
So läuft es
- In der Einrichtung deiner Website die Drop-in-Datei herunterladen. Sie enthält bereits deinen Portal-Token.
- Die Datei als
index.phpin das gewünschte Verzeichnis legen, zum Beispiel per FTP oder SFTP. - Das Verzeichnis im Browser aufrufen. Fertig.
Voraussetzungen: PHP 7.4 oder neuer, allow_url_fopen oder cURL. Mehr nicht.
Was die Datei tut
Die Datei ist ein Reverse Proxy: Sie holt die fertigen Seiten deines Magazins per HTTPS von unserem Redaktionsserver und liefert sie unter deiner Domain aus. Für Google und deine Leser ist das Magazin damit ein Teil deiner Website, mit deiner Domain in jeder Adresse und in jedem Canonical.
- Sprechende Adressen wie
/magazin/wanderschuhe-einlaufen/und/magazin/ausruestung/rucksack-packen/. Auf Apache-Hostern legt die Datei die nötige.htaccesseinmalig selbst an. - Bilder werden ebenfalls über deine Domain ausgeliefert (
/magazin/media/…) und einen Tag lang zwischengespeichert. - Kleiner Cache auf deinem Server (fünf Minuten je Seite) in einem privaten
.cache-Verzeichnis, damit auch ein Ansturm deinen Hoster nicht belastet. - Selbst-Update: Spätestens alle sechs Stunden fragt die Datei bei uns nach einer neueren Version. Gibt es eine, prüft sie die Signatur des neuen Codes und ersetzt sich atomar selbst, mit Sicherungskopie. Du musst nie wieder eine Datei hochladen.
- Aufrufe und Klicks werden anonym an dein Dashboard gemeldet, damit du siehst, welche Beiträge gelesen werden.
Was die Datei nicht tut
- Kein Zugriff auf deine Website. Die Datei liest keine Datenbank, keine Konfiguration und keine anderen Dateien. Sie kennt nur ihr eigenes Verzeichnis.
- Kein offener Proxy. Die Adresse unseres Servers ist fest eingetragen, die Datei leitet nichts anderes weiter und nimmt nur
GETundHEADan. - Keine Schreibrechte nötig außer für ihren eigenen Cache und das Selbst-Update. Fehlen sie, läuft das Magazin trotzdem, nur ohne Cache und ohne automatische Aktualisierung.
Nginx und Caddy
Auf Apache legt die Datei ihre .htaccess beim ersten Aufruf selbst an. Nginx und Caddy lesen keine .htaccess — dort trägst du die drei Regeln einmal selbst ein. Sie entsprechen genau dem, was die Datei sonst schreibt: Bilder, Kategorie plus Slug, einzelner Slug. Ersetze /magazin durch dein Verzeichnis.
Nginx (im server-Block):
location ^~ /magazin/.cache/ { deny all; }
location ^~ /magazin/ {
# 1. Bilder: /magazin/media/<datei>
rewrite ^/magazin/media/([a-zA-Z0-9._-]{1,150})$ /magazin/index.php?m=$1 last;
# 2. Kategorie + Artikel: /magazin/<kategorie>/<slug>/
rewrite ^/magazin/([a-z0-9-]{1,80})/([a-z0-9-]{1,120})/?$ /magazin/index.php?k=$1&a=$2 last;
# 3. Artikel ODER Kategorie: /magazin/<slug>/
rewrite ^/magazin/([a-z0-9-]{1,120})/?$ /magazin/index.php?a=$1 last;
}
Die Regeln greifen nur, wenn keine echte Datei am Ziel liegt — das entspricht dem RewriteCond %{REQUEST_FILENAME} !-f der .htaccess. Wenn in deinem Verzeichnis ausser der index.php nichts liegt, ist das ohnehin nie der Fall; sonst stelle den drei Regeln ein if (!-e $request_filename) voran oder nutze try_files.
Caddy (im Site-Block):
@dropin_cache path /magazin/.cache/*
respond @dropin_cache 403
@dropin_media path_regexp media ^/magazin/media/([a-zA-Z0-9._-]{1,150})$
rewrite @dropin_media /magazin/index.php?m={re.media.1}
@dropin_kat path_regexp kat ^/magazin/([a-z0-9-]{1,80})/([a-z0-9-]{1,120})/?$
rewrite @dropin_kat /magazin/index.php?k={re.kat.1}&a={re.kat.2}
@dropin_slug path_regexp slug ^/magazin/([a-z0-9-]{1,120})/?$
rewrite @dropin_slug /magazin/index.php?a={re.slug.1}
Ohne diese Regeln läuft das Magazin trotzdem — nur die sprechenden Adressen fehlen, Seiten sind dann als /magazin/?a=slug erreichbar.
Das .cache-Verzeichnis muss in jedem Fall gesperrt sein. Auf Apache erledigt das die .htaccess, oben stehen die Entsprechungen für nginx und Caddy.
Prüfen, ob es läuft
Auf /domain-check gibt es den Reiter Drop-in testen: Domain und Verzeichnis eintragen, und wir prüfen von außen nach
- ob die Datei überhaupt antwortet,
- welche Version bei dir liegt und ob sie unserer entspricht,
- ob die sprechenden Adressen greifen (also die Rewrite-Regel sitzt),
- ob das Cache-Verzeichnis beschreibbar ist.
Das Drop-in setzt dafür auf jede Antwort zwei Header: X-Evnxt-Dropin mit der Version und X-Evnxt-Cache mit rw oder ro. Du kannst dasselbe von Hand sehen:
curl -sI https://deine-domain.de/magazin/ | grep -i x-evnxt
curl -s https://deine-domain.de/magazin/?dropin_check=1 # -> ok
Wenn du wieder aufhören willst
Datei und .cache-Verzeichnis löschen. Es bleibt nichts zurück.
Abgrenzung
- Läuft deine Seite auf WordPress, macht das WordPress-Plugin dasselbe mit Installation über den Plugin-Dialog.
- Willst du echte Beiträge in deinem eigenen CMS statt eines Magazins unter deiner Domain, nimm WordPress nativ, Shopify, Ghost, Webflow, Wix, Notion oder den Webhook-Kanal. Beide Wege lassen sich parallel betreiben.