Index: src/routes/posts.js
===================================================================
--- src/routes/posts.js	(revision 34a0053e14610090842259869ad18a74d997d732)
+++ src/routes/posts.js	(revision 47f118301f52a4a219d9668d6650ac9d77a0e128)
@@ -1348,5 +1348,9 @@
     ? req.file.buffer.toString('utf8').replace(/^﻿/, '')   // BOM eraf; Excel zet die erin
     : ((req.body && req.body.csv) || '');
-  if (!site || !String(csv).trim()) return res.redirect('/connect?error=' + encodeURIComponent('Geen lijst ontvangen'));
+  // Terug naar waar je vandaan kwam. Sinds 14-8 staat dit formulier op
+  // /admin/migrate (Robin: alle migratie-opties bij elkaar); terugspringen naar
+  // Connect is dan desorienterend. Alleen een eigen pad, geen open redirect.
+  const terug = /^\/[A-Za-z0-9/_-]*$/.test(String(req.body.next || '')) ? String(req.body.next) : '/connect';
+  if (!site || !String(csv).trim()) return res.redirect(terug + '?error=' + encodeURIComponent('Geen lijst ontvangen'));
 
   const { importFollowing } = await import('../services/ArchiveImportService.js');
@@ -1370,5 +1374,5 @@
   }
   // Terug naar /connect: daar staat het blok, /following is de oude pagina.
-  res.redirect('/connect?' + (r.mislukt.length ? 'error=' : 'success=') + encodeURIComponent(delen.join(', ')));
+  res.redirect(terug + '?' + (r.mislukt.length ? 'error=' : 'success=') + encodeURIComponent(delen.join(', ')));
 });
 
