2016-02-26 23 views
9

Chciałbym skonfigurować router reagowania do użytku z subdomenami. Nie jestem pewien, gdzie powinna leżeć logika pośredniczenia poddomeny.Subdomena w routerze reagowania

chcę:

roxy.coolestblog.com/profile na trasie do coolestblog.com/roxy/profile mohammed.coolestblog.com/profile na trasie do coolestblog.com/mohammed/profile benben.coolestblog.com/profile na trasie do coolestblog.com/benben/profile

inny przypadek użycia:

en.coolestblog.com/some-article na trasie do coolestblog.com/en/some-article fr.coolestblog.com/un-article na trasie do coolestblog.com/fr/un-article es.coolestblog.com/una-article do trasy do coolestblog.com/es/una-article

Mam już działa bez subdomeny.

Jak mogę to osiągnąć, aby działał zarówno na kliencie, jak i na serwerze?

+0

Czy znalazłeś jakieś rozwiązanie? Wygląda na to, że mam taką samą potrzebę ... –

Odpowiedz

1

Interfejs API historii przeglądarki ogranicza nasze możliwości, ale możemy to zrobić bezpośrednio za pomocą window.location.

Tuż przed konfigurowania routera, można zmodyfikować URL robiąc coś takiego:

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; 
} 

Oczywiście, ma to swoje zastrzeżenia. Na przykład, jeśli nie znasz nazwy hosta jawnie, nie możesz poprawnie określić, czy istnieje poddomena, czy nie. Nie ma żadnych założeń co do tego, jak powinien wyglądać poniższy adres URL, ale rozwiązanie problemu byłoby trywialne.