Можно ли динамически изменять URL-адрес веб-страницы? - PullRequest
0 голосов
/ 17 января 2010

Я просто хотел знать, есть ли какой-нибудь возможный способ динамически изменить URL-адрес, который отображается в адресной строке веб-страницы? Например, возможно, на веб-странице есть две кнопки, и когда пользователь нажимает одну, она обновляет страницу (или не имеет значения), и URL-адрес будет mysite.com/page1, или если пользователь нажимает вторую кнопка, URL, который появляется в адресной строке, будет mysite.com/page2?

Мне не нужно менять домен, только часть после.

Просто хотел сказать, что я НЕ хочу переходить на другую страницу. Это должно быть сделано на одной странице. Не имеет значения, делается ли это с помощью JS, PHP или файла .htaccess, но это должно быть сделано только с одной страницей.

Ответы [ 4 ]

4 голосов
/ 17 января 2010

За исключением изменения .location, вы действительно можете контролировать только window.location.hash.

window.location.hash = "boo"; http://mysite.com -> http://mysite.com/#boo

Это только способ не перехода на новую страницу при изменении URL. Все остальные методы обновят страницу или перенаправят страницу:

  1. window.location перенаправляет пользователя при изменении
  2. window.location.pathname перенаправляет пользователя при изменении
  3. window.location.search перенаправляет пользователя при изменении
  4. window.location.hash не перенаправляет пользователя при изменении

Вы также можете просто изменить путь без домена, используя относительный URL:

window.location = "page1"; // include forward-slash if necessary
                           // goes to http://somesite.com/page1
1 голос
/ 17 января 2010

Я не совсем понимаю, что вы хотите.

В обоих случаях вы хотите, чтобы отображалась одна и та же страница, но с разными URL-адресами?

В этом случае вы можете написать файл .htaccess для перенаправления на одну и ту же страницу для / link1 и / link2 и указать кнопку для любой из ссылок.

1 голос
/ 17 января 2010

Вы можете определенно (и легко) обслуживать одну и ту же страницу как с /page1, так и с /page2, и при этом кнопки будут перемещаться соответственно к одной и другой - «обновляя страницу», как вы говорите (т.е. загружая ее снова с сервера или из кэша браузера), и, конечно, измените соответственно то, что отображается в адресной строке. Тем не менее, я не понимаю, в чем смысл этого.

0 голосов
/ 25 мая 2013

Просто чтобы обновить этот вопрос на случай, если придут другие.

Теперь это может быть обработано с помощью javascript с использованием pushState(). Существует несколько библиотек (например, History.js ), которые в настоящее время направлены на упрощение реализации в различных браузерах без надлежащей поддержки. Однако, если вы хотите увидеть простой пример использования без использования таких библиотек, не стесняйтесь проверить следующую статью о Hawkee

Динамическое изменение URL-адресов с помощью Push и Popstate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...