2009-08-23 21 views
9

Estoy desarrollando una aplicación web usando codeigniter (mvc) y php. Me preguntaba cómo puedo crear un mapa del sitio para los motores de búsqueda cuando mi contacto es dinámico. ¿Existen mejores prácticas para esto o existe una forma de automatizar el proceso? Lo pregunto porque el contenido se agregará rápida y constantemente, por lo que me gustaría que el mapa del sitio sea reciente. Gracias¿Mapa del sitio para contenido dinámico?

Actualización: para ayudar a responder mi pregunta, el tipo de sitio que estoy creando es un sitio de tipo blog público donde los usuarios publican artículos.

Update2: Solo para explicar mi confusión: puede que no entienda exactamente cómo se estructura un sitemap. En un sitio como stackoverflow, por ejemplo, a medida que los usuarios agregan nuevas preguntas (y, por lo tanto, se crean nuevas páginas), ¿el mapa del sitio cambia y debe reenviarse? ¿Qué tan importante es para un sitio como este incluso tener un mapa del sitio?

Respuesta

0

Según el tipo de sitio que cree, puede hacerlo de varias maneras.

Por ejemplo, si estuviera haciendo un sitio de noticias. Podría tener una sola página que vincule con el enlace permanente de cada noticia. Si pudiera detallar qué tipo de sitio/su contenido es, podríamos ayudarlo mejor.

+0

Como el tiempo que proporcionan una manera de llegar a todas las páginas a través de la navegación del sitio de una manera coherente que debe estar bien. ¿O quieres apoyar google sitemaps? – chotchki

2

Tengo una situación similar a la tuya, excepto que desarrollé en Zend Framework y Doctrine en lugar de Code Igniter.

La manera en que resolvimos este problema fue crear un modelo de Sitemap que actúe como un conjunto anidado de Doctrine. Básicamente, se trata de unos pocos campos, como un id, parent_id, title, uri, creado, actualizado. Puede agregar más campos si lo necesita, pero esa es la premisa básica.

A continuación, utilizamos Zend_Navigation para convertir este árbol en un menú para el sitio.

Zend_Navigation también tiene un método auxiliar para generar automáticamente un mapa del sitio XML, por lo que tenemos un controlador y una vista configurados para representar ese documento XML.

Luego, hemos escrito un Complemento de controlador de acción Zend, que supervisa el controlador del mapa del sitio, y cuando se realizan las actualizaciones, comprueba la última actualización y confirma que el mapa del sitio se actualizó.

Todos estos conceptos se pueden portar fácilmente en CI, me imagino.

Si no hay un ayudante de visualización del mapa del sitio en CI, probablemente pueda utilizar las clases de navegación Zend, ya que Zend está desacoplado.

O simplemente puede generar el documento xml con CI, usando el estándar para sitemaps aquí.

http://www.sitemaps.org/protocol.php

+1

¿Escribes sitemaps en un archivo o simplemente los almacenas? ¿Lista todas las URL o solo las más importantes una vez? ¿Cómo hace ping a google? – Manuel

+1

Hola Manuel. Puedes construir tu mapa de sitio progresivamente. Comience con lo más importante y continúe agregando a lo largo del tiempo. Probablemente quiera guardar en caché un archivo. Puede hacer ping a google enviando una solicitud HTTP a www.google.com/webmasters/tools/ping?sitemap=sitemap_url y reemplazando sitemap_url con una versión en url de la URL de su sitio. – Travis

2

Suponiendo que usted está tratando de crear un mapa del sitio XML, HTML, no en uno?

No he hecho esto todavía, y quiero probarlo pronto, pero lo que haría es: configurar un trabajo cron que llame a una ruta como example.com/index.php/sitemap. la función de índice en su controlador de sitemap ejecutará una consulta para seleccionar todos los títulos de todas sus publicaciones + todo lo que necesita para construir una url completa para esas entradas y, dado que es un elemento obligatorio en el protocolo sitemaps, cuando la entrada se actualizó por última vez . si no tiene un campo en su base de datos para esto, puede que tenga que agregarlo.

, entonces solo es cuestión de recorrer los resultados y escribir un archivo xml con la estructura adecuada. mientras haces looping, también deberás decidir la prioridad, changefreq y todos los demás elementos por entrada.

ive también he estado buscando en la versión de pago de http://www.xml-sitemaps.com/ que debería hacer todo menos configurar el cron para usted, a un precio bastante bueno y ejecutándose en su propio servidor. No creo que puedas desarrollar esto tú mismo por 19,99USD de tu tiempo. Y, esta aplicación también notifica a los motores de búsqueda de contenido nuevo, un método para el cual no he esbozado aún más arriba.

5

Aunque su contenido sea dinámico, quiere que su sitemap sea estático. Claro, actualice el mapa del sitio una vez al día si lo desea, O actualícelo cada vez que publique una nueva entrada en el blog ... pero no intente crearlo en el momento en que lo solicite. Esa será una pesadilla de rendimiento.

Creo que el mapa del sitio Stackoverflow se actualiza a diario. Contiene las 50,000 páginas más recientemente cambiadas. El mapa del sitio ayuda con SEO (optimización del motor de búsqueda).

Receta para la generación de mapa over here

0

Un parámetro update-frequency en la estructura del sitio le dice al motor de búsqueda de la frecuencia con una página web se actualiza.

No se confunda con la URL de una página porque se puede cambiar mediante muchos métodos.

Para stackoverflow, puede ser questions.php?id=1317539 de esta página y, por ejemplo, la frecuencia de actualización se establece en un minuto por questions.php

Así, cada minuto, se genera un nuevo mapa de sitio para el sitio web StackOverflow.

Actualización: This answer por Robert explica qué pasa con el mapa del sitio de Stack Overflow cuando se agrega una nueva pregunta al sistema.

0

La mejor solución es añadir a tu Apache .htaccess archivo de la siguiente línea después RewriteEngine On

RewriteRule ^sitemap\.xml$ sitemap.php [L] 

y luego simplemente tener un archivo sitemap.php en la carpeta raíz que sería normalmente accesible a través de http://yoursite.com/sitemap.xml, la URL predeterminada donde todos los motores de búsqueda primero buscarán.

El archivo sitemap.php será algo como esto

<?php header('Content-type: application/xml; charset=utf-8') ?> 
<?php echo '<?xml version="1.0" encoding="UTF-8"?>' ?> 
<?include_once('./myVariables.php'); ?> 

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
    <url> 
    <loc><?php echo $URL1; ?></loc> 
    <lastmod>2005-01-01</lastmod> 
    <changefreq>monthly</changefreq> 
    </url> 
    <url> 
    <loc><?php echo $URL2; ?></loc> 
    <lastmod>2005-01-01</lastmod> 
    <changefreq>monthly</changefreq> 
    </url> 
</urlset> 

funciona :)

Cuestiones relacionadas