Redirigir con .htaccess no funciona correctamente cuando falta / al final

6 minutos de lectura

avatar de usuario
Chico loco

He WordPress sitio con WPML instalado. He hecho 2 cosas recientemente:

Esto se hace para mejorar el SEO. Sin embargo, mientras conseguí que funcionara sin muchos problemas usando:

 # BEGIN HTTPS
 <IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{SERVER_PORT} ^80$
 #RewriteCond %{HTTPS} !^on$
 #RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
 RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
 </IfModule>
 # END HTTPS
 # BEGIN WordPress
 <IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /
 RewriteRule ^index\.php$ - [L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule . /index.php [L]
 </IfModule>

 # END WordPress

En apache.conf expediente ServerName domain.xyz, ServerAlias domain.pl www.domain.pl y así. Tengo problemas con la mayoría de mis publicaciones de blog antiguas que están en Internet en diferentes formas. Por ejemplo:

parece que ultimo / está haciendo una gran diferencia.

He planeado agregar todos los redireccionamientos incluso de forma directa 1 a 1 al nuevo dominio, pero dado que funciona parcialmente, parcialmente no, estoy un poco perdido… y no estoy seguro de cómo podría traducirlos correctamente.

EDITAR:

Probé varias opciones, incluso una que supuestamente reescribe todos los enlaces para terminar con / y aún falla.

# BEGIN HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#RewriteCond %{SERVER_PORT} ^80$
#RewriteCond %{HTTPS} !^on$
#RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
#RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
#RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
#RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} !^on$
#RewriteRule (.*) https://evotec.xyz/$1 [R=301,L]
#RewriteRule (.*) https://%{SERVER_NAME%}/$1 [R=301,L]
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_URI} !(.*)/$
#RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1/ [L,R=301]
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteCond %{REQUEST_FILENAME} !\.(gif|jpg|png|jpeg|css|js)$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1/ [L,R=301]


</IfModule>
# END HTTPS

Otra actualización:

Por lo tanto, no funciona del todo para todos los slash vs non-slash. Se trata más de algún tipo de traducción que no sucede si apunta a un dominio antiguo.

Intenté usar Redirect Checker para ver cómo funciona (en el ejemplo adecuado), pero no puedo entenderlo.

http://evotec.pl/hub/scripts/office365-addbulkemailaddresses-ps1 301 Movido Permanentemente
https://evotec.pl/hub/scripts/office365-addbulkemailaddresses-ps1/
301 Movido Permanentemente
https://evotec.xyz/hub/scripts/office365-addbulkemailaddresses-ps1/
200 bien

http://evotec.pl/hub/scripts/office365-addbulkemailaddresses-ps1/ 301 Movido Permanentemente
https://evotec.xyz/hub/scripts/office365-addbulkemailaddresses-ps1/
200 bien

https://evotec.pl/hub/scripts/office365-addbulkemailaddresses-ps1
404 No encontrado

Cuantas más opciones pruebo, más raro se vuelve. Mientras que el RedirectChecker parece estar mostrando una cosa… el navegador se está comportando un poco diferente y no funciona para la primera entrada de todos modos causando 404 de inmediato

Editar:

Si dejo solo los datos de “Wordpress” lo siguiente es cierto:

Solo funciona correctamente si uso el dominio correcto/nuevo, entonces todo funciona correctamente:

Supongo que si no puedo redirigirlo, lo dejaré como está y me rendiré.

  • Parece un problema con la directiva DirectorySlash. Mira esto Enlacepodría ayudar.

    – Felipe Alameda A.

    8 de agosto de 2016 a las 8:14

  • He actualizado mi publicación. No parece ser eso, ya que la directiva de barra diagonal del directorio parece funcionar parcialmente.

    – Chico loco

    8 de agosto de 2016 a las 8:40

  • ¿Puede eliminar todas las reglas de .htaccess y mantener solo la regla predeterminada de WP entre # BEGIN WordPress y # END WordPress. Luego borre completamente la memoria caché de su navegador y luego ingrese las 4 URL para ver a cuál todavía se está redirigiendo https://domain.xyz/<url>

    – anubhava

    11 de agosto de 2016 a las 10:25

  • Hizo que. Publicación principal actualizada.

    – Chico loco

    11 de agosto de 2016 a las 15:01

De hecho, lo resolví usando el complemento SEO Redirection Premium para WordPress.

ingrese la descripción de la imagen aquí

Es capaz de redirigir enlaces rotos sin /. En este caso lo he hecho manualmente pero estoy trabajando en una forma de hacerlo de forma más global con Regex. Solo necesito encontrar uno adecuado.

ingrese la descripción de la imagen aquí

avatar de usuario
WebzinSamir

Crear un .htaccess archivo con el siguiente código, se asegurará de que todos sus directorios y páginas de su antiguo dominio sean redirigidos correctamente a su nuevo dominio. los .htaccess el archivo debe colocarse en el directorio raíz de su sitio web anterior (es decir, el mismo directorio donde se encuentra su archivo de índice)

Options +FollowSymLinks
RewriteEngine on

RewriteRule (.*) https://www.newdomain.com/$1 [R=301,L]

Por favor reemplace www.newdomain.com en el código anterior con su nombre de dominio real.

Además de la redirección, le sugiero que se comunique con cada sitio de backlinking para modificar su backlink para apuntar a su nuevo sitio web (para SEO).

Nota* Este método de redirección .htaccess funciona SOLAMENTE en servidores Linux que tengan habilitado el módulo Apache Mod-Rewrite.

Y luego para http a https:

RewriteCond %{HTTP_HOST} ^domain\.com.au$ [OR]

RewriteCond %{HTTPS} !on

RewriteRule ^(.*)$ https://www.domain.com.au/$1 [R,L]

Y, además, también puede agregar el siguiente código en wp-config.php

define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST']);

define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST']);

Nota*: Es posible que esto no funcione si no lo intentaste, pero deberías intentarlo una vez y avisarme.

  • Esto no parece abordar el problema. Tengo varios dominios (.xyz y .pl). Estamos hablando de un comportamiento extraño de /. Debería notar los textos comentados donde he probado múltiples proposiciones similares.

    – Chico loco

    16 de agosto de 2016 a las 7:07

¿Ha sido útil esta solución?