Después de la migración del servidor solo funciona la página de inicio
Recientemente he cambiado el alojamiento de mi sitio WordPress a VPS.net. He movido todos mis archivos e importado la base de datos. Todo parecía estar bien hasta que hice clic en un enlace y noté que todas mis páginas están devolviendo un error 404 excepto la página de inicio.
La URL del sitio es http://inksquared.com

En realidad, ni siquiera es necesario guardar. Las reglas se actualizan simplemente al visitar esa página, y parte de la actualización de las reglas implica escribir en el .htaccess.

@john ¿estás seguro de que simplemente cargar la página escribe en el .htaccess si es necesario? Tenía la impresión de que solo se actualizan las rewrite_rules en la base de datos.

wp-admin/options-permalinks.php llama a flush_rewrite_rules()
, un envoltorio para WP_Rewrite::flush_rules()
, que si $hard
es true
(lo cual es cuando se llama en esa página) y la función save_mod_rewrite_rules
existe (definida en wp-admin/includes/misc.php
, incluida en todas las páginas de administración), llama a save_mod_rewrite_rules()
. Puedes ver la definición de esa función aquí: http://core.trac.wordpress.org/browser/trunk/wp-admin/includes/misc.php#L114

La función que realmente escribe las reglas de reescritura en .htaccess se llama insert_with_markers
(usada en save_mod_rewrite_rules()
mencionada arriba), definida aquí: http://core.trac.wordpress.org/browser/trunk/wp-admin/includes/misc.php#L53

No es necesario abrir el cPanel. Estaba probando primero la respuesta aceptada y el mío es un hosting compartido, así que no pude encontrar httpd.conf y el chat en vivo todavía se está cargando. Y luego encontré esta respuesta que es la solución más fácil de usar. :D

Esto también me funcionó, solo tuve que cambiarlo en la sección de apache2.conf
para la ubicación de mis archivos del servidor, en mi caso /var/www

Esto fue parte de la solución para mí. Añadí AllowOverride All
a la configuración del sitio, pero también agregué Options FollowSymLinks
. Luego pude usar permalinks personalizados, lo que también creó un archivo .htaccess raíz apropiado. Después de eso todo funcionó.

Funcionó. Asegúrate de cambiar la opción AllowOverride en las ubicaciones del archivo conf.

habilitar en httpd.conf LoadModule rewrite_module libexec/apache2/mod_rewrite.so solucionó el problema en Mac. elimina el # para activarlo

Yo me enfrenté al mismo problema.
Hice lo siguiente para resolverlo en un servidor Ubuntu:
En /etc/apache2/apache2.conf, edité AllowOverride None para /var/www/ cambiándolo a AllowOverride All
Ejecuté el siguiente comando para habilitar mod_rewrite para .htaccess
sudo a2enmod rewrite
- Reinicié el servidor apache:
sudo service apache2 restart
¡El problema se resolvió!

Gracias, no pude solucionar esto con ninguna de las otras sugerencias, pero a2enmod rewrite
funcionó.

+1 Por mencionar el módulo rewrite. No me di cuenta de que no estaba habilitado por defecto.

Definitivamente necesité ese sudo a2enmod rewrite
para que funcionara, ¡gracias!

En Ubuntu 14.04 - el archivo 000-default.conf se puede encontrar en /etc/apache2/sites-available
O si ejecutas múltiples instalaciones de WordPress, la configuración del host virtual sería el nombre de tu archivo de configuración. ej. dominio.conf
Tienes que reemplazar AllowOverride None
por AllowOverride All
Espero que esto funcione.

La razón más probable es que el archivo .htaccess
no se copió correctamente. En Mac OS X, y en algunas aplicaciones FTP, este archivo se considera "oculto" porque comienza con un .
. Si vas a la sección Ajustes -> Enlaces permanentes en el área de administración, puedes regenerar este archivo, pero probablemente sea mejor encontrar la versión que tenías anteriormente y usarla de nuevo (especialmente si utilizas un plugin de caché).

¿Recibes un error 404 del servidor web o un 404 de WordPress? Si es un 404 del servidor web, lo más probable es que no hayas copiado el archivo htaccess raíz de la instalación anterior, o que no tenga los permisos correctos para ejecutarse.
Mi primer paso para solucionar problemas sería verificar si existe un archivo htaccess en la raíz y, de ser así, qué contiene.

Revisé el archivo .htaccess. Contiene el mismo código que aparecía en la sección de enlaces permanentes del panel de administración de WordPress. Cambié los permisos a escribibles y no veo cambios aparentes.
