Archivo del Autor: admin

Redirigir según el idioma del navegador con .htaccess

traduction - pays étrangersImaginenos que tenemos estas direcciones en nuestra web según el idioma:

www.pagina.com  (para español)
www.pagina.com/en  (para inglés)
www.pagina.com/fr  (para francés)

Editando nuestro archivo .htaccess de la siguiente manera, podemos redireccionar a cada una de las páginas a los usuarios en función del idioma con el que tengan configurado su navegador:

RewriteEngine on
RewriteCond %{HTTP:Accept-Language} (en) [NC]
RewriteRule .* http://www.pagina.com/en/ [R,L]

RewriteCond %{HTTP:Accept-Language} (es) [NC]
RewriteRule .* http://www.pagina.com/ [R,L]

RewriteCond %{HTTP:Accept-Language} (fr) [NC]
RewriteRule .* http://www.pagina.com/fr/ [R,L]

Tenéis que tener en cuenta que el archivo .htaccess es muy delicado, cualquier fallo puede dar error y hacer que la web no funcione.

Anuncios Adsense en sitios web Responsive Design

Últimamente recibo mensajes de Herramientas del Webmaster de Google diciendo que mis sitios no són optimizados para dispositivos móviles, y cuando voy a ver qué es lo que falla me aparecen las rutas de los anuncios de Adsense, que son 728×90 en lugar de 300×250. ¿Cómo puedo solucionarlo?

Al principio pensé en cambiar el formato del anuncio directamente, pero entonces en el escritorio no se veía bien ya que quedaba mucho espacio alrededor del anuncio en blanco. Buscando por la red encontré que Google había anunciado hacía un tiempo unos bloques de anuncio adaptables, justamente para los administradores de blogs con diseños responsive.

¿Cómo crear un bloque de anuncios Adaptable de Adsense?

Pulsas sobre el botón Nuevo bloque de anuncios y a continuación se elige en la sección Tamaño del anuncio -> Otro – Adaptable

Cuando pulses Guardar y Obtener Código, en la ventana siguiente tienes que clicar en Modo -> Avanzado (Modificación de código obligatoria).

El código será más o menos el siguiente:

<style>
.nombre-de-bloque { width: 300px; height: 250px; }
@media(min-width: 500px) { .nombre-de-bloque { width: 336px; height: 280px; } }
@media(min-width: 800px) { .nombre-de-bloque { width: 728px; height: 90px; } }
</style>
<script async src=”//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js”></script>
<!– nombre-de-bloque –>
<ins class=”adsbygoogle nombre-de-bloque”
style=”display:inline-block”
data-ad-client=”ca-pub-XXXXXXXXXX”
data-ad-slot=”XXXXXXX”></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>

Dentro de las etiquetas <style></style> está el código que debemos o podemos modificar. En las líneas que empiezan con el indicador @media se puede poner un tamaño de bloque de anuncio según el tamaño mínimo de pantalla que tenga el visitante. Yo, por ejemplo, he puesto que si el tamaño de pantalla de un usuario es de 500px se muestre el anuncio de 336×280 px en lugar de un 468x60px.

Nota: No puedes poner cualquier tamaño, debe ser uno de los tamaños de los anuncios que te proporciona Google Adsense.

Espero que os haya sido de ayuda. Saludos y hasta la próxima!

Cambiar de dominio con Redirección 301 (SEO)

redireccion-301Si tienes que hacer un cambio de dominio por los motivos que sea y no quieres perder el posicionamiento ni el PageRank de Google, puedes hacer una redirección 301. El mismo Matt Cutts nos recomienda este método en su blog. Yo misma he usado este método para cambiar de dominios algunos proyectos, y aunque al principio parece que las visitas disminuyen, a las pocas semanas todo el tráfico vuelve a la normalidad.

Con una redirección 301 estás indicando a los buscadores que el cambio (la redirección) es permanente.

Para redireccionar el tráfico del dominio antiguo al dominio nuevo, hay que editar el fichero .htaccess que se encuentra en la raíz del directorio del servidor, añadiendo las siguientes líneas:

RewriteEngine On  
RewriteCond %{HTTP_HOST} !^olddomain\.com [NC]
RewriteRule (.*) http://newdomain.com/$1 [R=301,L]

Si te da problemas, puede que tengas que activar el módulo mod_rewrite module.
El parámetro “R” establece el código de respuesta y el parámetro “L” indica que una vez hecha la redirección se ignore cualquier otra regla que pueda aparecer en el fichero.

También puede hacerse la redirección con PHP con el siguiente código:

<? header("HTTP/1.1 301 Moved Permanently", TRUE, 301); @header("Location: http://newdomain.com/"); ?>

Separar comas de un CSV en Excel

ScreenHunter_02 Apr. 20 19.08Cuando importas un archivo .csv en Excel a veces te encuentras en que los registros están en filas  separados por comas en lugar de en columnas. Para conseguir separar esos datos por comas y que se vean igual que en tu base de datos tienes que ir a Datos -> Texto en columnas

Una vez ahí tendrás que indicar el delimitador (un punto, una coma,..) y ya está! Tendrás toda la información en columnas para poder trabajar mejor.

Verificar si una url existe con php

Aquí os dejo unos códigos de ejemplo de formas de comprobar si una url existe y está disponible o no. Se puede hacer usando la función get_headers(), file_exists(),… También os dejo una función con la que únicamente se comprueba el formato de la url.

get_headers()

<?php
$url 'http://scriptsde.com';
function url_exists($url) {
    $h = get_headers($url);
    $status array();
    preg_match('/HTTP\/.* ([0-9]+) .*/'$h[0] , $status);
    return ($status[1] == 200);
}
echo url_exists($url)? 'existe' 'no existe';
?>

 

file_exists()

<?php
$nombre_fichero 'http://scriptsde.com';
if (file_exists($nombre_fichero)) {
    echo "El fichero $nombre_fichero existe";
else {
    echo "El fichero $nombre_fichero no existe";
}
?>

 

PHP+CURL

<?php
$url 'http://scriptsde.com';
    function url_exists($url) {
        $ch = @curl_init($url);
        @curl_setopt($ch, CURLOPT_HEADER, TRUE);
        @curl_setopt($ch, CURLOPT_NOBODY, TRUE);
        @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
        @curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        $status array();
        preg_match('/HTTP\/.* ([0-9]+) .*/', @curl_exec($ch) , $status);
        return ($status[1] == 200);
    }
echo url_exists($url)? 'existe' 'no existe';
?>

 

Comprobando el formato de una url

<?php
$url 'http://scriptsde.com';
function isURL($url){
    $pattern='|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i';
    if(preg_match($pattern$url) > 0) return true;
    else return false;
}
?>

 

Espero que os haya sido útil. ¡Saludos!

Cómo evitar el hotlinking

Algunas veces, otros webmasters o bloggers usan imágenes, videos,…, de tus páginas web enlazando directamente a tu contenido. Si estas personas tienen un tráfico importante en sus sitios, consumiran el ancho de banda disponible en tu servidor. Estarás siendo víctima del hotlinking, otras páginas web estaran enlazando a tus contenidos desde páginas externas sin aportarte ningún beneficio ni ventaja.

Para evitar esta mala práctica puedes usar el siguiente código, así reemplazarás la imagen original por otra con un aviso para hacerles saber el daño que provoca el hotlinking:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://sitio.com*/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://sitio.com*$ [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp|zip)$ http://sitio.com/no_se_permite_hotlinking.jpg [L]

Puedes subir la imagen en ImageShack o cualquier otro sitio de almacenamiento de imágenes y así evitar que el ancho de banda de tu servidor se vea afectado.

 

Si prefieres que no se muestre nada puedes usar el siguiente código:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://sitio.com*/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://sitio.com*$ [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp|zip)$ - [F,NC]

Los tipos de archivos o extensiones de archivo que generalmente se bloquean son los siguientes: jpg, jpej, png, gif, zip, swf.

 

Algunos servidores ofrecen la posibilidad de evitar el hotlink con una sencilla configuración en el panel de control CPanel, usando la herramienta hotlink y especificando los archivos a los que deseas impedir el acceso separados por comas.

Cómo cachear imágenes con .htaccess

Si queremos que nuestra página web vaya más rápida, una de las cosas que tenemos que hacer es almacenar en la caché las imágenes, css y javascripts de nuestro sitio, haciendo que cada vez que naveguen los usuarios por nuestro sitio no tengan que descargar de nuevo todos los archivos, sino que el servidor web los busque en la caché, eso acelerará mucho la carga y la navegación de nuestro sitio web.

Para ello solo tenemos que pegar el siguiente código en nuestro archivo .htaccess:

ExpiresActive On
ExpiresByType image/gif A432000
ExpiresByType image/jpg A432000
ExpiresByType image/jpeg A432000
ExpiresByType image/png A432000
ExpiresByType image/ico A432000
ExpiresByType image/bmp A432000
ExpiresByType text/css A432000
ExpiresByType text/javascript A432000
ExpiresByType application/javascript A432000
ExpiresByType application/x-javascript A432000

Este código guarda en caché los archivos durante cinco días o 432.000 segundos.

Si queremos que se guarden los archivos durante más tiempo en la caché:

ExpiresActive On
 ExpiresByType image/jpg "access 1 year"
 ExpiresByType image/jpeg "access 1 year"
 ExpiresByType image/gif "access 1 year"
 ExpiresByType image/png "access 1 year"
 ExpiresByType text/css "access 1 month"
 ExpiresByType text/html "access 1 month"
 ExpiresByType application/pdf "access 1 month"
 ExpiresByType text/x-javascript "access 1 month"
 ExpiresByType application/x-shockwave-flash "access 1 month"
 ExpiresByType image/x-icon "access 1 year"
 ExpiresDefault "access plus 1 month"

 

Cómo impedir listar los archivos de un directorio

A veces no queremos que se puedan mostrar los archivos que tenemos en un determinado directorio (directorio con imágenes, por ejemplo), pero si la carpeta no tiene un archivo index.html, los usuarios que lo visitan pueden ver un listado con todos los archivos que hay dentro de ella. Para evitar que esto ocurra, puedes añadir en tu archivo .htacess la siguiente línea de código:

Options -Indexes

El archivo .htaccess se encuentra en el directorio raíz de nuestro servidor. Si no lo podéis ver, comprobad que el explorador de archivos que estáis usando permite ver archivos ocultos.

Espero que os haya sido de ayuda. Saludos!

Cómo redireccionar urls a con o sin www con .htaccess

Cuando tienes un sitio web es muy importante que los buscadores sólo puedan acceder de una forma a éste (con o sin www), o mejor dicho, que puedan acceder al sitio de cualquier modo pero los redireccionemos siempre a uno, ya sea con www o sin www, para evitar el contenido duplicado o que la importancia de nuestro sitio se vea dividida en dos.

Para hacer esta redirección utilizamos el archivo .htaccess (si usáis WordPress podéis usar plugins). El archivo .htaccess se encuentra en el directorio raíz del servidor, para editarlo podéis usar un editor de texto plano. Si no encontráis el archivo, comprobad que en el explorador del servidor se están mostrando los archivos ocultos, ya que el fichero .htaccess se crea oculto.

El código fuente que tenéis que añadir a vuestro fichero .htaccess es el siguiente:

Redireccionar de www a sin www

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.(.*) [NC]
RewriteRule ^(.*) http://%1/$1 [R=301,L]

Redirecionar de sin www a con www

RewriteEngine On
RewriteCond %{HTTP_HOST} ^dominio.com
RewriteRule ^ http://www.dominio.com%{REQUEST_URI} [L,R=301]

 

Tras configurar esto si accedemos en nuestro navegador a “http://www.midominio.com” podremos ver en la barra de direcciones del navegador que se está mostrando “midominio.com“ o al revés, en función del código que hayamos escogido.