server { listen 8080; server_name localhost; root /usr/share/nginx/html; index index.html; # Portail VitePress (fichiers statiques + clean URLs) location / { try_files $uri $uri/ $uri.html =404; } # Slidev : /slides/ ou /slides// → première planche (comme static-preview.mjs) # $http_host conserve le port client (reverse proxy, docker -p host:8080). location ~ ^/slides/([^/]+)/?$ { return 302 $scheme://$http_host/slides/$1/1$is_args$args; } # Decks Slidev : assets et routes SPA (/1, /2, …) location ~ ^/slides/(?[^/]+)(?/.*)$ { try_files $uri $uri/ /slides/$slug/index.html; } }