12ene
11

Si acabas de instalar un nuevo WordPress o has cambiado las opciones de enlaces permanentes (permalinks) te darás cuenta que las reglas que WordPress inserta en el fichero .htaccess han cambiado. Parece que se introdujo en la versión 3.0, así que es muy reciente.

Las reglas que habitualmente añadía WordPress hasta ahora eran estas:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Con estas reglas obtenías los enlaces permanentes humanos, también conocidos como “pretty permalinks”, nos ha acompañado durante unos cuantos años, pero ahora la cosa ha cambiado

Las nuevas reglas de enlaces permanentes de WordPress

La verdad es que tampoco es para volverse loco, porque en realidad no vas a notar nada si lo cambias, pero ahora WordPress incluye una línea más en las reglas de enlaces permanentes, esta:

RewriteRule ^index\.php$ - [L]

Como quedaría sería así …

Para sitios instalados en el directorio raiz:

# 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

Para sitios instalados en un subdirectorio:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /subdirectory/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /subdirectory/index.php [L]
</IfModule>
# END WordPress

¿Qué hace la nueva regla?

Parece que la nueva línea es la solución a un problema con la directiva ‘mod_rewrite‘ de Apache, pues sin hacer este cambio se revisaba la existencia de ‘index.php‘, algo innecesario para WordPress. En consecuencia es una actualización de optimización.

Actualizar las reglas de htaccess

La verdad es que en realidad no es obligatorio pero si recomendable hacerlo, por cuestiones de optimización. Y puedes añadirlo en cualquier instalación existente.

Para saber más:

  • http://twitter.com/lgarcia Lucas García

    De hecho lo correcto del todo sería:

    RewriteRule ^index.php$ – [L]

    Notese la barra invertida antes del punto.

    Saludos!

  • Pingback: Lo que he compartido hoy | Navegando con Red

  • uri

    buenas… una pregunta…
    ¿con la actualización de wordpress a 3.04 es suficiente? o ¿tienes que hacerlo manualmente?
    gracias…

    • http://twitter.com/Mr_Raymon Mr. Raymon

      A mi tambien me gustaria saber si es necesario hacerlo manualmente o ya se encarga WordPress en su ultima version ya que no lo tengo instalado.

  • Apuchin

    Bueno yo tengo actualizado mi wordpress con la version 3.0.4 y al revisar el htaccess, encontre la linea ya insertada.

  • JUNIOR26

    Yo revise y ya lo tengo insertado en mi .htaccess

  • Entuoido

    Hola ¡¡ acabo de actualizar a 3.1 y los friendly ya no me van. Solo funcionan los permalinks en ‘numeric’. Qué puedo hacer ? puedo volver a 3.0.4 o qué hago? cuando entro a una subpágina me sale error 404. Esto que leo del htaccess me sirve ? Saludo a todos ¡¡

    • http://fernandotellado.com Fernando

      La estructura de htacces ha cambiado un poco, prueba a borrar el actual y volver a generarlo desde Ajustes – > Estructura de los enlaces

      • Entuoido

        Fernando, ante todo gracias por responder. He entradoa ajustes y he cambiado a month and name, day and name y nada. Solo funciona con numeric. Dónde encuentro una versión superor a 3.1 que ya traiga esto listo ? en definitiva la 3.1 le falla lo de fiendly links.

  • capecu

    Amigo Fernando, tengo el mismo problema que “Entuoido”, en cuanto cambio la estructura de enlaces permanentes a “/%postname%/, e intento visionar la página me da el error 404.
    Me han comentado que si el hostting fuese linux no tendría ese problema… he comprobado el .htaccess y esta perfecto.
    ¿Que hago…?

  • http://www.facebook.com/people/Rodrigo-Castaneyra/1178094824 Rodrigo Castaneyra

    no se ha solucionado el problema, he buscado y buscado alguna solucion pero no me funciona nada, he optado por poner /%year%/%category%/%postname%.
    al menos no me sale la pagina de error 404…
    espero alguna solucion