Как я могу скрыть #!в адресной строке браузера? - PullRequest
5 голосов
/ 01 декабря 2011

Допустим, у меня есть следующая ссылка:

www.blahblah.com/#!?page=index

Как я могу преобразовать его в одно из следующих:

  • www.blahblah.com/#!/index (этот должен быть сделан с mod_rewrite)
  • www.blahblah.com/ajax/index (все еще mod_rewrite, но #! Заменен на ajax)
  • www.blahblah.com/index (страница загружается с AJAX, как Facebook, но #! Будет скрыта)

Может кто-нибудь привести примеры каждого из приведенных выше вопросов?

Большое спасибо!

Ответы [ 4 ]

3 голосов
/ 01 декабря 2011

Что-либо после хеша (#) не отправляется на сервер, поэтому вы не можете прочитать его на стороне сервера. Однако вы можете перенаправить пользователя с помощью JavaScript. Информация, которую вы ищете, будет храниться в переменной window.location.hash.

При загрузке страницы вы можете сделать что-то вроде следующего:

hashString = window.location.hash.substring(8);
window.location = 'http://www.blahblah.com/'+hashString;

Мы используем substring для удаления первых восьми символов (#!?page=), поэтому у нас останется index.

1 голос
/ 01 декабря 2011

Скрытый # в стратегии загрузки страниц ajax выполняется с помощью HTML 5 pushState.

1 голос
/ 01 декабря 2011

Модуль перезаписи изменяет только то, что видит сервер.Переписать модуль нельзя, изменить то, что видит локальный браузер, именно там запускается js.

Способ загрузки Facebook - через запрос содержимого новой страницы, затем он обновляет URL окна вместонеобходимости перезагрузить все.Это сделано, поэтому, если элементу нужно поделиться или связать, ссылка все обновляется с тем, что они на самом деле просматривают, поэтому, когда страница получает новую перезагрузку, браузер загружает фактическую полную страницу php, запрошеннуюс сервера.

0 голосов
/ 01 декабря 2011

В JavaScript вы можете использовать window.location.hash для этого.

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