Redirigir .htaccess: redirigir a otro dominio y redirigir a otra página

  1. Redireccionar .htaccess: redirección permanente, 301
  2. Cómo configurar una redirección a www (o sin www)
  3. Cómo crear .htaccess
  4. El archivo .htaccess no funciona
  5. ¿Hay algún análogo de .htaccess en nginx?
  6. Editor
  7. x64 (aka andi)

Buen domingo

Muy a menudo, en los foros puede encontrar preguntas sobre .htaccess, el archivo de configuración del servidor web Apache. El principal obstáculo es que el desarrollo no tuvo la tarea de configuración conveniente para el usuario final (la distribución no incluye un shell para instalaciones visuales mediante casillas de verificación, listas desplegables, etc.), pero los administradores del servidor hacen frente a esta tarea de manera notable, estando contentos con el "maná". (del equipo de Linux - man - un tutorial rápido de los desarrolladores, o en este caso de profesionales a profesionales).

En la mayoría de los casos, se requieren manipulaciones simples: redireccionamiento incondicional a otro sitio, o redirección de un lugar a otro (por ejemplo, cuando la URL de la sección ha cambiado). Y cada persona comienza a creer que definitivamente no hay problema en ninguna parte, e incluso es inútil buscar una solución en Internet y buscar en el foro. Vamos a ver cuáles son realmente estos problemas no.

Vamos a ver cuáles son realmente estos problemas no

Redireccionar .htaccess: redirección permanente, 301

Esta cosa tiene nombres diferentes. Neponyatki puede causar tal número, ¿por qué es 301? La esencia radica en el propio protocolo HTTP, que responde a las solicitudes de los clientes con un código de estado específico. El código 404 No encontrado es conocido por casi todos. El código 200 OK es casi desconocido, pero significa que todo está en orden y el documento se mostrará en el navegador. Pero el código 301 Movido permanentemente significa que el documento finalmente se movió a una nueva dirección. Esto es lo que a menudo se denomina redirección, aunque el grupo de respuesta total se designa como - 3xx: Redirección .

Apache tiene varias opciones para redireccionar. El módulo mod_rewrite proporciona un excelente mecanismo para trabajar con redirecciones, y en el futuro lo usaré en los ejemplos. El módulo mod_alias también tiene directivas para redirecciones desde una dirección específica o desde una dirección que coincide con la expresión regular:
Redireccionamiento permanente / http://newsite.ru/
RedirectMatch permanent. * Http://newsite.ru/
Pero mod_rewrite tiene opciones adicionales para la redirección, por lo que es mejor usarlo (IMHO).

En general, para un redireccionamiento externo incondicional (llamémoslo usuario), en el que el navegador redirige automáticamente a otra página, generalmente imperceptible para el usuario (la barra de direcciones cambia), puede colocar dicho código en .htaccess:
RewriteEngine On
RewriteRule. * Http://newsite.ru/ [L, R = permanente]
Aquí, la primera línea incluye el mecanismo del módulo mod_rewrite , que puede hacer cualquier cosa con las direcciones. Llamemos a esta conversión de URL por condiciones sobre la marcha. La segunda línea define directamente la regla para la conversión; en el ejemplo anterior, todas las solicitudes se redirigirán a http://newsite.ru/. Las banderas se colocan entre corchetes: L - última (última) regla, R - redireccionamiento (Redirección), indicada como R = código, donde el código es una designación alfabética o numérica (permanente o 302).

De hecho, mod_rewrite es una cosa muy útil, debido a esto que muchos motores utilizan activamente el llamado CNC (Human URL Understandable). Si no está familiarizado con este término, le explicaré con un ejemplo. Artículo sobre motores libres para el sitio tiene la dirección: https://a-panov.ru/2014/11/free-cms/

Al observar esta URL, queda claro de inmediato que el artículo se publicó en noviembre de 2014. Al eliminar el título con una barra diagonal ( https://a-panov.ru/2014/11/ ), recibiremos una lista de todas las publicaciones de noviembre. Direcciones normales, escriba:

https://a-panov.ru/?p=389

No hay amistad especial. Al ver una dirección de este tipo, no puede decir nada sobre la página en la que lidera, absolutamente nada.

Este método es bueno cuando no le importa a qué página del nuevo sitio vincular. Pero si se mudó a otro dominio, es recomendable redirigir todas las solicitudes manteniendo las direcciones. Para ello, utiliza el siguiente código:
RewriteRule ^. * $ Http://newsite.ru/$0 [QSA, L, R = permanente]
El nuevo indicador QSA también guardará los parámetros que se pueden encontrar en las direcciones después del signo de interrogación. En el ejemplo ya familiar:

https://a-panov.ru/?p=389

Si coloco el código en .htaccess arriba, habrá una redirección a la dirección http://newsite.ru/?p=389 que sin esta bandera no existiría.

A continuación, omitiré la directiva de inclusión de transformación:
RewriteEngine On
solo recuerde: si utiliza el mecanismo mod_rewrite, todas las condiciones / conversiones deben realizarse después de esta directiva. Para deshabilitar la siguiente línea se utiliza:
RewriteEngine Off
en consecuencia, para cada regla no hay necesidad de "activar" constantemente las transformaciones; comienza a hacerse automáticamente, inmediatamente después de la primera directiva.

Cómo configurar una redirección a www (o sin www)

Tales redirecciones son necesarias para los casos en que el sitio está disponible en las opciones nsite.ru y www.nsite.ru; en este caso, los motores de búsqueda los consideran duplicados y pueden elegir una de las opciones como espejo principal , o en la búsqueda habrá opciones de ambos dominios. En general, este es un factor negativo al clasificar un sitio.

Opción más fácil para un dominio. La redirección se realiza desde el subdominio www.site.ru al sitio.ru:
RewriteCond% {HTTP_HOST} ^ www \ .nsite \ .ru $
RewriteRule. * Http://nsite.ru/$0 [QSA, L, R = permanente]
Aquí es donde apareció la nueva directiva RewriteCond , que establece la condición bajo la cual deberían funcionar las redirecciones: las reglas de RewriteRule . La condición, en este caso, el nombre de dominio correspondiente a www.nsite.ru (en expresiones regulares, el símbolo de punto significa "cualquier carácter", por lo que es recomendable protegerlo con una barra invertida).

La redirección inversa es también muy simple:
RewriteCond% {HTTP_HOST} ^ nsite \ .ru $
RewriteRule. * Http://www.nsite.ru/$0 [QSA, L, R = permanente]
Ambas opciones funcionan, pero tienen un pequeño inconveniente: para cada nueva configuración es necesario reemplazar el dominio nsite.ru por el suyo. ¿Es posible hacer una opción única? Fácil

Redirigir desde cualquier subdominio www:
RewriteCond% {HTTP_HOST} ^ www \. (. *) $
RewriteRule. * Http: //% 1 / $ 0 [QSA, L, R = permanente]

Redirigir a un subdominio con www:
RewriteCond% {HTTP_HOST}! ^ Www \.
RewriteRule. * Http: //www.% {HTTP_HOST} / $ 0 [QSA, L, R = permanente]

% {HTTP_HOST} - dominio actual

Cómo crear .htaccess

Tales preguntas también surgen. El problema es que el Explorador estándar (la aplicación en Windows, que es responsable de la interfaz gráfica) no le permite crear archivos comenzando con un punto (creando archivos o carpetas haciendo clic derecho en el escritorio o en una ventana y seleccionando la acción deseada de la lista Crear ). Pero hay una salida: abra la grabadora de Bloc de notas estándar, seleccione Archivo → Guardar como ... en el menú, y especifique .htaccess como el nombre del archivo guardado, después de eso se creará.

El archivo .htaccess no funciona

Hay casos en que las directivas de un archivo no funcionan. Esto suele deberse a que el soporte de .htaccess está deshabilitado en la configuración de Apache, de la que es responsable la directiva:
AllowOverride ninguno

Esto generalmente se hace para aumentar un poco la velocidad; en este caso, el servidor web no busca ni analiza .htaccess.

También es posible que Apache no se use en el servidor, por ejemplo, IIS es el "invitado" principal en el alojamiento de Windows. Para aclaraciones, póngase en contacto con el soporte de su proveedor.

¿Hay algún análogo de .htaccess en nginx?

Otra pregunta bastante frecuente. En este servidor web, esto no es posible. Sin embargo, esto no suele ser necesario. El hecho es que nginx generalmente se instala como un frondend, es decir, acepta y procesa todas las solicitudes que se realizan o redirecciona al backend, que puede ser realizado por Apache, que puede configurarse aún más usando .htaccess.

Editor

no en línea 1 día

x64 (aka andi)

Comentarios: 2834 Publicaciones: 394 Inscripción: 02-04-2009

Htaccess en nginx?
Neponyatki puede causar tal número, ¿por qué es 301?
Ru/?
Ru/?
Ru/?
¿Es posible hacer una opción única?
Htaccess en nginx?