unir method handlebars extender example array jquery ajax seo umbraco hashbang

jquery - method - ¿Hashbang o no hashbang?



jquery fn extend (3)

Estoy desarrollando un nuevo sitio web y me gustaría hacer uso de AJAX tanto como sea posible. Básicamente, quiero que los usuarios casi nunca salgan de la página de inicio y tengan todo lo que se muestra en ventanas emergentes, controles deslizantes, secciones, etc.

Ahora nuestro sitio web existente ya está bastante alto, por lo que también quiero mantener feliz a Google. He estado leyendo Creación de aplicaciones AJAX rastreables por Google y entiendo que debo proporcionar el mismo contenido para el rastreador a través de _escaped_fragment_ .

El problema
Quiero desarrollar este sitio web utilizando Umbraco que ya proporciona URLs amigables con SEO. es decir

Pero el problema es que no tengo una manera fácil de implementar _escaped_fragment_ sin hackear el núcleo de Umbraco (al menos eso es lo que sé), y usar la solución (respuesta) que he publicado a continuación también mantendrá a los usuarios sin Javascript contentos. ¿Ganar-ganar? ¡Dígame usted! =)

Actualizar
Ayer hubo una respuesta de otro usuario (ahora eliminado) que sugirió que Google ya no usa el método _escaped_fragment_ y sugirió que esto se omita. ¿Es esto cierto? ¿Funcionará realmente Google con AJAX para ver el contenido?

Gracias
Marko


¿También has considerado utilizar la gestión de sesión de historial de HTML5?

De esta manera, no tiene que usar hashes en los navegadores más nuevos y de esa manera el usuario no notará nada.

Un poco simplificado harías algo como esto:

EDITAR: ejemplo actualizado.

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'')); }); }


Estoy tomando el consejo del comentario de @Daniel Pryden y publicando esto como una respuesta.

Pensé en este problema y pensé: ¿por qué no crear el sitio web a la antigua usanza, páginas reales y todo, pero luego realizar los siguientes pasos?

  1. Intercepte todos los enlaces internos en la página de inicio utilizando jQuery y anteponga un hash (#) antes de window.location.pathname , lo que desencadena el evento hashchange. (ver paso 3)
  2. Agregue un redireccionamiento javascript en todas las páginas aparte de la página de inicio para redirigir las páginas a la página de inicio, pero agregue el window.location.pathname después de un hash (#). Por ejemplo, Google rastrea http://www.domain.com/about-us.aspx pero cuando un usuario visita la página, se redirige a http://www.domain.com/#/about-us.aspx
  3. En la página de inicio, use jQuery BBQ o un complemento similar para escuchar el evento hashchange, incluido cuándo se carga la página para poder cargar contenido dinámico. Umbraco puede configurarse para servir contenido de página parcial o completa en función de si la solicitud es AJAX o no.

De esta manera, los usuarios sin Javascript tendrán un sitio web en toda regla (semi-bien parecido), Google rastreará todas las páginas sin ningún problema, pero los usuarios con Javascript siempre permanecerán en la página de inicio, y el concepto genial de tener un Se logrará la aplicación web en lugar de un sitio web.


Use jQuery BBQ y use una función js en la parte superior de sus páginas para verificar si hay un hash válido, si es así, redirija a la página.