SEO

  1. Sobre esta auditoría
  2. Alta en servicios
  3. Pake Rank
  4. Reporte básico
  5. Optimización Wordpress
  6. El dominio – http://midominio.es
  7. Servidor
  8. Conceptos SEO On Page
    1. Google Search Snippet
    2. Encabezados: <h1>...<h6>
    3. Contenido
    4. Enlaces internos
    5. Enlaces externos
    6. Microformatos
    7. Optimizar imágenes
    8. Enlaces
    9. Diseño
    10. Cache de Google
    11. One page sites
    12. Sitemap
  9. Scream Frog para el análisis one page
    1. Meta etiquetas
    2. Imágenes
  10. Velocidad
  11. robots.txt
  12. Indexar / follow
  13. Contenido duplicado
  14. Certificado de seguridad
  15. Google Search Console
  16. Enlaces interés
  17. Disavow

Alta en servicios

Alta en servicios de análisis

Dar de alta la página en buscadores

Page Rank

Autoridad

Es cuan popular es tu sitio y esto se define a través de los InboundLinks, que son los enlaces externos hacia tu sitio web.

¿Cómo funcionan los buscadores?

web con enlaces

¿Qué es el Page Rank?

¿Qué es?
Es un algoritmo de ordenación de resultados. Determina el grado de autoridad de un dominio.

¿Qué hace?

Preguntar. Cuantos conoceis a Felipe Gonzalez? Y a Michael Jackson?.Si hay más personas que conocen a Michael Jackson que a Felipe Gonzalez, se supone que Michael Jackson es más importante y será posicionado más arriba.

  • Cuantas más páginas linken a la mía, más importante es mi página
  • Cuanto más importante es la web que linka mi página, más relevancia tiene mi página en internet.
  • Los enlaces salientes, salvo que tengan el atributo “nofollow” penalizan el page rank.
  • Nunca debemos usar el atributo nofollow apuntando a enlaces internos.
page rank

El paso de un page rank a otro es logaritmico. Una página de page rank 4 es 10 veces más notoria q una página de page rank 3.

Para ver nuestro page rank podemos usar el plugin de firefox SeoQuake

O consultarlo en la página:
http://www.prchecker.info/

Funcionamiento interno

External Page Rank

Cada vez que una página crea urls nuevas, afecta al resto de páginas del mundo restándoles autoridad. Ya que la autoridad máxima está definida en 1 se reparte entre todas las url's del mundo. Por tanto, cuando creamos una url, estamos obteniendo la billonésima parte de 1.

Internal Page Rank

Nuestro dominio parte con un 1 de autoridad máxima.

Pregunta

  • El dominio A tiene 10 urls.
  • El dominio B tiene 100 urls.

Por tanto, las url's del dominio A tendrán más autoridad interna ya que su IPR se devide entre menos urls. El dominio B tendrá menos autoridad interna, pero más autoridad esterna, ya que el los indices de Google hay más urls para valorar.

Sobre esta auditoría

La auditoría consistirá en un unico fichero excel detallaremos todas las cosas que se pueden mejorar/corregir en la web.

Descargar plantilla

Reporte básico

Para obtener una idea de la evolción del dominio, podemos sacar un pantallazo a Search Console -> Performance

rendimiento search console

Optimización Wordpress

//Eliminar typea en la carga de script y css
add_action( 'template_redirect', function(){
    ob_start( function( $buffer ){
        $buffer = str_replace( array( 'type="text/javascript"', "type='text/javascript'" ), '', $buffer );
        
        // Also works with other attributes...
        $buffer = str_replace( array( 'type="text/css"', "type='text/css'" ), '', $buffer );
        $buffer = str_replace( array( 'frameborder="0"', "frameborder='0'" ), '', $buffer );
        $buffer = str_replace( array( 'scrolling="no"', "scrolling='no'" ), '', $buffer );
        
        return $buffer;
    });
});


//eliminar jQuery migrate
add_filter( 'wp_default_scripts', 'dequeue_jquery_migrate' );
function dequeue_jquery_migrate( &$scripts){
	if(!is_admin()){
		$scripts->remove( 'jquery');
		$scripts->add( 'jquery', false, array( 'jquery-core' ), '1.10.2' );
	}
}

//eliminar dash icons
add_action( 'wp_print_styles','my_deregister_styles', 100 );
function my_deregister_styles()    { 
	// wp_deregister_style( 'dashicons' ); 	
	wp_deregister_style( 'amethyst-dashicons-style' ); 
	wp_dequeue_style( 'genesis-sample-fonts' );
}

//Eliminar emojis
function grd_remove_emoji() {
	//remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
	remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
	remove_action( 'admin_print_styles', 'print_emoji_styles' );
	remove_action( 'wp_print_styles', 'print_emoji_styles' );
	remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
	remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
	remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
	// Remove from TinyMCE
	// add_filter( 'tiny_mce_plugins', 'grd_remove_tinymce_emoji' );
}
add_action( 'init', 'grd_remove_emoji' );

El dominio – http://midominio.es

  1. Optimización: Debería ser fácil de recordar e incluir palabras clave.
  2. Extensión y Geolocalización: Importante sobre todo para SEO en diferentes países. Diferencias entre dominios genéricos y territoriales.
  3. Alojamiento: debería alojarse en el país que concorde con su extensión. Un .com puede estar alojado en cualquier país ya que el .com no está vinculado a ninguno en concreto. Es mejor tener un dominio y un servidor para cada idioma, que un dominio para todos los idiomas. Nota: El mismo contenido en diferentes idiomas no es contenido duplicado.
  4. Antigüedad: influye la fecha desde la que se empieza a generar contenido para ese dominio. Si en el momento en que el robot está rastreando la web, está está caída, es como si hubiese quitado la página y pierdo toda la indexación.
  5. Caducidad: cuanto mayor es el plazo de expiración para la renovación, mayor solidez tendrá el proyecto. Por tanto a la hora de renovarlo escojeremos la mayor cantidad de tiempo. Esto no guarda relación con el servidor.
  6. Un dominio optimizado facilita el SEO, pero no es el único factor importante.

Información acerca de dominios

.com:
whois.net

.es
nic.es

Tipos de dominio

Dominios Branding (recomendado):

  • Reconocimiento de la marca.
  • Potencia la visibilidad de la marca.
  • Propagación en la red.

Dominios premium o de posicionamiento (posicionan muy bien, pero no dan una imagen muy seria):

  • Dominios con la Keyword a posicionar.
  • Facilita a los buscadores entender el contenido.
  • Influencia en el mercado de enlaces.

Dominios regionales vs genéricos

Dominio genérico (gTLG, geographycal Top Level Domain): Se refiere a un dominio con un enfoque más internacional y por tanto, menos localizado. En su nomenclatura no presenta referencia a ningún país.

Ejemplos:

  • .com (company)
  • .org (organization) .net (Representa a empresas dentro de las tecnologías de información o con una “red” de cualquier aspecto (social, de fibra óptica, telefonía, cable, etc) )
  • .biz (Business)
  • .info (páginas informativas, Information)
  • .mobi (9epresenta a cualquier página que quiera tener acceso especial para los usuarios de equipos móbiles).
  • .tv (representa cualquier compañia de televisión o páginas enfocadas a tener programas de televisión por internet).

Dominio regional (ccTLD, country code Top Level Domain): En su nomenclatura presenta una referencia a un país o región. Posicionará mejor en un buscador correspondiente a esa región.

Ejemplos:

  • .mx (México)
  • .us (EstadosUnidos)
  • .ue (Unión Europea)
  • .es (España)
  • .br (Brasil)
  • .ar (Argentina)
  • .cl (Chile)
  • .ca (Canada)
  • .asia (Asia en general)
  • .cat (debería tener al menos algo de contenido en catalán)

SEO On Page

Google Search Snippet

  • title
  • description
  • url
 	<html>
	<head>
		<title>Título de mi página web</title>
		<meta name="description" content ="Descripcion de mi página web" />
		<meta name="keywords" content="keyword1, keyword2, keyword3" />
	</head>

	<body>
	<!--
	Puede haber varios h2 en una misma página, pero no varios h1. De h1 a h6 hay orden progresivo de relevancia en el motor de google
	-->
		<h1>Titular de la página de primer nivel</h1>
		<p>Texto y contenido de mi primer párrafo.</p>
		<h2>Titular de la página de segundo nivel</h2>
		<p>Texto y contenido de mi segundo párrafo</p>
	</body>
</html>

<title>Título de la página</title>

Consideraciones:

  • Títulos diferentes para cada página
  • No más de 65 caracteres (si no, lo corta)
  • Sintaxis recomendada:

    Texto descriptivo optimizado | titulo de la web.

    Podemos usar el guión medio (-) o pipe (|). No usar el guión bajo, no le gusta a google.

  • Las keywords deben estar lo más a la izquierda posible. Si la keyword ocupa todos los caracteres(65), obviamos la marca.
  • En esta herramienta podremos evaluar como quedará el título de nuestra página

Ejemplos:

Correctos:

  • <title>Cursos Android | Pablo Monteserín</title>
  • <title>Curso SEO | Fórmate en posicionamiento web – Pablo Monteserín</title>

Incorrectos:

  • <title>Pablo Monteserín – Curso SEO</title>

Meta - Description

No debería pasar de los 155 caracteres. No cuenta para el rankeo, pero es lo que el usuario vé y ayuda a que haga click.

Es recomendable eliminar la meta información de las fechas de un blog, o de lo contrario google lo tiene en cuenta para no mostrar artículos antiguos. Habrá que eliminar este código:

<meta property="article:published_time" content="2013-11-07T11:01:41+00:00" />
<meta property="article:modified_time" content="2016-02-04T09:29:27+00:00" />
<meta property="og:updated_time" content="2016-02-04T09:29:27+00:00" />

URL y SEF (Search Engine Friendly)

Las url's deberían contener las keywords escogidas y ser lo más cortas posibles, nada de hacer una url hiperlarga basada en breadcrumbs (en las categorías que hay que pasar para llegar a un producto)

Encabezados: <h1>...<h6>

  1. Deberían contener las palabras clave.
  2. En HTML5 sólo debería haber una etiqueta <h1> por cada sección (antes de HTML5 era un h1 por página).
  3. Permiten identificar el contenido prioritario.
<h1>Títulos más importantes</h1>
<h2>Sub títulos</h2>
<h3>Sub títulos de tercer nivel (menos importantes)</h3>

Contenido

"El contenido manda", "el contenido es el rey". Sin contenido, no hay posicionamiento.

  • Debe ser contenido original.
  • Utilizar etiqueta <strong> para resaltar las palabras clave
  • Que las palabras clave redireccionen a enlaces internos.
  • Actualizar los contenidos periodicamente.
  • Tener un mínimo de 300 palabras de contenido. Enlace a herramienta contadora de palabras.
  • La densidad de palabras claves será de entre un 5 y un 8%. Aparecerá una vez en el título, y dentro del contenido, como máximo dos veces.
  • Poner unos gadgets en la página de inicio cuyo contenido se va actualizando periódicamente (últimas noticias, publicaciones en facebook, twitter, etc.)
  • Los sliders no son muy efectivos para el seo, pero si aún así los usamos, deberíamos renovar sus imágenes y sus etiquetas alt, por lo menos, mensualmente.

Microformatos

¿Por qué debemos considerar implementar microformatos?

Buscadores como Google, Bing, Yahoo usan los microformatos (Rich snippets, fragmentos enriquecidos) para indexar y ofrecer mejores resultados a los usuarios.

Los hay de varios tipos:

  • Personas
  • Productos
  • Recetas
  • Eventos
  • ...

Poniéndonos de acuerdo

Actualmente nos encontramos varias formas de estructurar datos:

  • RDFa W3C (2004)
  • Microformats CommerceNet (2005)
  • Microdata WHATWG (2009)

Schema.org es una iniciativa de Google, Yahoo y Bing para definir una sintaxis común para datos estructurados.

Algunos ejemplos de microformatos

  • Opiniones ("hreview")
  • Personas ("vcard")
  • Productos ("itemscope")
  • Empresas y organizaciones ("vcard")
  • Recetas ("hrecipe")
  • Eventos ("hcalendar")

Para saber si una web tiene microformatos y cuales son, podemos usar este enlace.

Por ejemplo, probar esta url: http://lacerca.com/

Ejemplo de uso de microformatos

Sin microformatos


<p>
<strong>Cesar Soplin</strong><br/> 
Jr. de la Unión 123<br/> 
Lima Perú<br/> 
987-654-32<br/>
</p>

Con microformatos

<div class="vcard">
   <span class="fn n">
    <span class="given-name">Cesar</span>
    <span class="additional-name">Soplin</span>
    <span class="family-name"></span>
   </span>
  <div class="adr">
    <div class="street-address">Jr. de la Unión 123</div>
    <span class="locality">Lima</span>
    <span class="country-name">Perú</span>
   </div>
   <div class="tel">987-654-32</div>
  </div>

Optimizar imágenes

Nombre de la imagen

Podemos optimizar el nombre de la foto poniendo las keywords. No será necesario espaciar las keywords con guiones.

Atributo alt

El atributo "alt" te permite especificar texto que puede aparecer en vez de la imagen, si ésta no puede mostrarse por la razón que sea. Además, google utiliza el alt para indexar la imagen en el "google images" (el buscador de imagenes de google).

No es necesario optimizar ni poner el alt en todas las imágenes. Se optimizan sólo las imágenes que guardan relación directa con la landing page. No optimizaríamos iconos, flechitas, etc.

Atributo title

No tiene una gran relevancia de cara al SEO.

Enlaces

El anchor text debería ser la keyword.

<a href="pagina.html">Aqui ponemos la keyword</a>

Actualmente la gestión de google del SEO ignora el atributo title.

Enlaces entrantes y salientes

Enlaces de calidad son aquellos a páginas que utilizan keywords similares las tuyas. Para conseguir esto es posible comprar un nuevo dominio con un microsite o página satélite que enlace al nuestro. Dicho microsite no puede tener contenido duplicado (google lo penaliza). Además como este dominio está optimizado, posicionará mejor de cara a cierto criterio de búsqueda.
Si lo que deseamos es mejorar el posicionamiento de la página madre, el microsite debería tener un enlace a la página madre, pero no al revés.

Recomendaciones

  • En una página web no debería haber más de 100 enlaces a otras páginas.
  • No usar muchas imágenes (ni en cantidad ni en peso).
  • Evitar el diseño web con tablas.
  • Ceñirse a los estandares web de HTML: W3C validator.
  • Ceñirse a los estandares web de CSS: CSS validator
  • Evitar páginas 404. W3C checklink.
  • Evitar abreviaturas (BCN en vez de Barcelona).

Errores 404 en páginas que sí se ven

A veces una página devuelve una cabecera de error 404 a pesar de que sí se está viendo. Google web master tools nos indicará que tenemos enlaces rotos, pero cuando pulsamos el enlace, la página se ve. Esto ocurre porque la página tiene un tipo de error que devuelve esta cabecera 404. Acompañando a la cabecera suele ir un documento que describe el error, este documento puede ser la propia página, y por eso aparentemente la página se ve bien.

Enlaces internos

De la documentación oficial:El número de enlaces internos dirigidos a una página es una señal para los motores de búsqueda acerca de la importancia relativa de dicha página. Si una página importante no se muestra en esta lista o si una página menos importante tiene un número relativamente grande de enlaces internos, considera la opción de revisar tu estructura de enlaces internos.

Enlaces Externos (backlinks)

Para ver los enlaces externos a tu página utilizando una herramienta gratuita puedes usar Search Console -> Links

El atributo 'nofollow' se creó para que una página grande apunte a otra página sin cederle su page rank.

Ningún enlace interno debe usar el atributo 'nofollow'

Para no transmitir autoridad, usaremos el atributo rel="nofollow"

Dónde poner el rel="nofollow"

Si piensas que el enlace que estás usando es de interés para el usuario y lleva a un sitio con autoridad, déjalo como dofollow.

El atributo de enlace nofollow no evita que la página se indexe.

No es recomendable usar el atributo nofollow para páginas internas, ya que evita que el page rank fluya.

Matt Cutts, ex-ingeniero de Google:

  • Junio 2010: “Permitidme decirlo más claro: Yo no usaría nofollow en enlaces internos.”
  • Octubre 2013: “Para cada enlace dentro de tu sito Web, que sea un enlace que lleva de una página interna a otra interna, me aseguraría que el PageRank fluya, eso quiere decir, dejar de usar el nofollow.”

Obtención de enlaces externos

  • Pidiendoselo a un contacto.
  • Outreach: Pagando u ofreciendo algo a cambio a alguien
  • Creando un podcast y publicandolo. En la página de publicación puedo tener un enlace entrante:
  • Publicación de recursos (código fuente en github, plugins en jQuery.com o wordpress.com, etc)
  • Utilizando una aplicación de pago (ahrefs, sistrix, semrush...) podremos ver los backlinks de la competencia para tratar de imitar sus estrategias de link building.
  • Skyscrapper. Consiste en mejorar un artículo ya existente y notificar a la gente que enlazaba al artículo anterior que has creado un artículo mejor que el que estás enlazando. El problema es que lleva bastante esfuerzo.
  • Artículo épico. Consiste en crear un artículo épico y emocionante, que pueda viralizarse con cierta facilidad.

Técnicas desaconsejadas

  • Intercambio de enlaces.
  • Guest posts en (si huelen a kilómetros, porque tienen en un enlace al principio, porque son de un tema que no es del que nosotros tratamos, etc.)
  • Spam en foros.
  • Enlaces no temáticos (desde páginas que no son del mismo tema que la mía).

Algunas estrategias para conseguir enlaces entrantes

  • Utilizando la mozbar podemos buscar los sites con mayor autoridad para las palabras que tratamos de posicionar. Con la herramienta moz explorer podemos ver desde dónde consiguen su tráfico. Podemos ponernos en contacto con los sites que les dan autoridad para proponerles un artículo, una colaboración, comprar de publicidad, etc.
  • Hablando con clientes, proveedores o partners para negociar un link. No hace falta que pongan un enlace en el footer, o en una sección de partners, eso generalmente no tiene ningún valor. Es mejor que hagan un guest-post, un artículo con un enlace a nuestro site.
  • Buscar enlaces rotos a nuestro site, y solventarlos con una redirección 301
  • Solicitar que alguién que ha enlazado con nuestro site, mejore el anchor text

Disavow

En esta url, seleccionaremos el dominio y subiremos el fichero. No podemos subir más de un fichero, sólo modificar el que hay subido. El formato de descarga es CSV y el de subida, txt, por lo que no puedo descargar el fichero que subimos originalmente, por lo que conviene guardar una copia. Si te arrepientes de subir el fichero y lo cambias, una re-autorización puede llevar mucho tiempo y es posible que no recuperen el valor que tenían antes.

Obtener la lista de disavow link
Con ahrefs
disavow links

Diseño

  • La web debe ser responsive

Cache de Google

Google detecta que hay vida en la web. Para que la web tenga vida, existen varias opciones

  • Nuestra principal herramienta para generar contenido, generalmente, será un blog.
  • Un foro es un excelente generador de contenido. Sin embargo, requiere mucho esfuerzo. Si no funciona, para dinamizarlo, debes crear usuarios ficticios y animar a los de verdad para dar vidilla (a no ser que ya tengas esa comunidad creada). Por otra parte, cuando funciona y va solo, debes dedicar el esfuerzo a frenarlo y asegurarte que no se va de madre.
  • Responder a mails con preguntas y cuestiones de interés general como una entrada de un blog. En lugar de escribir la respuesta en el mail, indicaremos al usuario la url dónde hemos escrito su respuesta.
  • Curación de contenidos. Consiste escribir un artículo a partir de otros artículos. De esta forma es posible escribir aunque no seas un experto en la materia y crear un contenido de calidad y genuino.

Conocer cuando fue la última vez que el robot de google pasó por mi página web y que fue lo que almacenó:

cache:pablomonteserin.com 

One Page sites

Contenido

Cuando tenemos varias páginas, es sencillo orientar cada página a un objetivo y enfocarla para ser encontrada a partir de ciertas keywords. Sin embargo, si recojemos en una sola página todo el contenido de nuestra web, es más difícil lograr este objetivo.

Un site dividido en varias páginas o secciones es mucho más escalable. Si tienes todo el contenido en una sola página puedes terminar generando un html de 30000 líneas de código, y esto no es muy saludable.

Links entrantes

Es más fácil que alguien nos enlace a una página a la que tratamos un tema específico que sólo a la genérica página de inicio, que es lo único que tenemos en un one page site.

Sitemap

Dos tipos:

  • En formato .html, orientado al usuario para facilitar su navegación.
  • En formato .xml. El más importante para el SEO. Puede enviarse a través de las Herramientas para webmasters de Google, facilita que Google encuentre las páginas de tu sitio web.

Crear un archivo SiteMap: http://www.xml-sitemaps.com/

Subir el archivo SiteMap: http://www.google.com/webmasters/tools/

Scream Frog para el análisis one page

Meta Etiquetas

Title

  • ¿El title tiene entre 50 y 60 palabras y no está duplicado en otras páginas.
    • Web master tools -> Search Appearance -> HTML improvements
    • Screaming Frog
  • ¿Tiene la palabra clave?
  • ¿Es atractivo?

Description

  • ¿Tiene menos de 155 caracteres y no está duplicada?
  • ¿Contiene la palabrra clave?

Contenido

  1. La home tiene suficiente texto
  2. Urls amigables activadas (wordpress)
  3. Página de error 404 correcta
  4. Quitamos de las url's amigables las palabras vacías (pronombres, artículos, etc.)
  5. Los enlaces a url's externas deben tener el atributo target="_blank". Examinar los enlaces a las redes sociales.
    Para ello, en el screaming from iremos a "Menu configuration -> Custom -> Extraction" y usaremos el siguiente selector:
    a:not([target="_blank"]):not([href^="https://pablomonteserin.com"])

Imágenes

  1. Nombres de imágenes y textos alternativos con palabras clave.
  2. No deben pesar mas de 100 kb. Para comprimir las imágenes, usaremos https://tinyjpg.com/
  3. Para poder ver en la biblioteca de medios de Wordpress si una imagen tiene texto alternativo sin tener que meternos dentro, podemos usar este código en el functions.php:
    function wpse_media_extra_column( $cols ) {
        $cols["alt"] = "ALT";
        return $cols;
    }
    function wpse_media_extra_column_value( $column_name, $id ) {
        if( $column_name == 'alt' )
            echo get_post_meta( $id, '_wp_attachment_image_alt', true);
    }
    add_filter( 'manage_media_columns', 'wpse_media_extra_column' );
    add_action( 'manage_media_custom_column', 'wpse_media_extra_column_value', 10, 2 );

Links

  • No hay errores 404
    • Screaming Frog -> Response Codes
  • Los anchor texts de los enlaces son descriptivos
    • Screaming Frog -> Bulk Export -> All Anchor Text
  • Obtener los backlinks que llevan a páginas de error:
    • En Semrush: Busco el dominio -> Backlinks -> busco errores 404.
  • Comprobación de que todas las url's apunten al mismo protocolo. Screaming Frog -> Columna derecha -> Protocol -> Selecciono el protocolo incorrecto -> En el cuadro de filtro escribo la url de la web con el protocolo incorrecto para ver si hay alguna ocurrencia.

Velocidad

  • Gestionar la caché por código y no por plugin. El siguiente código activa la compresión gzip en caso de que el servidor tenga este módulo instalado. Para comprobar si gzip está instalado, podemos usar este servicio.
    # BEGIN WP Rocket v3.2.2
    # Use UTF-8 encoding for anything served text/plain or text/html
    AddDefaultCharset UTF-8
    # Force UTF-8 for a number of file formats
    <IfModule mod_mime.c>
    AddCharset UTF-8 .atom .css .js .json .rss .vtt .xml
    </IfModule>
    
    # FileETag None is not enough for every server.
    <IfModule mod_headers.c>
    Header unset ETag
    </IfModule>
    
    # Since we’re sending far-future expires, we don’t need ETags for static content.
    # developer.yahoo.com/performance/rules.html#etags
    FileETag None
    
    # Send CORS headers if browsers request them; enabled by default for images.
    <IfModule mod_setenvif.c>
    <IfModule mod_headers.c>
    # mod_headers, y u no match by Content-Type?!
    <FilesMatch "\.(cur|gif|png|jpe?g|svgz?|ico|webp)$">
    SetEnvIf Origin ":" IS_CORS
    Header set Access-Control-Allow-Origin "*" env=IS_CORS
    </FilesMatch>
    </IfModule>
    </IfModule>
    
    # Allow access to web fonts from all domains.
    <FilesMatch "\.(eot|otf|tt[cf]|woff2?)$">
    <IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
    </IfModule>
    </FilesMatch>
    
    <IfModule mod_alias.c>
    <FilesMatch "\.(html|htm|rtf|rtx|txt|xsd|xsl|xml)$">
    <IfModule mod_headers.c>
    Header set X-Powered-By "WP Rocket/3.2.2"
    Header unset Pragma
    Header append Cache-Control "public"
    Header unset Last-Modified
    </IfModule>
    </FilesMatch>
    
    <FilesMatch "\.(css|htc|js|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|json|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|otf|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$">
    <IfModule mod_headers.c>
    Header unset Pragma
    Header append Cache-Control "public"
    </IfModule>
    </FilesMatch>
    </IfModule>
    
    # Expires headers (for better cache control)
    <IfModule mod_expires.c>
    	ExpiresActive on
    	# Perhaps better to whitelist expires rules? Perhaps.
    	ExpiresDefault                              "access plus 1 month"
    	# cache.appcache needs re-requests in FF 3.6 (thanks Remy ~Introducing HTML5)
    	ExpiresByType text/cache-manifest           "access plus 0 seconds"
    	# Your document html
    	ExpiresByType text/html                     "access plus 0 seconds"
    	# Data
    	ExpiresByType text/xml                      "access plus 0 seconds"
    	ExpiresByType application/xml               "access plus 0 seconds"
    	ExpiresByType application/json              "access plus 0 seconds"
    	# Feed
    	ExpiresByType application/rss+xml           "access plus 1 hour"
    	ExpiresByType application/atom+xml          "access plus 1 hour"
    	# Favicon (cannot be renamed)
    	ExpiresByType image/x-icon                  "access plus 1 week"
    	# Media: images, video, audio
    	ExpiresByType image/gif                     "access plus 4 months"
    	ExpiresByType image/png                     "access plus 4 months"
    	ExpiresByType image/jpeg                    "access plus 4 months"
    	ExpiresByType image/webp                    "access plus 4 months"
    	ExpiresByType video/ogg                     "access plus 1 month"
    	ExpiresByType audio/ogg                     "access plus 1 month"
    	ExpiresByType video/mp4                     "access plus 1 month"
    	ExpiresByType video/webm                    "access plus 1 month"
    	# HTC files  (css3pie)
    	ExpiresByType text/x-component              "access plus 1 month"
    	# Webfonts
    	ExpiresByType application/x-font-ttf        "access plus 1 month"
    	ExpiresByType font/opentype                 "access plus 1 month"
    	ExpiresByType application/x-font-woff       "access plus 1 month"
    	ExpiresByType application/x-font-woff2      "access plus 1 month"
    	ExpiresByType image/svg+xml                 "access plus 1 month"
    	ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
    	# CSS and JavaScript
    	ExpiresByType text/css                      "access plus 1 year"
    	ExpiresByType application/javascript        "access plus 1 year"
    </IfModule>
    # Gzip compression
    <IfModule mod_deflate.c>
    # Active compression
    SetOutputFilter DEFLATE
    # Force deflate for mangled headers
    <IfModule mod_setenvif.c>
    <IfModule mod_headers.c>
    SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
    RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
    # Don’t compress images and other uncompressible content
    SetEnvIfNoCase Request_URI \
    \.(?:gif|jpe?g|png|rar|zip|exe|flv|mov|wma|mp3|avi|swf|mp?g|mp4|webm|webp|pdf)$ no-gzip dont-vary
    </IfModule>
    </IfModule>
    
    # Compress all output labeled with one of the following MIME-types
    <IfModule mod_filter.c>
    AddOutputFilterByType DEFLATE application/atom+xml \
    		                          application/javascript \
    		                          application/json \
    		                          application/rss+xml \
    		                          application/vnd.ms-fontobject \
    		                          application/x-font-ttf \
    		                          application/xhtml+xml \
    		                          application/xml \
    		                          font/opentype \
    		                          image/svg+xml \
    		                          image/x-icon \
    		                          text/css \
    		                          text/html \
    		                          text/plain \
    		                          text/x-component \
    		                          text/xml
    </IfModule>
    <IfModule mod_headers.c>
    Header append Vary: Accept-Encoding
    </IfModule>
    </IfModule>
    
    <IfModule mod_mime.c>
    AddType text/html .html_gzip
    AddEncoding gzip .html_gzip
    </IfModule>
    <IfModule mod_setenvif.c>
    SetEnvIfNoCase Request_URI \.html_gzip$ no-gzip
    </IfModule>
    
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTPS} on [OR]
    RewriteCond %{SERVER_PORT} ^443$ [OR]
    RewriteCond %{HTTP:X-Forwarded-Proto} https
    RewriteRule .* - [E=WPR_SSL:-https]
    RewriteCond %{HTTP:Accept-Encoding} gzip
    RewriteRule .* - [E=WPR_ENC:_gzip]
    RewriteCond %{REQUEST_METHOD} GET
    RewriteCond %{QUERY_STRING} =""
    RewriteCond %{HTTP:Cookie} !(wordpress_logged_in_|wp-postpass_|wptouch_switch_toggle|comment_author_|comment_author_email_) [NC]
    RewriteCond %{REQUEST_URI} !^(/(.+/)?feed/?|/finalizar-compra/(.*)|/(index\.php/)?wp\-json(/.*|$))$ [NC]
    RewriteCond %{HTTP_USER_AGENT} !^(facebookexternalhit).* [NC]
    RewriteCond "%{DOCUMENT_ROOT}/usr/wp-content/cache/wp-rocket/%{HTTP_HOST}%{REQUEST_URI}/index%{ENV:WPR_SSL}.html%{ENV:WPR_ENC}" -f
    RewriteRule .* "/usr/wp-content/cache/wp-rocket/%{HTTP_HOST}%{REQUEST_URI}/index%{ENV:WPR_SSL}.html%{ENV:WPR_ENC}" [L]
    </IfModule>
    # END WP Rocket

robots.txt

Indica a que páginas tendrán acceso los motores de búsqueda y a a cuales no. Es mejor no tocarlo y si queremos que una página no sea indexada, hacerlo mediante los meta robots. Así evitaremos que una página que hemos bloqueado en el robots.txt sea indexada porque se nos olvidó poner la meta robot. Si esto ocurriese, estaríamos indexando una página con contenido vacío.

Debe estar en la raíz del sitio.

Ejemplo:
User-agent: *
Disallow: /backend/
Disallow: /tmp/
Sitemap: http://www.pablomonteserin.com/sitemap.xml
		
	

Los robots de cualquier motor de búsqueda (señalados con el carácter comodín *) que siguen las normas no indexarán el contenido bajo los directorio /backend/ ni cualquier URL que empiece por /tmp

Validador de nuestro robots.txt:
http://tool.motoricerca.info/robots-checker.phtml

Ejemplo largo de robots.txt

Estos son los los nombres de los crawlers más importantes:

  • Ask: Teoma
  • Bing: MSNbot
  • Google: Googlebot
  • Yahoo!: Slurp

Si deseamos bloquear ciertas páginas en algunos crawlers es necesario primero colocar las instrucciones para los crawlers y al último las instrucciones para todos los crawlers, como se muestra en el siguiente ejemplo:


User-agent: teoma
Disallow: /ask/
User-agent: msnbot
Disallow: /bing-no-es-novedoso/
Disallow: /bing-no-es-novedoso/aun-sin-gustarme.html
User-agent: googlebot
Disallow: /lo-feo-de-google/
User-agent: slurp
Disallow: /yahoo-no-me-gusta/
User-agent: *
Disallow: /privado/

Si colocamos al inicio las instrucciones para todos los crawlers, las demás instrucciones no serán leídas.

Debemos comprobar que existe un robots.txt que referencia al sitemap.xml (http://dominio.com/robots.txt)

robots.txtUser-agent: *
Disallow: /sites/ 
Disallow: /wp-login.php
Disallow: /apuntes/*.html$
Disallow: /*?filename=*&otroparametro=*
crawl-delay: 10
Sitemap: https://pablomonteserin.com/sitemap.xml

Indexar / follow

  • Indexar una url es lograr que aparezca en los resultados de búsqueda de google. Algunas páginas que queremos que google no indexe:
    • Textos legales.
    • Url's que genera wordpress (para fechas, autores, imágenes, etc).
    • Entradas del blog que se podrían canibalizar.
    • Fichas de producto sin búsquedas o que se podrían canibalizar.
  • Follow de una url, significa que google siga los enlaces de esa url. No usaremos el atributo nofollow en ninguna página, ya que queremos que el motor de búsqueda siga todos los enlaces de la web.
Esta meta le dice a cualquier robot que quieres que indexe tu página, y que siga sus links:<meta name="robots" content="index, follow">
Esta meta es una abreviatura de la anterior:
<meta name="robots" content="all">
Esta hace lo contrario:<meta name="robots" contents="noindex, nofollow">

Ojo! debemos asegurarnos de que el contenido no indexado no esté incluído en el sitemap.xml. Sería una contradicción.

Contenido duplicado

Google no penaliza el contenido duplicado. Simplemente no indexa las páginas que lo tienen.

No obstante si Google detecta que un sitio web tiene mucho contenido duplicado, si que la va a penalizar o incluso puede dejar de indexarla.

Causas de contenido duplicado

  • Tener contenido duplicado.
  • Si tomas un artículo de otra página y lo traduces tal cual con el google translate, google te penaliza. Si lo traduces manualmente, y google lo detecta, también lo tendrá en cuenta.
  • Si puedes acceder a tu dominio de estas dos formas: pablomonteserin.com y www.pablomonteserin.com, tienes contenido duplicado.
  • Si puedes acceder a tu dominio de estas dos formas http://pablomonteserin.com y https://pablomonteserin.com, tienes contenido duplicado.
  • En general, si tienes dos url's diferentes que muestran al mismo contenido. Tienes contenido duplicado. Algunas páginas manejan el id de sesión en la url, con lo cual, están generando contenido duplicado.
  • Podemos indicar que una única url puede contener información en varios idiomas

    <link rel="alternate" hreflang="x-default" href="urlquetendracontenidoenvariosidiomas.com">
  • En el caso de que el contenido duplicado sea una traducción, podemos indicarle al buscador que la página actual tiene una versión traducida en otra url con esta etiqueta:

    <link rel="alternate" hreflang="en" href="urldelapagina.com/en">
  • Si tienes en tu propio site dos páginas que dicen más o menos lo mismo.
    Pondremos esta etiqueta en la cabecera, apuntando a la página dónde está el contenido original. Puede ser interesante cuando tengamos varias fichas de producto similares.
    <link rel="canonical" href="https://webdelaempresa.com/articulo" />
    
  • Los filtros. No debes permitir que Google te indexe las páginas con productos repetidos por haber sido filtrados (por talla, color, etc.). A menos que el usuario te busque en Google utilizando las palabras clave de algún filtro en la url.
  • Los textos legales (aviso legal, política de privacidad...)
  • Las paginaciones
    Para evitar contenido duplicado en las paginaciones, usaremos:

    Suponinendo que estamos en la página 2<link rel="next" href="URL DE LA PÁGINA 3" />
    <link rel="prev" href="URL DE LA PÁGINA 1" />

Puedes utilizar esta herramienta para buscar las páginas que tienen el mismo contenido que la url introducida.

Certificado de seguridad

Google penaliza tu posicionamiento si no lo tienes. Esto hará que tu url sea https, en lugar de http. El más económico (y perfecto para nuestros propósitos) cuesta 80 euros al año.

Google Search Console

Comprobaciones que hay que hacer

  • En la sección coverage (cobertura) no hay errores. Un error muy típico es tener deshabilitada una página en el sitemap.xml pero no tener puesto el no index.
  • Tenemos un sitemap.xml (http://dominio.com/sitemap.xml) y es referenciado en la Google Search Console.
  • Redirección múltiple (cuando una redirección nos lleva a una página que a su vez es una redirección): Menú reports -> Redirect Chains
  • Las url's no se canibalizan. Search console -> Performance -> Filtramos por la query que pensamos que se puede estar canibalizando -> En la pestaña page podemos ver si hay varias url's compitiendo por la misma query.
  • Buscar url's que están en la segunda página de Google para tratar de mejorarlas y meterlas en la primera: Performance -> Click en Average Position para ver la position en el listado -> buscamos las url's que están entre la 11 y la 20. Para potenciarlas:
    • pasarle un seo quake a esa url para ver que se puede mejorar
    • Escribir un post en el blog y enlazarlo con esa url para potenciarla.
    • Añadir una imagen con texto alternativo
    • Optimizacion en general

Evaluar la prograsión de una web

evaluar la evolución de una web con google search console
icono de mandar un mailPreguntame lo que quieras!
Pablo Monteserín
contacta conmigoPablo Monteserín

El servicio de resolución de dudas técnicas es sólo para los usuarios premium. Si tienes cualquier otra duda, usa el formulario de contacto. ¡Gracias!