Redirección 301 para dirección IP con archivo estándar de WordPress .htaccess

2 minutos de lectura

Para la canonicalización de IP, me dicen que necesito redirigir la dirección IP del sitio al nombre de dominio. Estoy ejecutando una instalación estándar de WordPress que ya viene con su propio archivo .htaccess. Lo modifiqué a continuación agregando la línea “Redireccionar”:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

Redirect 301 http://12.34.56.789 http://www.domainname.com

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Sin embargo, no está funcionando. Alguien sabe qué está mal?

¡Gracias!

Por lo general, no desea mezclar Redirect (mod_alias) con RewriteRule (mod_rewrite) porque ambos se aplican al mismo URI y a veces se golpean entre sí. Simplemente quédese con mod_rewrite porque tiene reglas de wordpress que ya lo usan.

Reemplace la

Redirect 301 http://12.34.56.789 http://www.domainname.com

con:

RewriteCond %{HTTP_HOST} ^12\.34\.56\.789$
RewriteRule ^(.*)$ http://www.domainname.com/$1 [L,R=301]

  • La condición de reescritura podría expresarse más vagamente como RewriteCond %{HTTP_HOST} ^\d+\.\d+\.\d+\.\d+$ — no hay necesidad de restringir esta regla a una sola dirección IP.

    – r3mainer

    14 de noviembre de 2013 a las 22:49

  • No me di cuenta de que había una diferencia (redirect vs rewriteule). ¡Gracias!

    – Yazmín

    14/11/2013 a las 22:50

  • El problema de @squeamishossifrage con eso es si el servidor realmente escucha múltiples direcciones IP, y diferentes nombres de host podrían asignarse a diferentes IP. Si redirige todas las direcciones IP a un solo nombre de host, pierde esa asignación.

    – Jon Lin

    14 de noviembre de 2013 a las 22:52

  • @JonLin Estamos hablando de un archivo .htaccess aquí, no de httpd.conf

    – r3mainer

    14 de noviembre de 2013 a las 22:58

La respuesta de Jon Lin funcionó para mí, pero tuve que usar

RewriteCond %{REMOTE_ADDR} ^12\.34\.56\.789$
RewriteRule ^(.*)$ http://www.domainname.com/$1 [L,R=301]

en vez de

RewriteCond %{HTTP_HOST} ^12\.34\.56\.789$
RewriteRule ^(.*)$ http://www.domainname.com/$1 [L,R=301]

¿Ha sido útil esta solución?