Fortsetzung der Diskussion aus Discourse rewriting url path behaviour failing due to subfolder:
Ich habe exakt dasselbe Problem wie im oben genannten Thema, bei dem die URL nur in Szenarien umgeschrieben wird, in denen der Beginn einer Unterstrecke mit dem Unterordner übereinstimmt. Ich verwende /f als Unterordner. Ich bin mir der Fallstricke und Nachteile dieser Einrichtung bewusst, aber alles andere funktioniert einwandfrei. Daher würde ich gerne Hilfe bei der Behebung dieses Problems erhalten, falls möglich.
Ich verwende keine bestehende Discourse-Route, aber wenn der einbuchstabige Unterordner ein Problem darstellt, möchte ich versuchen, ihn zu beheben, bevor ich eine andere Einrichtung in Betracht ziehe.
Einige Routen, die umgeschrieben werden:
/f/t/food-chain-magnate/4826→/f/tood-chain-magnate/4826/f/tag/food-chain-magnate→/f/tagood-chain-magnate/f/u/renato/follow/following→/f/u/renatoollow/following/f/u/fred/summary→/f/ured/summary
Da es sich um eine clientseitige Umgeschrieben handelt, funktionieren CURL-Aufrufe derselben URLs einwandfrei.
Hier ist der Commit, der dies ursprünglich behoben hat, aber getURL hat sich geändert und verwendet jetzt get-url-Hilfsfunktionen anstelle von Discourse.BaseUri.
Wenn man den Aufrufen von getURL folgt, ist location.pathname beim ersten Aufruf korrekt (beginnt mit /f), aber bei einem der folgenden Aufrufe wird der Unterordner entfernt und wird zu /t/f-started-slug/id, wodurch dieser Replace auf dieses /f wirkt.
Ich kenne die Discourse-Interna nicht ausreichend, um vollständig zu verstehen, wo diese Umgeschrieben stattfindet, aber beim Testen in meiner Instanz scheint es, dass die Erzwingung des Replace in withoutPrefix, sodass er nur am Anfang von path wirkt, das Problem behebt.
// Änderung von ...
return path.replace(rootURL, "");
// zu etwas wie ... (unter der Annahme, dass rootURL nicht escape werden muss)
return path.replace(new RegExp("^" + rootURL), "")
// oder ohne Regex ...
return path.indexOf(rootURL) === 0 ? path.slice(rootURL.length) : path;
Ich weiß nicht, ob dies eine mögliche Lösung wäre oder ob sie Regressionen einführen würde. Jegliche Hilfe wird geschätzt.