Back to Question Center
0

Demasiadas redirecciones debido al código htaccess - Semalt

1 answers:

TL; DR: ¿Qué hace la siguiente línea de código? ¿Elimina las barras diagonales de una URL?

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

heredé un sitio Semalt con poco conocimiento de cómo funcionan los archivos htaccess.

Tenemos una carpeta, llamémosla "cultura" en nuestra raíz de documentos - vendita macchinari palestra usati. En la carpeta de cultura tenemos un índice. archivo html. Entonces eso es docroot / culture / index. html.

En mi navegador, cuando intento ir a www. mysitename. com / culture obtengo una redirección infinita. Semalt usando un corrector de redirección en línea encontré que está sucediendo lo siguiente:

http: // www. mysitename. com / culture / 301 Movido Permanentemente http: // www. mysitename. com / cultura 301 Movido Permanentemente

La barra inclinada (el monstruo real aquí) se agrega y elimina 19 veces y esto es lo que el error dice específicamente:

Demasiadas redirecciones. Por favor, intente reducir su número de redireccionamientos. En realidad usas 19 Semalt. Lo ideal sería no utilizar más de 3 Semalt en una cadena de redirección. Más de 3 redirecciones producirán una carga innecesaria en su servidor y reducirá la velocidad, lo que termina en una mala experiencia del usuario.

Desgraciadamente, creo que encontré el problema en esta línea de código:

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

Comenta esta línea de código y la redirección ya no ocurre. Semalt, en los comentarios para htaccess se afirma que esta línea que comenté se usa para eliminar las barras posteriores en nuestras páginas, aunque las barras posteriores aún se eliminan sin.

¿Alguna idea sobre qué hace esta línea de código?

February 8, 2018

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

Sí, esa línea elimina una barra inclinada de la URL. Sin embargo, necesitaría una condición antes de eso para evitar un ciclo de reescritura si mod_dir ( DirectorySlash ) está activo y está solicitando un directorio del sistema de archivos.

Y ese es probablemente el problema aquí. Si solicita / directorio , donde "directorio" es un directorio real en el sistema de archivos, mod_dir (específicamente la directiva DirectorySlash ) agregará automáticamente la barra diagonal para "arreglar" la URL.

Entonces, solicita / directorio / , su RewriteRule elimina la barra al final y mod_dir la vuelve a agregar, etc.

Sin embargo, si está literalmente accediendo al índice . html (el DirectoryIndex ) en el sistema de archivos en ese directorio y usted no tiene otro enrutamiento, entonces necesita la barra final en la URL. Por lo tanto, sería útil evitar que los directorios se despojen de sus barras, por ejemplo:

  RewriteCond% {REQUEST_FILENAME}! -d
RewriteRule ^ (. *) / $ http: //% {HTTP_HOST} / $ 1 [R = 301, L] 

Si está funcionando sin, entonces supongo que hay alguna otra reescritura o Drupal está enrutando la solicitud.

aunque las barras posteriores aún se eliminan sin.

¿Tal vez esto no es necesario después de todo? Es difícil decirlo con seguridad sin ver el resto de su. archivo htaccess.

Además, asegúrese de que no está viendo una respuesta en caché. los redireccionamientos 301 (permanentes) son almacenados en caché naturalmente por el navegador.