Fix: jamulix.de/ leitet wieder auf /landingpage/ weiter

Statt Symlink index.html → landingpage/index.html legen die Deploy-Skripte
jetzt webroot/index.html (meta-refresh + location.replace) in den Webroot.
README: Deploy-Schritte aktualisiert, Fehlerseiten-Konfig auf nginx
(error_page) statt Apache korrigiert.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-10-07 18:21:48 +02:00
commit c1c0061492
4 changed files with 40 additions and 16 deletions

View file

@ -97,7 +97,8 @@ Die E-Mail im Footer (`footer.tsx`) wird als Prop von `app/page.tsx` übergeben:
- Baut die Seite (`npm run build`) - Baut die Seite (`npm run build`)
- Öffnet eine SSH-Master-Verbindung (Passwort nur einmal eingeben) - Öffnet eine SSH-Master-Verbindung (Passwort nur einmal eingeben)
- rsync nach `jamulix.de:/var/www/jamulix.de/html/landingpage/` - rsync nach `jamulix.de:/var/www/jamulix.de/html/landingpage/`
- Setzt Symlink: `/var/www/jamulix.de/html/index.html` → `landingpage/index.html` - Lädt `webroot/index.html` nach `/var/www/jamulix.de/html/index.html` hoch
(Weiterleitung von `jamulix.de/` auf `/landingpage/`)
- Kopiert die Fehlerseiten `landingpage/<code>.html` in den Webroot - Kopiert die Fehlerseiten `landingpage/<code>.html` in den Webroot
### Localhost (zum Testen) ### Localhost (zum Testen)
@ -107,7 +108,7 @@ Die E-Mail im Footer (`footer.tsx`) wird als Prop von `app/page.tsx` übergeben:
``` ```
- rsync nach `/var/www/html/landingpage/` - rsync nach `/var/www/html/landingpage/`
- Symlink: `/var/www/html/index.html` → `landingpage/index.html` - Kopiert `webroot/index.html` (Weiterleitung) nach `/var/www/html/index.html`
- Kopiert die Fehlerseiten in den Webroot - Kopiert die Fehlerseiten in den Webroot
- `sudo chown -R www-data:www-data` - `sudo chown -R www-data:www-data`
@ -134,20 +135,20 @@ Gemeinsames Layout: `components/error-page.tsx`. Der Build erzeugt
`<webroot>/<code>.html`. Alle Asset-Pfade sind absolut (`/landingpage/_next/…`), `<webroot>/<code>.html`. Alle Asset-Pfade sind absolut (`/landingpage/_next/…`),
daher funktionieren die Kopien im Webroot genauso. daher funktionieren die Kopien im Webroot genauso.
Damit Apache sie ausliefert, braucht die vHost-Konfiguration (nicht Teil Damit nginx sie ausliefert, braucht der `server`-Block (nicht Teil
dieses Repos) z. B.: dieses Repos) z. B.:
```apache ```nginx
ErrorDocument 401 /401.html error_page 401 /401.html;
ErrorDocument 403 /403.html error_page 403 /403.html;
ErrorDocument 404 /404.html error_page 404 /404.html;
ErrorDocument 500 /500.html error_page 500 /500.html;
ErrorDocument 502 /502.html error_page 502 /502.html;
ErrorDocument 503 /503.html error_page 503 /503.html;
ErrorDocument 504 /504.html error_page 504 /504.html;
``` ```
- `ErrorDocument 401` muss ein lokaler Pfad sein, keine vollständige URL. - Ziel muss ein lokaler Pfad sein, keine vollständige URL (sonst wird daraus ein Redirect).
- Die 401-Seite erscheint erst, wenn der Login-Dialog des Browsers abgebrochen wird. - Die 401-Seite erscheint erst, wenn der Login-Dialog des Browsers abgebrochen wird.
--- ---

View file

@ -14,9 +14,11 @@ npm run build
echo "Synchronisiere landingpage/ nach /var/www/html/landingpage/..." echo "Synchronisiere landingpage/ nach /var/www/html/landingpage/..."
sudo rsync -av --delete landingpage/ /var/www/html/landingpage/ sudo rsync -av --delete landingpage/ /var/www/html/landingpage/
echo "Setze symbolischen Link: index.html → landingpage/index.html" echo "Setze Weiterleitung: index.html → /landingpage/"
# rm zuerst: ein alter Symlink würde sonst landingpage/index.html überschreiben
sudo rm -f /var/www/html/index.html sudo rm -f /var/www/html/index.html
sudo ln -s landingpage/index.html /var/www/html/index.html sudo cp webroot/index.html /var/www/html/index.html
sudo chown www-data:www-data /var/www/html/index.html
echo "Kopiere Fehlerseiten: landingpage/<code>.html → <code>.html" echo "Kopiere Fehlerseiten: landingpage/<code>.html → <code>.html"
for c in $ERROR_PAGES; do for c in $ERROR_PAGES; do

View file

@ -28,8 +28,10 @@ npm run build
echo "Synchronisiere landingpage/ nach $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/landingpage/..." echo "Synchronisiere landingpage/ nach $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/landingpage/..."
rsync -av --delete -e "ssh -S $SSH_SOCKET" landingpage/ "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/landingpage/" rsync -av --delete -e "ssh -S $SSH_SOCKET" landingpage/ "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/landingpage/"
echo "Setze symbolischen Link: index.html → landingpage/index.html" echo "Setze Weiterleitung: index.html → /landingpage/"
ssh -S "$SSH_SOCKET" "$REMOTE_USER@$REMOTE_HOST" "rm -f '$REMOTE_DIR/index.html' && ln -s landingpage/index.html '$REMOTE_DIR/index.html'" # rm zuerst: ein alter Symlink würde sonst landingpage/index.html überschreiben
ssh -S "$SSH_SOCKET" "$REMOTE_USER@$REMOTE_HOST" "rm -f '$REMOTE_DIR/index.html'"
rsync -av -e "ssh -S $SSH_SOCKET" webroot/index.html "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/index.html"
echo "Kopiere Fehlerseiten: landingpage/<code>.html → <code>.html" echo "Kopiere Fehlerseiten: landingpage/<code>.html → <code>.html"
ssh -S "$SSH_SOCKET" "$REMOTE_USER@$REMOTE_HOST" "for c in $ERROR_PAGES; do cp '$REMOTE_DIR'/landingpage/\$c.html '$REMOTE_DIR'/\$c.html; done" ssh -S "$SSH_SOCKET" "$REMOTE_USER@$REMOTE_HOST" "for c in $ERROR_PAGES; do cp '$REMOTE_DIR'/landingpage/\$c.html '$REMOTE_DIR'/\$c.html; done"

19
webroot/index.html Normal file
View file

@ -0,0 +1,19 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="refresh" content="0; url=/landingpage/">
<link rel="canonical" href="https://jamulix.de/landingpage/">
<title>jamulix.de</title>
<style>
body { margin: 0; min-height: 100vh; display: flex; align-items: center; justify-content: center;
background: #0b1020; color: #c9cbe0; font-family: system-ui, sans-serif; }
a { color: #a78bfa; }
</style>
<script>location.replace('/landingpage/');</script>
</head>
<body>
<p>Weiter zu <a href="/landingpage/">jamulix.de/landingpage/</a></p>
</body>
</html>