Ответ 1
Не включать информацию о пути вообще, как в ссылке:
window.location.replace("page2.aspx");
Вот живой пример Пример переключается между
http://jsbin.com/asupup/2 -- The "2" corresponds to your "page1.aspx"
... и
http://jsbin.com/asupup/3 -- The "3" corresponds to your "page2.aspx"
... и поэтому страница 2
использует
window.location.replace("3");
... и страница 3
использует
window.location.replace("2");
Подробнее о том, как работают URL-адреса (и, в частности, относительные URL-адреса), см. RFC3986. Но в основном:
-
Если относительный URL не начинается с
.
или/
, он заменяет последний сегмент. Итак:http://foo.com/one/two/page.html + bar.html = http://foo.com/one/two/bar.html
-
Если относительный URL-адрес начинается с
../
, он заменяет последний сегмент и тот, что над ним:http://foo.com/one/two/page.html + ../bar.html = http://foo.com/one/bar.html
Обратите внимание, что подпапка
two
была заменена. Для перемещения нескольких уровней можно использовать несколько../
:http://foo.com/one/two/three/four/page.html + ../../bar.html = http://foo.com/one/two/bar.html
-
Если относительный URL-адрес начинается с одного
/
, он заменяет все после имени хоста (и порта, если есть). Итак:http://foo.com/one/two/page.html + /bar.html = http://foo.com/bar.html http://foo.com:8080/one/two/page.html + /bar.html = http://foo.com:8080/bar.html
-
Если относительный URL-адрес начинается с
//
, он заменяет все, что соответствует протоколу, поэтому:http://ex.com/folder/page.html + //foo.com = http://foo.com
(Это удобно при загрузке ресурсов, и вы хотите не беспокоиться о
http
vs.https
и предупреждениях смешанного содержания.)