Webmaster Tools y Cakephp


Luego de agregar el sitio a las webmastertools de google, es necesario verificar su propiedad. Para ello hay varis metodos, como por html, por meta tag, por enlace de la cuenta de google analytics, etc.
Para verificacion html nos proporcionan un archivo con nombre como el siguiente google8dmn54g9d45ef99b.html, el cual contiene solo texto plano que tiene de nombre el mismo que el html en sí. como  google-site-verification: google8dmn54g9d45ef99b.html . Este html debería subirse en la carpeta del sitio y debe ser accesible desde - ejemplo.com/google8dmn54g9d45ef99b.html - y debería devolver solo la cadena que contiene - sin ningun texto adicional en la pagina, de lo contratio la verificacion falla.

La manera mas práctica es agregando el meta tag  que brinda en WebmasterTools en app/View/Layouts/default.ctp entre los demás metatag.

Debido a como Cakephp maneja las URL, no solo debemos subir este archivo html a la carpeta principal del sitio o en la carpeta webroot, y tratar de acceder a él por la url mencionada, porque devolveria un error.

 Antes que nada, debemos configurar las rutas. Para ello en app/config/routes.php agruegar la siguientes lineas:

// webmaster tools
 Router::connect('/google8dmn54g9d45ef99b.html', array('controller' => 'pages', 'action' => 'google'));
 
Entonces, enviamos  el pedido para abrir el archivo ejemplo.com/google8dmn54g9d45ef99b.html al Pages controller google action. Luego, en Pages Controller agregar la funcion google

public function google() {
 $this->autoRender = false;
 echo "google-site-verification: google8dmn54g9d45ef99b.html"; 
 }
 
No necesitamos layout y por lo tanto, archivo view para esta página, solo texto plano deberíaser la salida, por lo que, setramos autoRender como false pra hacerl bien.

Si usamos Authentication, no olvidar definir esta página como publica, agregando $this->Auth->allow('google'); al controlador actual beforeFilter() function como:

function beforeFilter() {
 parent::beforeFilter(); 
 $this->Auth->allow( 'google' );
 
Aquí, extendemos el padre de (AppController's) before filter para no perder los que fue definido previamente. Finalmente al abrir esto se mostrará la salida del archivo html que hace funcionar la verificacion.

No hay comentarios: