Estimado Navegante. Si has llegado hasta aquí ya conocerás los beneficios que tiene un permalink adecuado (un mal ejemplo) así que al grano. Vamos a ver que problemas pueden surgir al activarlo.

Supongamos un Apache 1.3 sobre Linux. Por defecto, al activar los permalinks en Wordpress las direcciones apuntan a un Not Found o error 404. No es problema de Wordpress, sino de la configuración del server. Vamos a ver que cosas hay que comprobar:

¿Existe el .htaccess?

En alguna carpeta madre (mejor en la raíz) del Wordpress debe existir un archivo .htaccess

¿Wordpress puede escribirlo?

El usuario que corra el apache debe tener permiso de escritura sobre el archivo .htaccess. Por defecto el archivo tiene una configuración 644 podemos ampliarla a 664 como en mi caso para que el grupo tenga permiso de escritura o a 666 si sabemos lo que hacemos.

chmod 664 /ruta/.htaccess

Si wordpress tiene permiso sobre el archivo habrá añadido el siguiente código:

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

Si no quieres dar mas persisos de los necesarios puedes dejarlo como solo lectura y añardir el codigo a mano. Esto es lo mas recomendable.

¿Apache lee el .htaccess?

Si lo anterior no funciona hay que comprobar que el htaccess se emplea realmente.
En la configuración del apache (/etc/apache/httpd.conf) debe aparecer la directiva:

AllowOverride All

Si se usan VirtualHost es mejor ponerlo dentro del host, asi:

<VirtualHost *>

DocumentRoot /ruta/siloco

ServerName siloco.es

<Directory /ruta/siloco>

AllowOverride all

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

Después de esto hacemos:

#Apachectl configtest (si todo OK:)

# Apachectl restart

¿Tienes activado el mod_rewrite?

Si todo lo anterior no funciona debes comprobar que el modulo mod_rewrite esta activo. En la configuración del apache tendrás que descomentar la siguiente línea o añadirla si no la encuentras:

LoadModule rewrite_module modules/mod_rewrite.so

Es facil que el modulo ya este cargado y nos de una advertencia como esta:
[warn] module rewrite_module is already loaded, skipping

Si no, repetimos el:

#Apachectl configtest
# Apachectl restart

¿Es un “canonicalization problem”?

Hay 4 formas de entrar a un post, con o sin las www y con o sin la ultima barra ” / “. Si de alguna de estas formas falla tienes un canonicalization problem, puedes seguir a Adseok para arreglarlo. En las ultimas versiones de Wordpress este problema ya esta arreglado.

Puedes confundir este problema con otro de la configuracion de apache. Si el virtual host solo reconoce el dominio sin las www (si solo tienes una linea en httpd.conf que ponga ServerName siloco.es) debes añadir el alias con las www:

ServerAlias www.siloco.es

Ya debería funcionar bien después de todo esto. No os preocupéis por los enlaces antiguos. Se redirigen automáticamente.

Creo que he repasado los problemas mas frecuentes que se pueden tener, el mio fue sobre el AllowOverride. Si habéis tenido mas problemas, comentarlos por favor.

Fuentes:

My digital life

tensaiweb.info