2011-10-13 8 views
5

Chcę przekierować użytkownika z różnych adresów URL do konkretnego. Próbowałem różnych smaków zastąpienia i nie mogę uzyskać pożądanego zachowania. Ten kod działa, z wyjątkiem podania nazwy hosta. Chcę użyć istniejącej nazwy hosta z windows.location.hostname i po prostu podać nową ścieżkę. Czasami adresy URL różnią się rozmiarem i ukośnikami ("/").javascript jak zmienić nazwę ścieżki właściwości window.location i przekierować

window.location = 'http://localhost:36065/NewPath'; 

Jak zmienić te adresy URL?

http://somesite.com/xxx/yyy/zzz to http://somesite.com/NewPath 
http://somesite.com/xxx/yyy to http://somesite.com/NewPath 
http://somesite.com/xxx to http://somesite.com/NewPath 

Myślę, że masz rację. Ścieżka może się różnić ścieżkami, chcę zastąpić wszystko po .com w zasadzie za pomocą "NewPath"

Chciałbym czyste rozwiązanie, jeśli to możliwe, ale jestem całkiem nowicjuszem w tym dept. Dzięki za porady lub wskazówki.

Odpowiedz

15
location.pathname = '/newpath.html' 
+0

+1, wielka prostota, dlaczego o tym nie pomyślałem? –

+1

Notatka, to utrzymuje hash w adresie URL, ale to prawdopodobnie nie jest problem. –

+0

Dobry punkt na Xeon06, zachowuje również dowolny numer –

1

Zawsze możesz użyć the various location properties odtworzyć część trzeba i dołączyć nową część do niego:

+0

jeśli port jest niestandardowy (80,443) to nie zadziała –

+0

Rzeczywiście. Mogę to dodać, ale myślę, że @JasonHarwig ma najlepsze rozwiązanie. –

0

Wystarczy, aby pokazać się na własnej skórze:

// Find everything up to the first slash and save it in a backreference 
regexp = /(\w+:\/\/[^\/]+)\/.*/; 

// Replace the href with the backreference and the new uri 
newurl = windows.location.href.replace(regexp, "$1/dir/foo/bar/newpage.html");