Cualquiera puede crear un xml valido con las reglas para los sitemap, pero como le decimos a google que nuestro sitemap es www.dominio.com/sitemap.xml ?

La primera es con una regla de rewrite, pero para hacer esto vamos a usar Zend_Controller_Router_Route_Regex.

Esta lib nos permite crear un alias para nuestros modulos, por ejemplo si nosotros invocamos a www.dominio.com/sitemap.xml, podemos decirle que en realidad llame a www.dominio.com/xml/sitemap/, podria decirle a google que busque directamente en www.dominio.com/xml/sitemap/, pero hay una teoria que te indexa mejor si es un .xml, asi que vamos a darle el gusto y llamarlo asi.

Si nosotros queremos remapear esa url para que lo envie a www.dominio.com/xml/sitemap/, desde el bootstrap hacemos lo siguiente.

  1.  
  2. $controller = Zend_Controller_Front::getInstance();
  3. $controller->setControllerDirectory( ‘./application/controllers’ );
  4. $controller->throwExceptions( true );
  5. $router = $controller->getRouter();
  6. $route = new Zend_Controller_Router_Route_Regex(
  7.     ‘^sitemap.xml$’,
  8.     array(
  9.         ‘controller’ => ‘xml’,
  10.         ‘action’     => ’sitemap’
  11.     )
  12. );
  13. $router->addRoute(’sitemap’, $route);
  14. $controller->dispatch();
  15.  

Y con esto ya es suficiente, para que desde nuestro browser entremos desde www.dominio.com/sitemap.xml a www.dominio.com/xml/sitemap/, esto tambien podriamos hacerlo para todas las paginas, para que terminen siempre en html, y enviarlas al modulo correspondiente para que sea mas SEO friendly, pero eso es mejor hacerlo desde el .htaccess.

Si cargamos en google, esta url para los sitemap, nos va a dar un error 404, y eso es porquqe no encuentra al url desde el bot. Todavia no descubri porque pasa esto, pero la unica manera de solucionarlo es agregandole una barra al final, quedando de esta manera.

www.dominio.com/sitemap.xml/

Para crear el sitemap, solo necesitamos un controller, que traiga los datos correspondientes de los modelos, y en la vista arme el xml ;)

Leave a Reply