2016-02-26 23 views
9

Ich möchte Setup-Router für den Einsatz mit Subdomains einrichten. Ich bin mir nicht sicher, wo die Logik für Subdomain-Proxying liegen sollte.Subdomain in reagieren Router

Ich möchte:

roxy.coolestblog.com/profile auf dem Weg nach coolestblog.com/roxy/profile mohammed.coolestblog.com/profile auf dem Weg nach coolestblog.com/mohammed/profile benben.coolestblog.com/profile auf dem Weg nach coolestblog.com/benben/profile

einen weiteren Anwendungsfall:

en.coolestblog.com/some-article auf dem Weg nach coolestblog.com/en/some-article fr.coolestblog.com/un-article auf dem Weg zu coolestblog.com/fr/un-article es.coolestblog.com/una-article zu route zu coolestblog.com/es/una-article

Ich habe schon funktioniert es ohne die Subdomain.

Wie kann ich dies erreichen, so dass es sowohl auf Client als auch auf Server funktioniert?

+0

Haben Sie eine Lösung gefunden? Sieht aus, als hätte ich das gleiche Bedürfnis ... –

Antwort

1

Während die API des Browserverlaufs unsere Möglichkeiten einschränkt, können wir direkt mit window.location interagieren, um dies zu erreichen.

Kurz vor Ihrem Router einrichten, können Sie die URL ändern, indem Sie so etwas wie dies zu tun:

let host = window.location.host; 
let protocol = window.location.protocol; 
let parts = host.split("."); 
let subdomain = ""; 
// If we get more than 3 parts, then we have a subdomain 
// INFO: This could be 4, if you have a co.uk TLD or something like that. 
if (parts.length >= 3) { 
    subdomain = parts[0]; 
    // Remove the subdomain from the parts list 
    parts.splice(0, 1); 
    // Set the location to the new url 
    window.location = protocol + "//" + parts.join(".") + "/" + subdomain; 
} 

Natürlich ist dies seine Vorbehalte hat. Wenn Sie beispielsweise Ihren Hostnamen nicht explizit kennen, können Sie nicht richtig feststellen, ob eine Subdomäne vorhanden ist oder nicht. Es macht keine Annahmen darüber, was die folgende URL sein sollte, aber es wäre trivial, dafür zu lösen.