usar sitio online mapa google generador example crear con php mysql sitemap

online - Cómo crear un mapa del sitio usando PHP y MySQL



sitemap.xml example (5)

Me preguntaba cómo puedo crear un mapa del sitio usando PHP y MySQL y ¿hay algún ejemplo de diseño de mapa del sitio que conozca?


Aquí hay algo de código que estoy usando para generar un mapa del sitio grande a partir de una tabla de base de datos. Es un poco desordenado y está entrelazado con el sitio existente y heredado. Estoy trabajando en una nueva versión, muy pronto ahora, pero quizás ayude a alguien.

<?php // vim:ai:et:sw=4:ts=4 /* * Generates a sitemap from the database. */ include(''shared/global.cfg''); define(''DB_DSN'', ''mysql:dbname=''.DB_DATABASE.'';host=''.DB_HOSTNAME); /* * The page paramter picks out which sitemap to return, or, * if no page is specified, returns an index of pages. */ $page = filter_input( INPUT_GET, ''page'', FILTER_SANITIZE_NUMBER_INT ); if ($page == '''') { $page = ''index''; } define(''URLROOT'', ''http://la.indymedia.org/''); define(''SM_PATH'', SF_CACHE_PATH.''/sitemap/''); $path = sitemap_page_path($page); $index = sitemap_index_path(); /* * If the index file is missing, or is old, regenerate the entire * sitemap over. This takes several seconds. */ if (file_exists($index)) { $stat = stat($index); $mtime = $stat[''mtime'']; $diff = time() - $mtime; if ($diff > 24*60*60) { regenerate_sitemap(); } } else { regenerate_sitemap(); } /* * Read the cached file, and spit it out. */ $text = file_get_contents($path); header("Content-type: application/xml"); echo $text; exit(); /* * The main function to call to regen the sitemaps. * It reads from the database. * Paginates the results. */ function regenerate_sitemap() { global $index; $pdo = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD); $stmt = $pdo->prepare(''SELECT id,created FROM webcast WHERE display<>"f" and parent_id=0''); $stmt->execute(); $count = 0; $page = 1; $urls = []; $pageurls = []; while($row = $stmt->fetch()) { $created = $row[''created'']; $y = substr($created,0,4); $m = substr($created,5,2); $id = $row[''id'']; $urls[] = URLROOT."news/$y/$m/$id.php"; $count++; if ($count==50000) { write_sitemap_page($page, $urls); $pageurls[] = URLROOT.''sitemap.php?page=''.$page; $page++; $urls = []; $count = 0; } } // fixme - we need to make a sitemaps of events, right here. if (count($urls) > 0) { write_sitemap_page($page, $urls); $pageurls[] = URLROOT.''sitemap.php?page=''.$page; } write_sitemap_index($pageurls); } function sitemap_page_path($page) { return SM_PATH.''sitemap_''.$page.''.xml''; } function sitemap_index_path() { return SM_PATH.''sitemap_index.xml''; } /* * Writes a single sitemap from an array of URLs. */ function write_sitemap_page($page, $urlarray) { $path = sitemap_page_path($page); $xml = ''<?xml version="1.0" encoding="UTF-8"?>''."/n"; $xml .= ''<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">''; foreach($urlarray as $url) { $xml .= ''<url><loc>''.$url.''</loc></url>''; } $xml .= ''</urlset>''; file_put_contents($path, $xml); } /* * Writes the index of sitemaps. */ function write_sitemap_index($urlarray) { $xml = ''<?xml version="1.0" encoding="UTF-8"?>''."/n"; $xml .= ''<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">''; foreach($urlarray as $url) { $xml .= ''<sitemap><loc>''.$url.''</loc></sitemap>''; } $xml .= ''</sitemapindex>''; file_put_contents(sitemap_index_path(), $xml); }


Esto importa en cómo se estructura su sitio. ¿Sus páginas web están contenidas en la base de datos mysql junto con una estructura de sitio y se obtienen mediante un script PHP que se las entrega al usuario, o su sitio web consiste solo de archivos .html estáticos? Si es el primero, solo tiene que representar la estructura del sitio contenida en la base de datos en una buena lista de enlaces legible para los humanos. Si es el segundo, podría, um, juntar una herramienta que recorre todos los archivos y directorios en su carpeta web y haga una lista de enlaces, posiblemente analizando los títulos del sitio de los archivos html: P


La pregunta es muy vaga: tendríamos que saber mucho más sobre el resto de su sitio antes de que obtenga una buena respuesta.

Depende de la estructura de tu página y de lo que quieras incluir en el mapa.

Si su sitio es relativamente estático, debe guardar su mapa del sitio como una página estática, para que no cause un procesamiento adicional cada vez que se carga. Pero si su sitio se actualiza con frecuencia, es posible que deba actualizar el mapa con frecuencia, por lo que una dinámica que se actualice cada vez que se cargue puede ser mejor.

Si su sitio de PHP tiene una estructura de CMS y todas sus páginas están incluidas en el CMS, entonces debería ser relativamente simple ejecutar la base de datos y extraer enlaces a todas sus páginas (dependiendo, por supuesto, de la estructura de su CMS) .

Por otro lado, si su sitio no está estructurado de una manera que le permita hacerlo, o si desea limitar las páginas que se muestran en el mapa, es posible que le resulte más fácil ejecutar una araña a través del sitio y almacenar el resultados

Hay muchos programas de mapas de sitio ya escritos. Busqué en Google el generador de mapas de sitio de PHP y obtuve una gran cantidad de resultados, algunos de los cuales parecen ser útiles para ti, aunque solo sea para que puedas descargarlos para estudiar su código fuente.


No creo que necesites MySQL, ¿es importante para ti usarlo? ¿Tienes páginas dinámicas o estáticas? Tu pregunta es un poco vaga. ¿Desea crear un servicio que cree mapas de sitio o simplemente intente indexar los suyos?

Aquí hay algo para que empieces .


Utilizo esto en mi sitio, funciona bien y puedes apuntar las herramientas para webmasters de Google a "this_file.php" ¡y funciona de maravilla!

<?php header("Content-type: text/xml"); echo''<?xml version=/'1.0/' encoding=/'UTF-8/'?>''; echo'' <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">''; include ''../include.php''; $sql = mysql_query("select blah from bleh"); while ($string = mysql_fetch_array($sql)){?> <url> <loc>http://www.domain.com/dir/<?echo $string[''value''];?>/index.php</loc> <changefreq>weekly</changefreq> </url> <?php } ?> </urlset>