Fix: 404 beim Nachladen auf jamulix.de/ beseitigt

Unter / lädt Next.js die RSC-Segmente ohne basePath (/__next.*.txt).
Die Deploy-Skripte verlinken diese Dateien jetzt wie index.html in den
Webroot. Vercel Analytics entfernt (funktioniert nur auf Vercel).
README angepasst.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-10-08 12:44:55 +02:00
commit 30d87187cd
4 changed files with 14 additions and 2 deletions

View file

@ -103,6 +103,8 @@ Die E-Mail im Footer (`footer.tsx`) wird als Prop von `app/page.tsx` übergeben:
- 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` - Setzt Symlink: `/var/www/jamulix.de/html/index.html` → `landingpage/index.html`
(nginx folgt dem Link und liefert die Landingpage direkt unter `https://jamulix.de/` aus) (nginx folgt dem Link und liefert die Landingpage direkt unter `https://jamulix.de/` aus)
- Setzt Symlinks `__next.*.txt` → `landingpage/__next.*.txt` (Next.js lädt unter `/` die
RSC-Segmente ohne basePath; ohne die Links gibt es 404 im Netzwerk-Tab)
- Kopiert die Fehlerseiten `landingpage/<code>.html` in den Webroot - Kopiert die Fehlerseiten `landingpage/<code>.html` in den Webroot
### Localhost (zum Testen) ### Localhost (zum Testen)
@ -113,6 +115,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` - Symlink: `/var/www/html/index.html` → `landingpage/index.html`
- Symlinks: `/var/www/html/__next.*.txt` → `landingpage/__next.*.txt`
- 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`

View file

@ -1,6 +1,5 @@
import type { Metadata, Viewport } from 'next' import type { Metadata, Viewport } from 'next'
import { Inter, Plus_Jakarta_Sans, JetBrains_Mono } from 'next/font/google' import { Inter, Plus_Jakarta_Sans, JetBrains_Mono } from 'next/font/google'
import { Analytics } from '@vercel/analytics/next'
import './globals.css' import './globals.css'
const inter = Inter({ const inter = Inter({
@ -90,7 +89,6 @@ export default function RootLayout({
</head> </head>
<body className="font-sans antialiased min-h-screen"> <body className="font-sans antialiased min-h-screen">
{children} {children}
{process.env.NODE_ENV === 'production' && <Analytics />}
</body> </body>
</html> </html>
) )

View file

@ -18,6 +18,13 @@ echo "Setze symbolischen Link: index.html → landingpage/index.html"
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 ln -s landingpage/index.html /var/www/html/index.html
# Next.js lädt unter / die RSC-Segmente ohne basePath (/__next.*.txt) — ebenfalls verlinken
echo "Setze symbolische Links: __next.*.txt → landingpage/__next.*.txt"
sudo rm -f /var/www/html/__next.*.txt
for f in landingpage/__next.*.txt; do
sudo ln -s "$f" "/var/www/html/$(basename "$f")"
done
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
sudo cp "landingpage/$c.html" "/var/www/html/$c.html" sudo cp "landingpage/$c.html" "/var/www/html/$c.html"

View file

@ -31,6 +31,10 @@ rsync -av --delete -e "ssh -S $SSH_SOCKET" landingpage/ "$REMOTE_USER@$REMOTE_HO
echo "Setze symbolischen Link: index.html → landingpage/index.html" echo "Setze symbolischen Link: index.html → landingpage/index.html"
ssh -S "$SSH_SOCKET" "$REMOTE_USER@$REMOTE_HOST" "rm -f '$REMOTE_DIR/index.html' && ln -s landingpage/index.html '$REMOTE_DIR/index.html'" ssh -S "$SSH_SOCKET" "$REMOTE_USER@$REMOTE_HOST" "rm -f '$REMOTE_DIR/index.html' && ln -s landingpage/index.html '$REMOTE_DIR/index.html'"
# Next.js lädt unter / die RSC-Segmente ohne basePath (/__next.*.txt) — ebenfalls verlinken
echo "Setze symbolische Links: __next.*.txt → landingpage/__next.*.txt"
ssh -S "$SSH_SOCKET" "$REMOTE_USER@$REMOTE_HOST" "cd '$REMOTE_DIR' && rm -f __next.*.txt && for f in landingpage/__next.*.txt; do ln -s \$f \$(basename \$f); done"
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"