← Back to list

PHP-Upgrade beim Provider? So bleibt eine ältere CMS(TYPO3)-Site nahtlos online

PHP-Version neu — CMS/TYPO3-Installation nicht — das simple Konstrukt aus nur zwei Dateien exportiert eine dynamische in eine statische…

Christoph Schweres in rigel-computer.com · 2025-06-11 21:57 · 10 claps · 4.7 min read paywalled
#typo3 #webdesign-and-development #php #htaccess #static-site-generator
Open on Medium ↗

PHP-Upgrade beim Provider? So bleibt eine ältere CMS(TYPO3)-Site nahtlos online

PHP-Version neu — CMS/TYPO3-Installation nicht — das simple Konstrukt aus nur zwei Dateien exportiert eine dynamische in eine statische Site — das Original bleibt dabei komplett erhalten (für spätere Updates)

Dies simple Konstrukt aus nur zwei Dateien exportiert eine dynamische in eine statische Site — BIld: AI generated

Dies simple Konstrukt aus nur zwei Dateien exportiert eine dynamische in eine statische Site — BIld: AI generated

Ein ⬇️ Bild ⬇️ ️sagt mehr als tausend Worte, deswegen direkt zu Beginn, das, was eigentlich erst zu sehen sein wird, wenn alles fertig ist ➡️ auf der jeweiligen Domain.

Bei mir habe ich jetzt alles umgestellt mit genau den Skripten, die unten beschrieben werden, das klappt sogar mit NEWS und PRINT-Versionen.

Also ein sprechendes Beispiel in Form einer Timeline als Screenshot ⬇️:

Screenshot vorher-mittendrin-fertig — am Beispiel einer reellen Domain

Screenshot vorher-mittendrin-fertig — am Beispiel einer reellen Domain

📝 Einleitung

Diese zwei Skripte erzeugen eine statische HTML-Version einer bestehenden Website — ursprünglich entwickelt für TYPO3-Installationen, die durch ein PHP-Upgrade nicht mehr lauffähig waren.

Einschub: Ich hatte natürlich den Bot gefragt, welche Tools da am besten einzusetzen seien, wenn man dieses Ziel verfolgt. a) etwas namens httrack_x64–3.49.2… wenig vertrauenserweckende Oberfläche mit Look&Feel der 80er… und nicht (explizit) W11-tauglich b) wegt… wegt!??? Da bin ich hellhörig geworden — und extrem neugierig…

Voilà — hier das Ergebnis!

Grundsätzlich gilt dabei: Alle dynamisch generierten Inhalte, die zur Laufzeit eines Content-Management-Systems (CMS) wie TYPO3 erzeugt werden, z. B. durch Erweiterungen wie powermail (Kontaktformulare), news, login, _ttproducts oder andere auf PHP-Logik basierende Funktionen, werden in einem statischen Export nicht mehr funktionsfähig sein. Da keine serverseitige Verarbeitung mehr stattfindet, gehen alle dynamischen Interaktionen verloren. Es handelt sich ausschließlich um einen HTML-Snapshot des jeweiligen Frontend-Zustands zum Zeitpunkt des Exports.

Das Skript wurde explizit mit TYPO3 getestet, sollte jedoch prinzipiell auch mit anderen CMS-basierten Systemen funktionieren, sofern diese Seiten auslieferbar machen, die sich per wget vollständig abgreifen lassen. Ebenso ist der Einsatz bei rein statischen Websites grundsätzlich problemlos möglich – wurde in diesen Fällen jedoch nicht im Detail verifiziert.

⚠️ Der Auslöser: Erzwungenes PHP-Upgrade

Wenn der Hosting-Anbieter die Standard-PHP-Version aktualisiert, sind Kompatibilitätsprobleme mit älteren CMS-Plattformen vorprogrammiert. TYPO3-Installationen, die seit Jahren nicht aktualisiert wurden, können plötzlich nicht mehr geladen werden. Die Optionen sind begrenzt: kostenintensive Upgrades, Notfall-Patches — oder kreative Alternativen.

Simpelste Alternative

Die — danach ehedem — dynamische TYPO3-Website in eine statische HTML-Kopie umwandeln.

Und das Orignal bleibt komplett unangetastet, die ältere TYPO3-Instanz kann später problemlos lokal (oder sonstwo) über z.B. Docker/DDEV angehoben werden — wenn dann mal Zeit dafür ist.

🎯 Statischer Export mit sauberem HTML

Ziel war es, eine TYPO3-basierte Website zu bewahren, indem eine statische Kopie erzeugt wird — mit sauberen Dateinamen und funktionierenden Links. Das Ergebnis ist ein interaktives Bash-Skript, das:

  • den Nutzer durch den Exportprozess führt,
  • die Live-TYPO3-Seite mittels wget herunterlädt,
  • Dateinamen mit Query-Strings bereinigt (?id=...),
  • defekte oder codierte Links in HTML-Dateien korrigiert und
  • alles in einem benutzerdefinierten Ordner unter static-copy/ ablegt.

Kein PHP. Kein TYPO3 im Hintergrund. Reines HTML.

💡 Unschlagbarer Vorteil

1️⃣ Die Seite bleibt — im aktuellen Stand — weiterhin im Internet erreichbar. 2️⃣ Man kann problemlos lokal mit der CMS-/PHP-Variante arbeiten, z. B. via Docker oder DDEV — dafür:

  • 🔧 Symlink zur index.php löschen
  • 📝 Neue Zeilen in der .htaccess auskommentieren

🔄 Schritt für Schritt: Von der URL zur statischen Website

1. 🛠️ Umgebung vorbereiten

SSH-Zugang ist erforderlich. Sowohl run_all.sh als auch nachbearbeiten.sh müssen ins Webroot der TYPO3-Installation hochgeladen werden (htdocs/). Nur so stimmen interne Verlinkungen und Pfadstrukturen.

2. 💻 Interaktive Eingabe

Beim Start fragt run_all.sh interaktiv nach:

  • der Start-URL (z. B. [https://example.org)](https://example.org))
  • einem individuellen Ordnernamen für den Export (static-copy/dein-ordner)

Das Skript prüft die URL auf Gültigkeit und erlaubt ggf. Wiederholung oder Abbruch. Existiert der Exportordner bereits, wird ein neuer Name vorgeschlagen — wiederholte Exporte sind dadurch sicher und nachvollziehbar.

3. 📥 Website exportieren

Die Spiegelung erfolgt per wget im rekursiven Modus. Dabei werden HTML, CSS, JS, Bilder und Abhängigkeiten unter static-copy/dein-ordner abgelegt.

4. 🔨 Nachbearbeitung

Im Anschluss wird nachbearbeiten.sh automatisch im Zielordner ausgeführt. Das Skript:

  • benennt um:

  • index.php?id=foo.htmlfoo.html - style.css?abc.cssstyle.css

  • ersetzt interne Links in .html-Dateien:

  • entfernt index.php%3Fid= - korrigiert .css%3F... und .js%3F...-Referenzen

Das Ergebnis: eine saubere, navigierbare Kopie, die offline oder auf jedem statischen Webhost funktioniert.

5. 🚀 Bereit zur Veröffentlichung

Die statische Website liegt nun unter:

static-copy/dein-ordner/

Ab hier:

  • sofort im Browser aufrufbar über den neuen Pfad
  • oder das komplette Verzeichnis downloaden — uploadfähig auf beliebige Server
  • verwendbar als statische Landingpage

Emfohlen: index.php in index.php_orig umbenennen und für index.html einen Symlink setzen!

— dazu muss natürlich die originale Startseite im neuen Ordner identifiziert werden (wie “1.html” oder “Startseite.html” bei Verwendung eines Alias’):

ln -s static-copy/dein-ordner/start.html index.html

Um die Site dann noch komplett zugreifbar zu machen, muss die .htaccess angepasst werden — hier nur ein Auszug, alle Details (auch über die zu treffenden Vorsichtsmaßnahmen) finden sich in den HowTo-Dateien!

# URL remains unchanged. Adjust 'ZZZ'.

RewriteEngine On

# Redirect only if the target directory exists

RewriteCond %{DOCUMENT_ROOT}/static-copy/ZZZ -d

# Proceed only if no matching file or directory is found in webroot

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Internally rewrite to static-copy folder

RewriteRule ^(.*)$ static-copy/ZZZ/$1 [L]

🤔 Zusammenfassend:

Die beiden Skripte (als ein Tool) eignen sich ideal zum:

  • 📦 Archivieren von TYPO3-Altbeständen,
  • 🔄 Umgehen akuter PHP-Kompatibilitätsprobleme,
  • 🚚 Migrieren auf statisches Hosting und
  • 💾 Zwischenspeichern, falls das CMS vorübergehend offline ist.

Die Ursprungsinstallation bleibt unangetastet. Es werden keine Daten verändert.

Hinweis zur Laufzeit und Stabilität

Das Skript benötigt — je nach Umfang und Komplexität der Website — unter Umständen längere Zeit. Um sicherzustellen, dass der Vorgang stabil auch über längere SSH-Sitzungen hinweg läuft, empfiehlt sich die Ausführung in einer detachten Shell-Umgebung, z. B. mit **screen**.

screen -S meinname           # Neue screen-Session starten
./run_all.sh                 # Skript ausführen
Ctrl+A, dann D               # "Detach" – die Session läuft im Hintergrund weiter
# SSH-Verbindung kann nun beendet werden

# Später erneut verbinden:
screen -r meinname           # Bestehende Session wieder aufnehmen

# Zurück zur Hauptshell:
exit                         # Beendet die Session, Skript wird dabei abgebrochen
# Oder:
Ctrl+A, D                    # Nur detach – Skript läuft weiter

📦 Skript herunterladen

Das Projekt ist auf GitHub verfügbar

[embed]GitHub - Rigel-Computer/simple-static-site-generator: Easy-to-Use Bash-Tool to convert dynamic… Easy-to-Use Bash-Tool to convert dynamic CMS/TYPO3 sites to static HTML. Two files only - preserves original CMS for…github.com

und enthält:

  • run_all.sh: Hauptskript mit Interaktivität (_EN für Englisch, _DE für die deutsche Version!)
  • nachbearbeiten.sh: Korrektur und Umbenennung
  • HowTo-Anleitungen und README.md auf GitHub für den Einstieg

❗❗❗ Das HowTo unbedingt lesen und beachten! ❗❗❗

❗ Haftungsausschluss

Dieses Skript wird ohne Gewährleistung oder Garantie bereitgestellt. Verwendung auf eigenes Risiko.

Vor dem Einsatz❗:

  • ⚠️ Vollständiges Backup anlegen
  • 📚 Verständnis der Funktionsweise sicherstellen
  • 🧪 In Testumgebung ausprobieren

Für Datenverlust, Dateiänderungen oder unerwartetes Verhalten wird keine Haftung übernommen.


메타데이터
post_id
9941c2a336c2
slug
php-upgrade-beim-provider-so-bleibt-eine-ältere-cms-typo3-site-nahtlos-online-9941c2a336c2
url
https://medium.com/rigel-computer-com/php-upgrade-beim-provider-so-bleibt-eine-%C3%A4ltere-cms-typo3-site-nahtlos-online-9941c2a336c2
canonical_url
https://medium.com/rigel-computer-com/php-upgrade-beim-provider-so-bleibt-eine-%C3%A4ltere-cms-typo3-site-nahtlos-online-9941c2a336c2
author_url
https://medium.com/@rigel-computer
status
ok
fetched_at
2026-07-19 12:11:04