Categorías
WPO

Recopilación de recursos para aumentar el WPO de una página web

Javascript

Lazy Load en javascript puro

Imágenes

Galerías de imágenes SVG gratis

Categorías
SEO

Metatags og: las metas para facebook

Para decir a facebook que coja un titulo, una descripción o una imagen en concreto utilizaremos el protocolo Open Graph con las siguientes metatags.

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="https://www.facebook.com/2008/fbml">
<head>
<meta property="og:title" content=""/>
<meta property="og:type" content=""/>
<meta property="og:url" content=""/>
<meta property="og:image" content=""/>
<meta property="og:site_name" content=""/>
<meta property="fb:admins" content="USER_ID"/>
<meta property="og:description" content=""/> 
</head> 
<body>
</body>
</html>

El protocolo Open Graph define cuatro propiedades necesarias:

og:title – Define el titulo de la pagina
og:type – Define el tipo de objeto, puedes consultar la lista completa.
og:image – Es la url de la imagen que se mostrara en facebook el tamaño es de 50x50px y tener una relacion de aspecto de 3:1 como maximo. Formatos que soporta PNG, JPEG y GIF.Se pueden incluir varias metas og:image para asociarlas a su pagina.
og:url – Url canonical de la pagina.

Existen otras metas adicionales si tienes una aplicación en facebook

fb:app_id – La ID de la plataforma facebook.
og:site_name – El nombre de su sitio.
og:description – Descripción de su sitio

Categorías
SEO

Cabeceras HTTP

X-Content-Type-Options:nosniff

X-Content-Type-Options: nosniff es una cabecera que se utiliza para la prevención de ataques de MIME-Type confusion.

Solo afecta a las hojas de estilos y a los script.

Si se recibe la directiva nosniff en una respuesta de una hoja de estilos, Internet Explorer no carga la hoja de estilos a menos que el tipo MIME sea el correcto text/css.

Si se recibe la directiva nosniff en una respuesta de un script, Internet Explorer no carga el «script» de archivos a menos que el tipo MIME coincida con uno de los siguientes valores:

  • application/ecmascript
  • application/javascript
  • application/x-javascript
  • text/ecmascript
  • text/javascript
  • text/jscript
  • text/x-javascript
  • text/vbs
  • text/vbscript

Por ejemplo, HTTP-response:

HTTP/1.1 200 OK
Content-Length: 108
Date: Thu, 26 Jun 2008 22:06:28 GMT
Content-Type: text/plain;
X-Content-Type-Options: nosniff

<html>
<body bgcolor="#AA0000">
This page renders as HTML source code (text) in IE8.
</body>
</html>

X-Download-Options: noopen

X-Download-Options: noopen, esta cabecera sirve para forzar el guardado del archivo antes de poder abrirlo, evitando asi que se ejecute en el contexto de la seguridad de su web.

HTTP/1.1 200 OK
Content-Length: 238
Content-Type: text/html
X-Download-Options: noopen
Content-Disposition: attachment; filename=untrustedfile.html
Categorías
SEO

Como eliminar la cabecera etag en iis 7.5

<rewrite>
<outboundRules>
<rule name="Eliminar ETag">
<match serverVariable="RESPONSE_ETag" pattern=".+" />
<action type="Rewrite" value="" />
</rule>
</outboundRules>
</rewrite>
Categorías
SEO

¿Que es el sitemap.xml y cómo se crea?

Un Sitemap, en su forma más sencilla, es un archivo XML que enumera las URL de un sitio junto con metadatos adicionales acerca de cada una de ellas: la última actualización, frecuencia de modificación, importancia, en relación con las demás URL del sitio; así, los motores de búsqueda pueden llevar a cabo rastreos del sitio de una forma más inteligente.

Los rastreadores web suelen encontrar páginas a partir de vínculos del sitio y a partir de otros sitios. Sitemaps ofrece estos datos para que los rastreadores compatibles puedan seleccionar todas las URL del Sitemap y obtengan información de ellas mediante los metadatos asociados.

El uso del protocolo Sitemaps no garantiza que las páginas web se incluyan en los motores de búsqueda, pero proporciona sugerencias para mejorar el trabajo de los rastreadores web al rastrear su sitio.

Sitemap 0.90 está sujeto a las condiciones de la licencia Attribution-ShareAlike Creative Commons License y es compatible con muchos servicios, incluidos Google, Yahoo! y Microsoft.

Formato XML

Este documento describe el esquema XML para el protocolo Sitemap.

El formato del protocolo Sitemap consta de etiquetas XML. Todos los valores de datos de un Sitemap deben incluir caracteres de escape de entidad. El propio archivo debe estar codificado en UTF-8.

El Sitemap debe:

  • Comenzar con una etiqueta de apertura <urlset> y terminar con una de cierre </urlset>.
  • Especificar el espacio de nombres (protocolo estándar) en la etiqueta urlset.
  • Incluir una entrada <url> para cada dirección URL como una etiqueta XML principal.
  • Incluir una entrada secundaria <loc> para cada etiqueta principal <url>.

Las demás etiquetas son opcionales. La compatibilidad de estas etiquetas opcionales puede variar en función del motor de búsqueda. Consulte la documentación específica de cada uno de ellos para obtener información detallada.

Ejemplo de un sitemap

El siguiente ejemplo muestra un Sitemap que contiene únicamente una URL y usa todas las etiquetas opcionales.

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://megazona.com/</loc>
<changefreq>hourly</changefreq>
<priority>1.00</priority>
</url>
</urlset>

Definiciones de las etiquetas XML

Las etiquetas XML disponibles se describen a continuación.

<urlset>

Obligatorio

Encapsula el archivo y hace referencia al protocolo estándar actual.

<url>

Obligatorio

Etiqueta principal de cada entrada de URL. Las demás etiquetas son secundarias de esa.

<loc>

Obligatorio

URL de la página. Esta URL debe comenzar con el protocolo (por ej., http) y acabar con una barra diagonal, si su servidor web así lo requiere. Este valor debe contener menos de 2.048 caracteres.

<lastmod>

Opcional

Fecha de la última modificación del archivo. Esta fecha debe encontrarse en formato Fecha y hora de W3C. Este formato le permite omitir la parte referente a la hora, si así lo desea, y utilizar AAAA-MM-DD.

Tenga en cuenta que esta etiqueta es independiente de la cabecera “If-Modified-Since (304)” que puede mostrar el servidor y que los motores de búsqueda pueden utilizar la información de ambas fuentes de forma diferente.

<changefreq>

Opcional

Frecuencia con la que puede cambiar esta página. Este valor proporciona información general a los motores de búsqueda y es posible que no se corresponda exactamente con la frecuencia de rastreo de la página. Valores aceptados:

  • always
  • hourly
  • daily
  • weekly
  • monthly
  • yearly
  • never

El valor «always» (siempre) debe utilizarse para describir documentos que cambian cada vez que se obtiene acceso a ellos. El valor «never» (nunca) debe utilizarse para describir direcciones URL archivadas.

Tenga en cuenta que el valor de esta etiqueta se considera una sugerencia y no una orden.

A pesar de que los rastreadores de motores de búsqueda puedan tener en cuenta esta información a la hora de tomar decisiones, pueden rastrear páginas marcadas «hourly» (cada hora) con menor frecuencia de lo que indica la marca, así como rastrear páginas marcadas «yearly» (cada año) con más asiduidad.

Asimismo, pueden rastrear periódicamente páginas marcadas «never» (nunca) para poder manejar los cambios inesperados que se produzcan en ellas.

<priority>

Opcional

La prioridad de esta dirección URL es relativa con respecto a las demás URL de su sitio. Los valores válidos abarcan desde 0,0 a 1,0. Este valor no afecta a la comparación de sus páginas con respecto a las de otros sitios; únicamente permite informar a los motores de búsqueda de las páginas que considera más importantes para los rastreadores.

La prioridad predeterminada de una página es 0,5.

Tenga en cuenta que la prioridad que asigne a la página no suele influir en la posición de sus URL en las páginas de resultados de los motores de búsqueda. Los motores de búsqueda pueden utilizar esta información para elegir entre varias URL del mismo sitio, de modo que puede emplear esta etiqueta para incrementar las probabilidades de que sus páginas más importantes se incluyan en un índice de búsqueda.

Asimismo, tenga en cuenta que la asignación de alta prioridad a todas las URL de su sitio probablemente no le servirá de ayuda, dado que la prioridad es relativa y sólo se utiliza para elegir entre las distintas URL de su sitio.

Caracteres de escape del sitemap.xml

CarácterCódigo de caracteres de escape
Símbolo de unión&&amp;
Comillas simples&apos;
Comillas«&quot;
Mayor que>&gt;
Menor que<&lt;

Creación de un indice de sitemaps

Puede proporcionar varios archivos de Sitemap, pero cada uno de ellos deberá contener un máximo de 50.000 direcciones URL y no superar los 50 MB (52,428,800 bytes). Si lo desea, puede comprimir sus archivos de Sitemap con gzip para reducir sus requisitos de ancho de banda; no obstante, el archivo de Sitemap comprimido no debe superar los 50 MB.

Si desea incluir más de 50.000 direcciones URL, deberá crear varios archivos de Sitemap.

Si proporciona varios Sitemaps, debe enumerarlos todos en un archivo de índice de Sitemap.

Los archivos de índice de Sitemap no pueden contener más de 50.000 Sitemaps y no deben superar los 50 MB (52,428,800 bytes), aunque se pueden comprimir.

Es posible disponer de más de un archivo de índice de Sitemap. El formato XML de un archivo de índice de Sitemap es muy parecido al formato XML de un archivo de Sitemap.

El archivo de índice de Sitemap debe:

  • Comenzar con una etiqueta de apertura <sitemapindex> y terminar con una de cierre </sitemapindex>.
  • Incluir una entrada <sitemap> para cada Sitemap como una etiqueta XML principal.
  • Incluir una entrada secundaria <loc> para cada etiqueta principal <sitemap>.
  • La etiqueta opcional <lastmod> también está disponible para archivos de índice de Sitemap.

Nota: Un archivo de índice de Sitemap sólo puede especificar Sitemaps que se encuentren en la misma ubicación que el archivo de índice de Sitemap.

Por ejemplo, http://www.susitio.es/sitemap_index.xml puede incluir Sitemaps en http://www.susitio.es, pero no en http://www.ejemplo.es o http://suhost.susitio.es. Igual que ocurre con los Sitemaps, el archivo de índice de su Sitemap debe estar codificado en UTF-8.

Índice XML de Sitemap de ejemplo

El siguiente ejemplo muestra un índice de Sitemap que incluye dos Sitemaps:

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>http://www.example.com/sitemap1.xml.gz</loc>
<lastmod>2004-10-01T18:23:17+00:00</lastmod>
</sitemap>
<sitemap>
<loc>http://www.example.com/sitemap2.xml.gz</loc>
<lastmod>2005-01-01</lastmod>
</sitemap>
</sitemapindex>

Nota: las direcciones URL de Sitemap, como todos los valores de sus archivos XML, deben incluir caracteres de escape de entidad.

Definiciones de etiquetas XML de índice de Sitemap

<sitemapindex>

Obligatorio

Encapsula información acerca de todos los Sitemaps del archivo.

<sitemap>

Obligatorio

Encapsula información acerca de un Sitemap concreto.

<loc>

Obligatorio

Identifica la ubicación del Sitemap. Esta ubicación puede ser un Sitemap, un archivo Atom, un archivo RSS o un archivo de texto.

<lastmod>

Opcional

Identifica la hora a la que se modificó el Sitemap correspondiente. No es la hora de modificación de alguna de las páginas incluidas en el Sitemap. El valor de la etiqueta lastmod debe encontrarse en formato Fecha y hora de W3C.

Al proporcionar la marca horaria de la última modificación, permite que los rastreadores de motores de búsqueda obtengan únicamente un subconjunto de los Sitemaps del índice, es decir, el rastreador sólo podrá obtener Sitemaps que han sido modificados a partir de una fecha concreta.

Este mecanismo de obtención de Sitemap incremental permite un rápido descubrimiento de nuevas URL en sitios de gran tamaño.

Categorías
SEO

Como optimizar el foro phpbb para el seo

Como quitar Ver tema y Ver Foro del titulo de la pagina en phpbb 2

Editar el fichero viewtopic.php
Buscar:

page_header($user->lang['VIEW_TOPIC'] . ' - ' . $topic_data['topic_title'], true, $forum_id);

Reemplazar por:

page_header( $topic_data['topic_title']);

Editar el fichero viewforum.php

Buscar:

page_header($user->lang['VIEW_FORUM'] . ' - ' . $forum_data['forum_name'], true, $forum_id);

Reemplazar por:

page_header($forum_data['forum_name']);

Quitar index.php de la url en phpbb 2

Editar el fichero includes/funtions.php

Buscar:

'U_INDEX'=> append_sid("{$phpbb_root_path}index.$phpEx"),

Reemplazar por:

'U_INDEX'=> append_sid("{$phpbb_root_path}"),
Categorías
SEO

Paginación de resultados con rel=»next» y rel=»prev»

De forma similar a como rel=”canonical” indica claramente el contenido duplicado, ahora puedes utilizar los elementos de vinculación HTML rel=»next» y rel=»prev» [inglés] para indicar la relación entre las direcciones URL de los componentes de una serie paginada.

En un sitio web, una serie paginada de contenido puede tener muchas formas, desde un artículo dividido en varias páginas de componentes, hasta una categoría de productos con elementos repartidos a lo largo de varias páginas o un hilo de un foro dividido en una secuencia de direcciones URL.

Ahora, si incluyes los elementos de marcado rel=»next» y rel=»prev» en las páginas de los componentes de una serie, estarás indicando a Google claramente que quieres que:

  • Consolidemos las propiedades de indexación, como los enlaces, desde las direcciones URL o las páginas de los componentes hasta la serie como conjunto (es decir, que los enlaces no deben estar dispersos entre página-1.html, página-2.html, etc., sino que deben estar agrupados con la secuencia).
  • Enviemos a los usuarios a la página o a la URL más relevante, normalmente la primera página de la serie.

Ahora es posible indicar a Google la relación entre las URL de los componentes de una serie mediante rel=»next» y rel=»prev».

Existe una excepción en la implementación de rel=»prev» y rel=»next»: si a lo largo de la serie de contenido también ofreces a los usuarios una página que muestre todo el contenido o si estás considerando incluir una, consulta esta entrada del blog para obtener más información.

Los usuarios suelen preferir las páginas en las que puedan ver todo el contenido, por lo que tratamos de incluir estas páginas en los resultados de las búsquedas en lugar de las páginas de componentes (las páginas de componentes tienen más opciones de aparecer en los resultados si incluyen rel=»next» y rel=»prev»).

Si no dispones de una página que incluya todo el contenido o quieres evitar que Google la muestre, puedes utilizar rel=»next» y rel=»prev» como se describe en esta entrada.

Para obtener información sobre configuraciones paginadas que incluyan una página que muestre todo el contenido, consulta esta entrada del blog.

Opciones disponibles

Si tienes una serie, dispones de tres opciones:

  1. Deja lo que tienes exactamente como está. Existe contenido paginado por toda La Web y seguiremos intentando ofrecer a los usuarios el mejor resultado, independientemente de si se han incluido o no los elementos de marcado HTML rel=»next» y rel=»prev».
  2. Si dispones de una página donde se muestra todo el contenido, o si estás considerando incluir una, consulta esta entrada del blog.
  3. Indica a Google la relación entre las URL de los componentes de tu serie con rel=»next» y rel=»prev». Esto nos ayudará a indexar tu contenido de una forma más precisa y a mostrar a los usuarios la página más relevante (normalmente la primera). A continuación te indicamos de forma detallada cómo implementar estos elementos.

Implementación de rel=»next» y rel=»prev»

Si optas por la opción 3 para tu sitio, a continuación te explicamos cómo hacerlo. Supongamos que tienes contenido paginado en estas direcciones URL:

http://www.example.com/article?story=abc&page=1
http://www.example.com/article?story=abc&page=2
http://www.example.com/article?story=abc&page=3
http://www.example.com/article?story=abc&page=4

En la primera página, http://www.example.com/article?story=abc&page=1, se incluye la sección <head>:

<link rel="next" href="http://www.example.com/article?story=abc&page=2" />

En la segunda página, http://www.example.com/article?story=abc&page=2:

<link rel="prev" href="http://www.example.com/article?story=abc&page=1" />
<link rel="next" href="http://www.example.com/article?story=abc&page=3" />

En la tercera página, http://www.example.com/article?story=abc&page=3:

<link rel="prev" href="http://www.example.com/article?story=abc&page=2" />
<link rel="next" href="http://www.example.com/article?story=abc&page=4" />

Y en la última página, http://www.example.com/article?story=abc&page=4:

<link rel="prev" href="http://www.example.com/article?story=abc&page=3" />

Varios puntos, que hay que tener en cuenta

  • La primera página solo contiene el elemento de marcado rel=»next», no rel=»prev».
  • Las páginas comprendidas entre la segunda y la penúltima deben disponer de vinculación doble con rel=»next» y rel=»prev».
  • La última página solo contiene el elemento de marcado rel=»prev», no rel=»next».
  • Los valores de rel=»next» y rel=»prev» pueden ser URL relativas o absolutas (según permita la etiqueta <link>). Y si se incluye un enlace <base> en el documento, las rutas relativas se resolverán según la URL base.
  • Solo es necesario declarar rel=»next» y rel=»prev» en la sección <head>, no en el documento <body>. Se permite el uso de rel=»previous» como variante sintáctica de los enlaces rel=»prev».
  • rel=»next» y rel=»previous» por un lado y rel=»canonical» por otro constituyen conceptos independientes.
  • Se pueden incluir ambas declaraciones en la misma página.
  • rel=”prev” y rel=”next” actúan como sugerencias para Google, no como directivas absolutas.
  • Si se implementan de forma incorrecta, por ejemplo, si se omite una designación rel=»prev» o rel=»next» en la serie, seguiremos indexando las páginas y nos basaremos en nuestra heurística para comprender el contenido.
Categorías
WPO

DNS Prefetching

Este sistema básicamente lo que permite es anticipar las peticiones de los dominios resolviendo las DNS antes que se cargue la página o el elemento en cuestión en páginas siguientes o en elementos de la propia página.

Si queremos hacer un uso manual de este sistema podemos activar la precarga desde el propio encabezado de la página, añadiendo una entrada <link>.

<link rel="dns-prefetch" href="https://cdn.megazona.com">

Otra opción es la de activarlo o desactivarlo a lo largo de la página. Para ello podemos usar, en el lugar del cuerpo que queramos, los siguientes elementos:

<meta http-equiv="x-dns-prefetch-control" content="off">
<meta http-equiv="x-dns-prefetch-control" content="on">