Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: дٳŦ٭ en 3 Marzo 2007, 07:43 am



Título: Google SiteMap personalizado con PHP y MySQL
Publicado por: дٳŦ٭ en 3 Marzo 2007, 07:43 am
Google Sitemap con PHP y MySQL

El archivo que Google tiene que interpretar es xml, muy simple y fácil de entender, su nombre es Sitemap.php y su estructura es la siguiente:

Código:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
   <url>
      <loc>http://www.yoursite.com/</loc>
      <lastmod>2005-01-01</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.8</priority>
   </url>
   <url>
 <loc>http://www.yoursite.com/catalog?item=12&amp;desc=vacation_hawaii</loc>
      <changefreq>weekly</changefreq>
   </url>
   <url>
 <loc>http://www.yoursite.com/catalog?item=73&amp;desc=vacation_new_zealand</loc>
      <lastmod>2004-12-23</lastmod>
      <changefreq>weekly</changefreq>
   </url>
</urlset>

Como ven, se trata de un fichero con muy pocas etiquetas, las cuales se repiten por cada página. La etiqueta principal es el tag urlset, padre de todas las demás, luego una etiqueta url, que es el padre de las demás etiquetas que identifican a cada página, dentro de esta encontramos las etiquetas loc (dirección url de la página), lastmod (última fecha de actualización), chanfreq (frecuencia con que se actualiza la página), priority (la prioridad de esa página con respecto a las demás). Debemos dejar en claro que sólo las etiquetas padres y la loc son obligatorias, las demás se recomiendan para optimizar la actualización de nuestras páginas, pero son opcionales.

Conociendo esta estructura, lo que debemos hacer es crear un fichero php, que a su vez nos cree el archivo "sitemap.xml" siguiendo las pautas mostradas.

En nuestro MySQL:

Código:
CREATE TABLE `sitemap` (
  `Id` int(6) NOT NULL auto_increment,
  `Url` varchar(255) collate latin1_general_ci NOT NULL,
  `Lastmod` date NOT NULL,
  `Changefreq` varchar(255) collate latin1_general_ci NOT NULL,
  `Priority` int(3) NOT NULL,
  PRIMARY KEY  (`Id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2 ;

--
-- Volcar la base de datos para la tabla `sitemap`
--

INSERT INTO `sitemap` VALUES (1, 'codigosweb.net/index.php', '2007-03-03', 'always', 1);

Y nuestro SiteMap PHP:
Código:
<?php
//Codigo por codigosweb.net Ing_Amc

header('Content-Type: text/xml');//Indicamos que es un XML
function conectar($host, $user, $pass, $database){
$conectar = mysql_connect($host, $user, $pass) or die(mysql_error());
mysql_select_db($database,$conectar);
return $conectar;
}
$conexión=conectar("localhost","root","root","sitemap");
$sql = "SELECT * FROM `sitemap`";
$resultado = mysql_query($sql,$conexión);
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
  echo "<urlset xmlns=\"http://www.google.com/schemas/sitemap/0.84\">";
while ($row = mysql_fetch_row($resultado)){
echo "<url>\r\n
    <loc>http://".$row[1]."</loc>\r\n
    <lastmod>".$row[2]."</lastmod>\r\n
    <changefreq>".$row[3]."</changefreq>\r\n
    <priority>".$row[4]."</priority>\r\n
   </url>\r\n";
}
echo "</urlset>";
mysql_close($conexión);
?>

Fuente del texto: http://www.baluart.net/articulo.php?id_art=71
Script: By me.

Más info: https://www.google.com/webmasters/tools/docs/es/protocol.html

Saludos