Можно ли переписать URL-адрес на динамическом веб-сайте? - PullRequest
0 голосов
/ 01 декабря 2011

Я много исследовал эту проблему, я не спрашиваю вслепую, но не могу понять эту концепцию. Таким образом, мой веб-сайт содержит один файл index.php, который загружает данные в div через ajax, поэтому страница никогда не обновляется, а URL-адрес никогда не меняется. Теперь я знаю, что мне нужны ссылки на определенный контент, используя переписывание URL. Сайт содержит посты, поэтому, например, все посты извлекаются из БД, а «site.com» - это URL. Но я хочу иметь возможность сделать site.com/post-one и перейти по этой ссылке. Сначала я думаю, что мне нужно добавить переменную в конец URL-адреса, когда динамический контент для этого поста загружен как таковой: site.com?post=1, поэтому оттуда я могу использовать перезапись URL-адреса; проблема у меня заключается в следующем. Поскольку контент для поста 1 будет загружен в div, если я пойду по этому пути и осуществлю перезапись URL-адреса, то будет ли site.com/post-1 теперь просто извлекать данные динамически или страница должна быть статичной?

Ответы [ 2 ]

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

Ваша проблема в том, что для этого обязательно потребуется использование хеша, а не переменной GET (поскольку GET требует обновления страницы, а хеш - нет).Это делается с помощью переменной window.location.hash в JavaScript, которая обновляется всякий раз, когда содержимое URL-адреса после # изменяется (например: если бы я изменил http://site.com/#lol на http://site.com/#lmao, window.location.hash изменился бы с #lol до #lmao).Хэши обычно используются на навигационных сайтах на основе Ajax, таких как Twitter (я думаю, что Google также реализует это).

Если вы используете jQuery, вы должны попробовать плагин jQuery BBQ что позволит вам выполнять такие действия, как обнаружение изменения хеша (в противном случае вам придется самостоятельно внедрить какой-то подобный движок, поскольку он понадобится для любого вида навигации на основе хеша).

Выоднако следует помнить, что это не имеет ничего общего с mod_rewrite, поэтому вам не нужно добавлять какие-либо правила перезаписи.Вся ваша работа (выборка данных и т. Д.) Будет выполняться с помощью Ajax XML HTTP-запросов, а не общих HTTP-запросов.

Используя это, вы можете сделать свой URL похожим на http://site.com/#!/post/1 (это может пойти в любом формате, который выхотелось бы, например http://site.com/#!/p/this-is-the-posts-title) вместо http://site.com/?post=1, хотя вы бы пропали на http://site.com/post/1.

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

Ваша идея использования mod_rewrite кажется здравой.Если вы использовали директиву rewrite, которая передает часть URI как переменную POST в ваш index.php, вы не могли бы бросить некоторый код в верхнюю часть вашего индексного файла, который проверяет эти данные, а затем динамически генерирует ajax для сброса вdivs *

Пример:

RewriteRule ^(.*)$ index.php?post=$1 [L]

Index.php:

<?php if (isset($_POST['post'])) { ?>

$.ajax({ 
  **grab post content dump into div**
});

<?php } ?>

Кроме того, не забудьте очистить данные $ _POST перед обработкойэто.

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