Alte Workspace-Adresse abgeschaltet statt weitergeleitet
Auf Filipes Wunsch: dogfather-universe.com/workspace/ soll nicht mehr existieren, er gibt den neuen Link selbst an Creator und Scouts weiter. Vorher stand dort eine Weiterleitung - die haette die alte Adresse auf unbestimmte Zeit am Leben gehalten. Der Server antwortet dort jetzt mit 410 Gone. Beides - 404 und 410 - heisst "gibt es hier nicht"; 410 sagt zusaetzlich "gab es, ist absichtlich weg, kommt nicht wieder". Genau der Sachverhalt. Suchmaschinen nehmen die Adresse dadurch schneller heraus, und in einem Protokoll ist ein 410 sofort als gewollt erkennbar, waehrend ein 404 immer nach Versehen aussieht. Statt einer nackten Fehlermeldung kommt eine kurze Hinweisseite mit der neuen Adresse. Wer hier landet, hat einen alten Link oder eine alte Verknuepfung und soll erfahren, wohin der Workspace gezogen ist, statt vor einem leeren Fenster zu sitzen. Bewusst OHNE Verweis zum Anklicken, damit niemand aus Versehen ein neues Lesezeichen auf den alten Weg setzt. Schnittstellen-Aufrufe unter /workspace/api/ bekommen JSON statt HTML - ein alter, noch offener Browser-Tab wuerde sonst die Hinweisseite als Daten zu lesen versuchen und einen unverstaendlichen Fehler zeigen. Die Pruefung deckt weiterhin 21 Faelle ab und ist mitgezogen: Der gefaehrlichste Fall heisst jetzt nicht mehr "Endlosschleife", sondern "die neue Adresse mit abschalten" - wer nicht auf den Hostnamen prueft, sperrt den Workspace fuer alle aus. Alle gruen, Gegenprobe schlaegt an. Diesmal vor dem Commit den Diff Datei fuer Datei kontrolliert - beim letzten Mal hatte ich hier eine fremde uncommittete Zeile mitgenommen und damit die Website fuer zwei Minuten abgeschossen. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
+1
-1
@@ -99,7 +99,7 @@ app.use((req, res, next) => {
|
|||||||
Begruendung und die beiden Fallstricke stehen in workspace-umzug.js —
|
Begruendung und die beiden Fallstricke stehen in workspace-umzug.js —
|
||||||
sie sind dort als eigene Funktion pruefbar (pruef-workspace-umzug.mjs).
|
sie sind dort als eigene Funktion pruefbar (pruef-workspace-umzug.mjs).
|
||||||
Steht bewusst FRUEH: vor jeder Schranke, damit auch die Anmeldeseite
|
Steht bewusst FRUEH: vor jeder Schranke, damit auch die Anmeldeseite
|
||||||
und die 404-Seite unter der alten Adresse weiterleiten. */
|
unter der alten Adresse nicht mehr erscheint. */
|
||||||
app.use(workspaceUmzug);
|
app.use(workspaceUmzug);
|
||||||
|
|
||||||
/* Inhaltsrichtlinie (26.08.2026). Steht bewusst HIER -- vor jeder
|
/* Inhaltsrichtlinie (26.08.2026). Steht bewusst HIER -- vor jeder
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
/* =====================================================================
|
/* =====================================================================
|
||||||
Prüft die Umzugs-Weiterleitung des Creator Workspace.
|
Prüft, WELCHE Anfragen der abgeschalteten alten Workspace-Adresse
|
||||||
|
zugeordnet werden.
|
||||||
|
|
||||||
Zwei Fehler waeren hier teuer, und beide sieht man einer Bedingung
|
Zwei Fehler waeren hier teuer, und beide sieht man einer Bedingung
|
||||||
nicht an:
|
nicht an:
|
||||||
|
|
||||||
1. ENDLOSSCHLEIFE. Derselbe Dienst bedient die alte UND die neue
|
1. DIE NEUE ADRESSE MIT ABSCHALTEN. Derselbe Dienst bedient die alte
|
||||||
Adresse. Wer nicht auf den Hostnamen prueft, leitet die neue
|
UND die neue Adresse. Wer nicht auf den Hostnamen prueft, sperrt
|
||||||
Adresse immer wieder auf sich selbst -- der Workspace waere fuer
|
den Workspace fuer alle aus -- sofort nach dem Neustart und ohne
|
||||||
alle unerreichbar, und zwar sofort nach dem Neustart.
|
dass es vorher irgendwo auffaellt.
|
||||||
|
|
||||||
2. PRAEFIX-IRRTUM. "faengt an mit /workspace" trifft auch
|
2. PRAEFIX-IRRTUM. "faengt an mit /workspace" trifft auch
|
||||||
/workspaceXYZ oder /workspace-alt -- Pfade, die nicht zum
|
/workspaceXYZ oder /workspace-alt -- Pfade, die nicht zum
|
||||||
@@ -20,11 +21,11 @@
|
|||||||
|
|
||||||
Aufruf: node server/pruef-workspace-umzug.mjs
|
Aufruf: node server/pruef-workspace-umzug.mjs
|
||||||
===================================================================== */
|
===================================================================== */
|
||||||
import { sollUmgeleitetWerden, NEUE_ADRESSE } from "./workspace-umzug.js";
|
import { istAlteWorkspaceAdresse, NEUE_ADRESSE } from "./workspace-umzug.js";
|
||||||
|
|
||||||
/* [Host, Pfad, erwartet, Begruendung] */
|
/* [Host, Pfad, erwartet, Begruendung] */
|
||||||
const FAELLE = [
|
const FAELLE = [
|
||||||
// --- muss weiterleiten ---
|
// --- muss abgeschaltet sein (410 Gone) ---
|
||||||
["dogfather-universe.com", "/workspace/", true, "alte Adresse, Startseite"],
|
["dogfather-universe.com", "/workspace/", true, "alte Adresse, Startseite"],
|
||||||
["dogfather-universe.com", "/workspace", true, "alte Adresse, ohne Schraegstrich"],
|
["dogfather-universe.com", "/workspace", true, "alte Adresse, ohne Schraegstrich"],
|
||||||
["dogfather-universe.com", "/workspace/start.html", true, "alte Adresse, Unterseite"],
|
["dogfather-universe.com", "/workspace/start.html", true, "alte Adresse, Unterseite"],
|
||||||
@@ -33,12 +34,12 @@ const FAELLE = [
|
|||||||
["DOGFATHER-UNIVERSE.COM", "/workspace/", true, "Grossschreibung darf egal sein"],
|
["DOGFATHER-UNIVERSE.COM", "/workspace/", true, "Grossschreibung darf egal sein"],
|
||||||
["dogfather-universe.com:443", "/workspace/", true, "Portangabe darf egal sein"],
|
["dogfather-universe.com:443", "/workspace/", true, "Portangabe darf egal sein"],
|
||||||
|
|
||||||
// --- darf NICHT weiterleiten: sonst Endlosschleife ---
|
// --- darf NIEMALS abgeschaltet werden: das ist der neue Ort ---
|
||||||
["workspace.dogfather-universe.com", "/workspace/", false, "NEUE Adresse -- sonst Endlosschleife"],
|
["workspace.dogfather-universe.com", "/workspace/", false, "NEUE Adresse -- darf NIE abgeschaltet werden"],
|
||||||
["workspace.dogfather-universe.com", "/workspace/start.html", false, "NEUE Adresse, Unterseite"],
|
["workspace.dogfather-universe.com", "/workspace/start.html", false, "NEUE Adresse, Unterseite"],
|
||||||
["workspace.dogfather-universe.com", "/workspace/api/aufgaben", false, "NEUE Adresse, Schnittstelle"],
|
["workspace.dogfather-universe.com", "/workspace/api/aufgaben", false, "NEUE Adresse, Schnittstelle"],
|
||||||
|
|
||||||
// --- darf NICHT weiterleiten: gehoert nicht zum Workspace ---
|
// --- darf nicht betroffen sein: gehoert nicht zum Workspace ---
|
||||||
["dogfather-universe.com", "/", false, "Hauptseite"],
|
["dogfather-universe.com", "/", false, "Hauptseite"],
|
||||||
["dogfather-universe.com", "/index.html", false, "Hauptseite"],
|
["dogfather-universe.com", "/index.html", false, "Hauptseite"],
|
||||||
["dogfather-universe.com", "/webdesign/", false, "anderer Bereich"],
|
["dogfather-universe.com", "/webdesign/", false, "anderer Bereich"],
|
||||||
@@ -46,7 +47,7 @@ const FAELLE = [
|
|||||||
["dogfather-universe.com", "/workspace-alt/seite", false, "PRAEFIX-IRRTUM mit Bindestrich"],
|
["dogfather-universe.com", "/workspace-alt/seite", false, "PRAEFIX-IRRTUM mit Bindestrich"],
|
||||||
["dogfather-universe.com", "/assets/css/main.css", false, "gemeinsame Datei"],
|
["dogfather-universe.com", "/assets/css/main.css", false, "gemeinsame Datei"],
|
||||||
|
|
||||||
// --- darf NICHT weiterleiten: lokale Tests wuerden sonst scheitern ---
|
// --- darf nicht betroffen sein: lokale Tests wuerden sonst scheitern ---
|
||||||
["127.0.0.1:4100", "/workspace/", false, "lokaler Testserver"],
|
["127.0.0.1:4100", "/workspace/", false, "lokaler Testserver"],
|
||||||
["localhost:4100", "/workspace/start.html", false, "lokaler Testserver"],
|
["localhost:4100", "/workspace/start.html", false, "lokaler Testserver"],
|
||||||
|
|
||||||
@@ -58,27 +59,27 @@ const FAELLE = [
|
|||||||
let geprueft = 0;
|
let geprueft = 0;
|
||||||
const fehler = [];
|
const fehler = [];
|
||||||
for (const [host, pfad, erwartet, grund] of FAELLE) {
|
for (const [host, pfad, erwartet, grund] of FAELLE) {
|
||||||
const ist = sollUmgeleitetWerden(host, pfad);
|
const ist = istAlteWorkspaceAdresse(host, pfad);
|
||||||
geprueft++;
|
geprueft++;
|
||||||
if (ist !== erwartet) {
|
if (ist !== erwartet) {
|
||||||
fehler.push(`${host || "(leer)"}${pfad} -> ${ist ? "leitet um" : "leitet NICHT um"}, erwartet ${erwartet ? "umleiten" : "nicht umleiten"} (${grund})`);
|
fehler.push(`${host || "(leer)"}${pfad} -> ${ist ? "abgeschaltet" : "erreichbar"}, erwartet ${erwartet ? "abgeschaltet" : "erreichbar"} (${grund})`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Gegenprobe: Kann diese Pruefung ueberhaupt "nein" sagen? Ein Fall, von
|
/* Gegenprobe: Kann diese Pruefung ueberhaupt "nein" sagen? Ein Fall, von
|
||||||
dem wir wissen, dass er falsch ist, MUSS auffallen. */
|
dem wir wissen, dass er falsch ist, MUSS auffallen. */
|
||||||
const gegenprobe = sollUmgeleitetWerden("dogfather-universe.com", "/workspace/") === true
|
const gegenprobe = istAlteWorkspaceAdresse("dogfather-universe.com", "/workspace/") === true
|
||||||
&& sollUmgeleitetWerden("workspace.dogfather-universe.com", "/workspace/") === false;
|
&& istAlteWorkspaceAdresse("workspace.dogfather-universe.com", "/workspace/") === false;
|
||||||
|
|
||||||
/* Und das Ziel muss stimmen -- eine Weiterleitung auf die falsche Adresse
|
/* Und die genannte neue Adresse muss stimmen -- sie steht auf der
|
||||||
waere schlimmer als gar keine. */
|
Hinweisseite, die abgemeldete Nutzer zu sehen bekommen. */
|
||||||
const zielStimmt = NEUE_ADRESSE === "https://workspace.dogfather-universe.com";
|
const zielStimmt = NEUE_ADRESSE === "https://workspace.dogfather-universe.com";
|
||||||
geprueft++;
|
geprueft++;
|
||||||
if (!zielStimmt) fehler.push(`Ziel ist "${NEUE_ADRESSE}", erwartet https://workspace.dogfather-universe.com`);
|
if (!zielStimmt) fehler.push(`Ziel ist "${NEUE_ADRESSE}", erwartet https://workspace.dogfather-universe.com`);
|
||||||
|
|
||||||
const SOLL = FAELLE.length + 1;
|
const SOLL = FAELLE.length + 1;
|
||||||
console.log(`${geprueft} Faelle geprueft (erwartet ${SOLL}), ${fehler.length} Beanstandungen.`);
|
console.log(`${geprueft} Faelle geprueft (erwartet ${SOLL}), ${fehler.length} Beanstandungen.`);
|
||||||
console.log(`Gegenprobe (alt leitet um, neu nicht): ${gegenprobe ? "ja" : "NEIN"}`);
|
console.log(`Gegenprobe (alt abgeschaltet, neu erreichbar): ${gegenprobe ? "ja" : "NEIN"}`);
|
||||||
for (const f of fehler) console.log(" FEHL " + f);
|
for (const f of fehler) console.log(" FEHL " + f);
|
||||||
|
|
||||||
if (geprueft !== SOLL) { console.log("FEHL: Anzahl stimmt nicht."); process.exit(1); }
|
if (geprueft !== SOLL) { console.log("FEHL: Anzahl stimmt nicht."); process.exit(1); }
|
||||||
|
|||||||
+79
-35
@@ -1,69 +1,113 @@
|
|||||||
/* =====================================================================
|
/* =====================================================================
|
||||||
Umzug des Creator Workspace auf eine eigene Adresse (06.09.2026)
|
Umzug des Creator Workspace auf eine eigene Adresse (06.09.2026)
|
||||||
|
|
||||||
Der Workspace liegt seit diesem Tag auf
|
Der Workspace liegt seit diesem Tag ausschliesslich auf
|
||||||
workspace.dogfather-universe.com
|
workspace.dogfather-universe.com
|
||||||
und ist unter der alten Adresse dogfather-universe.com/workspace/ nur
|
Unter der alten Adresse dogfather-universe.com/workspace/ gibt es ihn
|
||||||
noch als Weiterleitung erreichbar.
|
nicht mehr — dort antwortet der Server mit 410 "Gone".
|
||||||
|
|
||||||
WARUM: Chrome laesst neben der Hauptseite, deren Bereich "/" die ganze
|
WARUM DER UMZUG: Chrome laesst neben der Hauptseite, deren Bereich "/"
|
||||||
Domain umfasst, keine zweite App auf derselben Adresse zu. Unter dem
|
die ganze Domain umfasst, keine zweite App auf derselben Adresse zu.
|
||||||
alten Pfad liess sich der Workspace deshalb nur als Verknuepfung
|
Unter dem alten Pfad liess sich der Workspace nur als Verknuepfung
|
||||||
ablegen, nie als richtige App installieren -- im Menue stand "Oeffnen
|
ablegen, nie als richtige App installieren -- im Menue stand "Oeffnen in
|
||||||
in DOGFATHER UNIVERSE" statt "Seite als App installieren". Das ist kein
|
DOGFATHER UNIVERSE" statt "Seite als App installieren". Das ist kein
|
||||||
Fehler, sondern Absicht (w3c/manifest Nr. 1180: verschachtelte Bereiche
|
Fehler, sondern Absicht (w3c/manifest Nr. 1180: verschachtelte Bereiche
|
||||||
auf einem Ursprung sind "strongly not recommended"). Eine eigene
|
auf einem Ursprung sind "strongly not recommended").
|
||||||
Adresse ist der einzige Weg.
|
|
||||||
|
|
||||||
Der PFAD /workspace/ bleibt erhalten. An ihm haengen 150 Server-Routen,
|
Der PFAD /workspace/ bleibt erhalten und wird weiterhin gebraucht --
|
||||||
107 API-Aufrufe und 26 Server-Dateien -- ihn wegzuschneiden waere ein
|
allerdings nur noch unter der NEUEN Adresse. An ihm haengen 150
|
||||||
grosser Umbau ohne Gewinn, denn der Konflikt entsteht durch die
|
Server-Routen, 107 API-Aufrufe und 26 Server-Dateien; ihn wegzuschneiden
|
||||||
gemeinsame ADRESSE, nicht durch den Pfad.
|
waere ein grosser Umbau ohne Gewinn, denn der Konflikt entstand durch
|
||||||
|
die gemeinsame ADRESSE, nicht durch den Pfad.
|
||||||
|
|
||||||
|
WARUM 410 UND NICHT 404: Beides heisst "gibt es hier nicht". 410 sagt
|
||||||
|
zusaetzlich "gab es, ist absichtlich weg, kommt nicht wieder" -- genau
|
||||||
|
der Sachverhalt. Suchmaschinen nehmen die Adresse dadurch schneller
|
||||||
|
heraus, und in einem Protokoll ist ein 410 sofort als gewollt zu
|
||||||
|
erkennen, waehrend ein 404 immer nach Versehen aussieht.
|
||||||
|
|
||||||
|
WARUM KEINE WEITERLEITUNG (Entscheidung von Filipe, 06.09.2026): Er
|
||||||
|
gibt den neuen Link selbst an Creator und Scouts weiter. Eine
|
||||||
|
Weiterleitung haette die alte Adresse auf unbestimmte Zeit am Leben
|
||||||
|
gehalten. Wichtig zu wissen: Wer die alte Adresse als App installiert
|
||||||
|
hatte, bekommt ab jetzt diese Hinweisseite -- nicht stillschweigend
|
||||||
|
nichts.
|
||||||
|
|
||||||
WARUM DIESE ENTSCHEIDUNG IN EINER EIGENEN DATEI STEHT: Sie hat zwei
|
WARUM DIESE ENTSCHEIDUNG IN EINER EIGENEN DATEI STEHT: Sie hat zwei
|
||||||
Stellen, an denen ein Denkfehler teuer waere, und beide sieht man einer
|
Stellen, an denen ein Denkfehler teuer waere, und beide sieht man einer
|
||||||
Bedingung nicht an:
|
Bedingung nicht an:
|
||||||
|
|
||||||
1. Derselbe Dienst bedient BEIDE Adressen. Wer nicht auf den Host
|
1. DIE NEUE ADRESSE DARF NIE BETROFFEN SEIN. Derselbe Dienst bedient
|
||||||
prueft, baut eine Endlosschleife -- die neue Adresse wuerde sich
|
beide. Wer nicht auf den Hostnamen prueft, sperrt den Workspace
|
||||||
immer wieder auf sich selbst weiterleiten, und der Workspace waere
|
fuer alle aus -- sofort nach dem Neustart und ohne Vorwarnung.
|
||||||
fuer alle unerreichbar.
|
|
||||||
|
|
||||||
2. "faengt an mit /workspace" trifft auch /workspaceXYZ. Ein solcher
|
2. "faengt an mit /workspace" trifft auch /workspaceXYZ und
|
||||||
Pfad gehoert nicht zum Workspace und darf nicht umgeleitet werden.
|
/workspace-alt. Solche Pfade gehoeren nicht dazu.
|
||||||
|
|
||||||
Als eigene Funktion laesst sich beides pruefen, ohne den ganzen Server
|
Als eigene Funktion ist beides pruefbar, ohne den Server zu starten --
|
||||||
zu starten -- siehe pruef-workspace-umzug.mjs.
|
siehe pruef-workspace-umzug.mjs.
|
||||||
===================================================================== */
|
===================================================================== */
|
||||||
|
|
||||||
export const NEUE_ADRESSE = "https://workspace.dogfather-universe.com";
|
export const NEUE_ADRESSE = "https://workspace.dogfather-universe.com";
|
||||||
|
|
||||||
/** Die alten Adressen, von denen weitergeleitet wird. Bewusst eine feste
|
/** Die alten Adressen. Bewusst eine feste Liste und kein Muster: Ein
|
||||||
* Liste und kein Muster: Ein Muster wie /dogfather-universe\.com$/ wuerde
|
* Muster wie /dogfather-universe\.com$/ wuerde auch auf
|
||||||
* auch auf workspace.dogfather-universe.com passen -- und damit genau die
|
* workspace.dogfather-universe.com passen -- und damit genau die neue
|
||||||
* Endlosschleife bauen, die es zu vermeiden gilt. */
|
* Adresse abschalten, die es zu schuetzen gilt. */
|
||||||
const ALTE_HOSTS = new Set(["dogfather-universe.com", "www.dogfather-universe.com"]);
|
const ALTE_HOSTS = new Set(["dogfather-universe.com", "www.dogfather-universe.com"]);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Soll diese Anfrage auf die neue Adresse umgeleitet werden?
|
* Ist das eine Anfrage an den ABGESCHALTETEN alten Ort des Workspace?
|
||||||
* @param {string} hostKopfzeile Inhalt des Host-Kopffeldes, ggf. mit Port
|
* @param {string} hostKopfzeile Inhalt des Host-Kopffeldes, ggf. mit Port
|
||||||
* @param {string} pfad req.path, also ohne Abfrageteil
|
* @param {string} pfad req.path, also ohne Abfrageteil
|
||||||
*/
|
*/
|
||||||
export function sollUmgeleitetWerden(hostKopfzeile, pfad) {
|
export function istAlteWorkspaceAdresse(hostKopfzeile, pfad) {
|
||||||
const host = String(hostKopfzeile || "").toLowerCase().split(":")[0];
|
const host = String(hostKopfzeile || "").toLowerCase().split(":")[0];
|
||||||
if (!ALTE_HOSTS.has(host)) return false;
|
if (!ALTE_HOSTS.has(host)) return false;
|
||||||
/* Genau "/workspace" oder alles darunter -- aber NICHT /workspaceXYZ. */
|
/* Genau "/workspace" oder alles darunter -- aber NICHT /workspaceXYZ. */
|
||||||
return pfad === "/workspace" || pfad.startsWith("/workspace/");
|
return pfad === "/workspace" || pfad.startsWith("/workspace/");
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Express-Zwischenschritt. Bewusst 302 (voruebergehend) statt 301:
|
/* Kurze Seite statt einer nackten Fehlermeldung. Wer hier landet, hat
|
||||||
* Ein 301 wird vom Browser dauerhaft gemerkt und laesst sich praktisch
|
einen alten Link oder eine alte Verknuepfung -- er soll erfahren, wohin
|
||||||
* nicht zurueckholen -- waere an der Umleitung etwas falsch, waere die
|
der Workspace gezogen ist, statt vor einem leeren Fenster zu sitzen.
|
||||||
* alte Adresse fuer jeden, der sie einmal aufgerufen hat, dauerhaft
|
Bewusst ohne Verweis zum Anklicken: Die Adresse steht zum Lesen da,
|
||||||
* unbrauchbar, auch nach einer Korrektur. */
|
damit niemand aus Versehen ein neues Lesezeichen auf den alten Weg
|
||||||
|
setzt. Augenschonend dunkel wie der Rest der Seite. */
|
||||||
|
const HINWEIS = `<!doctype html>
|
||||||
|
<html lang="de"><head><meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="robots" content="noindex, nofollow">
|
||||||
|
<title>Umgezogen · Creator Workspace</title>
|
||||||
|
<style>
|
||||||
|
body{margin:0;min-height:100vh;display:grid;place-items:center;
|
||||||
|
background:#0b0d10;color:#e6ecf0;
|
||||||
|
font-family:system-ui,-apple-system,"Segoe UI",sans-serif;padding:1.5rem}
|
||||||
|
.kasten{max-width:34rem;text-align:center;line-height:1.7}
|
||||||
|
h1{font-size:1.5rem;margin:0 0 1rem;font-weight:650}
|
||||||
|
p{color:#9aa6b2;margin:0 0 1rem}
|
||||||
|
.adresse{display:inline-block;margin-top:.5rem;padding:.85rem 1.4rem;
|
||||||
|
background:#0674b9;color:#fff;border-radius:10px;
|
||||||
|
font-weight:600;letter-spacing:.01em;word-break:break-all}
|
||||||
|
</style></head>
|
||||||
|
<body><div class="kasten">
|
||||||
|
<h1>Der Creator Workspace ist umgezogen</h1>
|
||||||
|
<p>Diese Adresse gibt es nicht mehr. Der Workspace hat jetzt eine eigene
|
||||||
|
Adresse — dadurch lässt er sich als richtige App installieren.</p>
|
||||||
|
<p>Bitte künftig hier anmelden:</p>
|
||||||
|
<div class="adresse">workspace.dogfather-universe.com</div>
|
||||||
|
</div></body></html>`;
|
||||||
|
|
||||||
|
/** Express-Zwischenschritt: beantwortet die alte Adresse mit 410 Gone. */
|
||||||
export function workspaceUmzug(req, res, next) {
|
export function workspaceUmzug(req, res, next) {
|
||||||
if (sollUmgeleitetWerden(req.get("host"), req.path)) {
|
if (istAlteWorkspaceAdresse(req.get("host"), req.path)) {
|
||||||
return res.redirect(302, NEUE_ADRESSE + req.originalUrl);
|
/* Schnittstellen-Aufrufe bekommen JSON, keine HTML-Seite -- sonst
|
||||||
|
versucht ein alter, noch offener Browser-Tab die Hinweisseite als
|
||||||
|
Daten zu lesen und zeigt einen unverstaendlichen Fehler. */
|
||||||
|
if (req.path.startsWith("/workspace/api/")) {
|
||||||
|
return res.status(410).json({ fehler: "umgezogen", neueAdresse: NEUE_ADRESSE });
|
||||||
|
}
|
||||||
|
return res.status(410).type("html").send(HINWEIS);
|
||||||
}
|
}
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user