Mi web redirige a otra página: qué está pasando
En resumen
Si tu web manda a las visitas a páginas de apuestas, sorteos o falsas alertas de virus, casi seguro tiene malware, y suele esconderse del dueño: salta solo en el móvil, solo viniendo de Google o solo la primera vez. Se comprueba con curl imitando esas visitas y se busca en el .htaccess, en la base de datos y en archivos JavaScript. Si vuelve después de quitarla, la entrada por la que se coló sigue abierta.
Si te han dicho que tu web lleva a una página de apuestas, a un falso sorteo o a una alerta de virus, casi con seguridad tienes malware. Las redirecciones maliciosas están diseñadas para engañar al dueño de la web, así que lo primero es aprender a verlas.
Por Jose SorianoPublicada: Última actualización: 5 min de lectura
Por qué solo les pasa a otros
Una redirección maliciosa suele activarse solo si se cumplen ciertas condiciones, precisamente para que el administrador no la vea:
- Según el dispositivo: solo en móviles (el dueño suele revisar la web desde el ordenador).
- Según la procedencia: solo cuando la visita llega desde Google, Facebook u otro buscador; si escribes la dirección a mano, no salta.
- Solo la primera vez: guarda una cookie y en las siguientes visitas no redirige.
- Nunca con la sesión iniciada: si estás conectado como administrador, la web se comporta con normalidad.
- Según el país o la hora, en las variantes más elaboradas.
Antes de nada: descarta lo legítimo
No toda redirección es malware. Si la web salta a otra dirección tuya (de http a https, de www a sin www, de una página antigua a la nueva), es configuración. Tampoco lo es un cambio de dominio que hiciste tú o tu agencia y nadie recuerda. Lo sospechoso es que te lleve a un dominio que no reconoces, y más aún si solo pasa a veces.
Cómo comprobarlo
Desde el móvil
Desactiva el wifi, abre una ventana de incógnito, busca tu web en Google y entra desde el resultado. Prueba varias páginas, no solo la portada. Si tienes a mano otro móvil que nunca haya visitado la web, mejor: así esquivas la cookie de «solo la primera vez».
Con un comando
curl viene instalado en Windows 10 y 11, macOS y Linux. Este comando pide tu portada como si fueras un móvil que llega desde Google y muestra solo las cabeceras de la respuesta:
curl -sI -A "Mozilla/5.0 (Linux; Android 14) Mobile" -e "https://www.google.com/" https://tu-web.com/Si aparece una línea Location: que apunta a un dominio que no es el tuyo, la redirección está en el servidor (normalmente en .htaccess o en PHP). Si no aparece, puede estar en JavaScript, que curl no ejecuta: entonces hay que mirar el código de la página.
Con las herramientas del navegador
En Chrome, pulsa F12, ve a la pestaña Network (Red), marca Preserve log y carga la web. Si hay redirección, verás la cadena de peticiones: la primera a tu dominio y, después, otras a dominios que no conoces. Haz clic en la primera petición externa y mira la columna Initiator: te dice qué script la provocó.
El análisis gratuito hace estas pruebas por ti y revisa además los scripts de la portada y las listas negras.
Dónde suele estar
1. El archivo .htaccess
En servidores Apache, unas pocas líneas bastan para redirigir según el navegador o la procedencia. Búscalas en el .htaccess de la raíz y en el de las subcarpetas (también en wp-content/uploads/):
RewriteCond %{HTTP_REFERER} (google|bing|facebook) [NC]
RewriteCond %{HTTP_USER_AGENT} (android|iphone|mobile) [NC]
RewriteRule .* https://dominio-desconocido.example/ [R=302,L]Si ves algo parecido con un dominio que no reconoces, es malware.
2. La base de datos
En WordPress, el atacante puede cambiar las opciones siteurl y home de la tabla wp_options, o añadir un <script> al contenido de entradas, widgets o al pie de la web. En PrestaShop, en la configuración (tabla ps_configuration) o en páginas CMS. Busca en la base de datos textos como <script, eval(, atob( o String.fromCharCode donde no deberían estar. En WordPress, una consulta rápida desde phpMyAdmin:
SELECT option_name, LEFT(option_value, 150) FROM wp_options
WHERE option_name IN ('siteurl', 'home')
OR option_value LIKE '%<script%'
OR option_value LIKE '%atob(%';Cambia wp_ por el prefijo de tu instalación si es distinto (lo ves en wp-config.php).
3. Un archivo PHP modificado
El index.php, el functions.php del tema, wp-config.php o un archivo de un plugin con unas líneas añadidas al principio. Suelen estar ofuscadas (base64_decode, gzinflate, cadenas muy largas sin sentido).
4. JavaScript inyectado
Un script que se carga desde otro dominio o que está escondido dentro de un archivo .js legítimo del tema o de un plugin. Es la variante más difícil de ver sin herramientas. Las que piden «permitir notificaciones» para demostrar que no eres un robot son de esta familia: si un visitante acepta, seguirá recibiendo anuncios aunque limpies la web, y tendrá que quitar el permiso en su navegador.
Por qué vuelve después de quitarla
Es lo que más me encuentro: el dueño (o su hosting) borra la regla del .htaccess, la redirección desaparece y a los pocos días vuelve. Pasa porque casi siempre hay una puerta trasera (un archivo PHP que permite al atacante volver a entrar) o una tarea programada que reinstala la infección. Y, por debajo, el fallo por el que entraron sigue abierto.
- Localiza todas las piezas: redirección, puertas traseras, usuarios y tareas programadas.
- Sustituye el núcleo y los plugins o módulos por las versiones originales.
- Corrige la entrada: actualiza el componente vulnerable o cambia la credencial filtrada.
- Cambia todas las contraseñas y, en WordPress, regenera las claves de
wp-config.php. - Si Google muestra un aviso, pide la revisión cuando la web esté limpia (cómo quitar el aviso de Google).
El proceso completo, con lo que conviene guardar antes de tocar nada, está en cómo recuperar una web hackeada. Si la web es un WordPress, esos cinco pasos son exactamente lo que hago en la limpieza de WordPress hackeado, con el informe de dónde estaba cada pieza.
Si quieres que lo resuelva yo
Una redirección maliciosa se trata como cualquier infección: localizo todas las piezas, la limpio, cierro la entrada y compruebo que no vuelve. Todo lo que hago queda en un informe.
- WordPress: 219 € (IVA no incluido), con 90 días de garantía. Detalles en limpieza de malware en WordPress.
- PrestaShop o WooCommerce: 349 € (IVA no incluido), con la revisión del pago incluida (limpieza de PrestaShop hackeado).
- Otros CMS o PHP a medida: desde 390 €, con presupuesto cerrado antes de empezar.
- Si corre prisa, cualquier limpieza se puede pedir con prioridad (+80 € en WordPress, +100 € en tiendas): tu caso pasa delante del resto de trabajos. Todas las opciones, en web hackeada.
Fuentes
- Google Search Central: políticas sobre spam (redirecciones engañosas que mandan solo a los móviles a un dominio de spam, y redirecciones de webs hackeadas que dependen de la procedencia, el navegador o el dispositivo).
- Apache: documentación de mod_rewrite (
RewriteCondconHTTP_REFERERyHTTP_USER_AGENT, y los indicadores[NC],[R=302]y[L]). - MDN: cabecera Location (indica a qué dirección redirige la respuesta).
- Chrome DevTools: referencia del panel Network (la opción Preserve log y la columna Initiator).
- WordPress: claves de seguridad en wp-config.php (cambiarlas invalida las cookies existentes y obliga a volver a iniciar sesión).
Preguntas frecuentes
¿Puede ser cosa del hosting o de mi proveedor de internet?
Es muy raro. Si la redirección lleva a un dominio de spam y solo pasa en ciertas condiciones, está en tu web.
¿Y si la web abre publicidad en ventanas nuevas?
Es el mismo problema con otra forma: un script inyectado que abre anuncios o notificaciones. Se busca y se limpia igual.
¿Por qué mi web redirige a otra página solo en el móvil?
Porque el código malicioso comprueba el navegador antes de actuar. Se hace así a propósito: el dueño suele revisar la web desde el ordenador y no lo ve.
¿Basta con restaurar una copia de seguridad?
Solo si la copia es anterior a la infección y después cierras la entrada. Si no, la redirección vuelve, a veces en horas.