Подтвердить что ты не робот

Чтобы хешбанг или не хешировать?

Я разрабатываю новый веб-сайт, и я бы хотел как можно больше использовать AJAX. В принципе, я хочу, чтобы пользователи почти никогда не отходили от главной страницы и не отображали все всплывающие окна, ползунки, разделы и т.д.

Теперь наш существующий сайт уже занимает довольно высокое место, поэтому я также хочу, чтобы Google был счастлив. Я читал Google AJAX Crawlable и понял, что я должен предоставить тот же контент для искателя через _escaped_fragment_.

Проблема
Я хочу разработать этот сайт, используя Umbraco, который уже предоставляет URL-адреса, оптимизированные для SEO. то есть.

Но проблема в том, что у меня нет простого способа реализовать _escaped_fragment _ без взлома ядра Umbraco (по крайней мере, что я знаю) и с помощью решения (ответа), которое я опубликовал ниже также будет поддерживать пользователей без Javascript. Беспроигрышная ситуация? Кому ты рассказываешь! =)

Обновить
Вчера был ответ от другого пользователя (теперь он удален), который предположил, что Google больше не использует метод _escaped_fragment _ и предложил, чтобы это было исключено. Это правда? Будет ли Google фактически запускать AJAX для просмотра контента?

Спасибо
Marko

4b9b3361

Ответ 1

Я беру совет из комментария @Daniel Pryden и отправляю его как ответ вместо этого.

Я подумал об этой проблеме и подумал: почему бы не создать веб-сайт по-старому, фактические страницы и все, но затем выполнить следующие шаги.

  • Перехватите все внутренние ссылки на главной странице с помощью jQuery и добавьте хеш (#) перед window.location.pathname, тем самым инициировав событие hashchange. (см. шаг 3)
  • Добавьте перенаправление javascript на всех страницах, кроме главной страницы, чтобы перенаправить страницы на главную страницу, но добавьте window.location.pathname после хэша (#). Например, Google сканирует http://www.domain.com/about-us.aspx, но когда пользователь посещает страницу, они перенаправляются на http://www.domain.com/#/about-us.aspx
  • На домашней странице используйте jQuery BBQ или аналогичный плагин для прослушивания события hashchange, включая загрузку страницы, чтобы динамический контент мог быть загружен. Umbraco можно настроить для частичного или полного содержимого страницы на основе того, является ли запрос AJAX одним или нет.

Таким образом, пользователи без Javascript будут иметь полномасштабный (полу-красивый) веб-сайт, Google будет сканировать все страницы без каких-либо проблем, но пользователи с Javascript всегда останутся на главной странице - и классная концепция будет иметь веб-приложение, а не веб-сайт.

Ответ 2

Вы также считали, что используете управление сеансами истории HTML5?

Таким образом, вам не нужно использовать хэши в более новых браузерах, и таким образом пользователь ничего не заметит.

Немного упрощенно вы бы сделали что-то вроде этого:

EDIT: обновленный пример.

function route(path) {
    $.get(path, function(data) {
        //parse data
    });
}

if (typeof history.pushState !== 'undefined') 
{
    $(window).bind('popstate', function(e)
    {
        route(window.location.pathname);
    });
    $('a').click(function(event) {
        event.preventDefault();
        history.pushState({},'',this.href);
    });
} else {
    $(window).bind('hashchange', function(e)
    {
        route(window.location.hash);
    });
    $('a').click(function(event) {
        event.preventDefault();
        $(this).attr('href', '/#'+$(this).attr('href'));
    });
}

Ответ 3

Используйте jQuery BBQ и используйте функцию js в верхней части ваших страниц, чтобы проверить, есть ли допустимый хэш, если да, перенаправление на страницу.