¿Por qué los enlaces permanentes funcionan con /index.php/%postname% pero no solo con %postname%?

12 jul 2011, 14:33:21
Vistas: 28.5K
Votos: 7

Tengo un problema con los enlaces permanentes de WordPress. Cuando cambio a enlaces permanentes bonitos solo obtengo errores 404 en las páginas. Lo extraño es que cuando uso /index.php/%postname% los enlaces funcionan bien, pero necesito eliminar la parte de index.php.

Leí sobre hacer cambios en el archivo httpd.conf pero no puedo encontrar el archivo en ninguna parte. El archivo htaccess es correcto por lo que he podido averiguar, está a continuación

# 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

¿Alguna otra idea?

Gracias Emma

9
Comentarios

¿Cuál es tu host?

Bainternet Bainternet
12 jul 2011 14:41:26

Hola, es una empresa local, tienen un servidor en su tienda. Tienen un panel web muy básico.

emmahiggy emmahiggy
12 jul 2011 15:20:52

Quizás revisa los permisos del archivo .htaccess. ¿Tal vez WordPress no puede acceder a él?

Cristian Cristian
12 jul 2011 15:38:34

Tengo los permisos del archivo htaccess establecidos en 644, el permalink está cambiando pero las páginas no se actualizan con él, así que obtengo errores 404 cuando el permalink es correcto.

emmahiggy emmahiggy
12 jul 2011 17:28:01

¿Cuál es el valor exacto de la configuración de permalinks?

Alex Older Alex Older
12 jul 2011 17:39:19

Es una estructura personalizada de /index.php/%postname%

emmahiggy emmahiggy
12 jul 2011 18:33:36

¿Este sitio está alojado en un servidor Linux? Tuve este problema en el sitio web de un cliente, pero era un servidor Windows.

Jeremy Jared Jeremy Jared
12 jul 2011 21:37:14

Es un servidor Windows, probaré tu solución a continuación y te haré saber cómo va. Muchas gracias.

emmahiggy emmahiggy
13 jul 2011 17:11:19

Dios mío, no puedo creer que este error siga apareciendo en 2021

Bharat Bharat
1 ene 2021 22:48:37
Mostrar los 4 comentarios restantes
Todas las respuestas a la pregunta 13
2
12

Tenía todo el código correcto en el archivo .htaccess, pero terminó siendo completamente sobrescrito en el archivo por defecto de Ubuntu /etc/apache2/apache2.conf también. Cambié la entrada para / y /var/www de AllowOverride None a AllowOverride All, reinicié Apache y ahora todo funciona correctamente.

29 abr 2015 21:35:38
Comentarios

¡Funcionó! Gracias

Bharat Bharat
1 ene 2021 22:48:51

Brillante, esto funcionó. Debería actualizarse en el manual en alguna parte

Jonathan S. Fisher Jonathan S. Fisher
1 sept 2021 20:40:20
0

Mi suposición es que mod_rewrite no está habilitado. Dependiendo del servidor que estés utilizando, habilita mod_rewrite.

Luego, si estás en Linux, edita manualmente /etc/apache2/sites-enabled/000-default y cambia AllowOverride de None a All (o donde esté el directorio de tu sitio).

Aquí, en los puntos 3 y 4 deberían estar las soluciones para Windows.

13 jul 2011 23:56:04
0

He estado trabajando en un problema similar desde ayer y finalmente encontré mi solución.

1) Asegúrate de que tu archivo .htaccess tenga permisos 666

2) Habilita el módulo mod_rewrite:

sudo a2enmod rewrite

3) Reinicia apache:

sudo systemctl restart apache2

4) Configura AllowOverride All para el directorio público en /etc/apache2/apache2.conf

<Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

5) Reinicia apache:

sudo systemctl restart apache2

6) Ve al panel de control de WordPress y cambia la configuración de enlaces permanentes (si estás en "nombre de entrada", cámbialo a "simple", o viceversa). Visualiza el sitio para comprobarlo.

7) Regresa al panel de control y cambia la configuración de enlaces permanentes a la que desees.

8) Revertir los permisos del archivo .htaccess a 644

Esto funcionó para mí.

26 mar 2019 06:21:46
0

¿Estás usando por casualidad Names.co.uk como tu proveedor de alojamiento?

Acabo de tener el mismo problema que tú, y después de un par de horas buscando en Google descubrí que usan un servidor Zeus - no Apache - y no soporta la función Mod_ReWrite. Esto parece explicar los síntomas confusos. (Yo no tenía archivo .htaccess - pero WordPress no reportaba errores cuando hacía cambios en mis preferencias de enlaces permanentes).

Tienen una solución alternativa para Zeus, detallada aquí:

http://www.names.co.uk/support/hosting/linux_hosting/1119-wordpress_rewrite_script.html

Me doy cuenta de que esto es un par de meses después de tu publicación original y probablemente ya lo hayas resuelto - pero para cualquiera que encuentre esto en el futuro, sería una buena idea verificar si tu proveedor usa Zeus u otro servidor que no sea Apache.

Actualización: Por favor revisa el código que publiqué aquí en una pregunta similar

20 sept 2012 04:26:13
1

He estado lidiando con este problema por un tiempo, y hoy finalmente lo resolví. Descubrí que mi mod_rewrite no estaba habilitado todo este tiempo. Encontré la información en este enlace muy útil. Explica todo, desde cómo verificar si el mod_rewrite está habilitado, y si no lo está, cómo habilitarlo. Espero que esta información sea útil para cualquiera que sea nuevo en WordPress y esté luchando con la configuración de los enlaces permanentes (pretty permalinks).

8 ene 2016 14:05:33
Comentarios

Toda la información relevante debe ser parte de tu respuesta, especialmente tu respuesta no debería depender de enlaces externos, porque la información allí podría desaparecer y entonces tu respuesta sería más o menos inútil. Así que, por favor, ¿podrías agregar la información a tu respuesta? - gracias.

Nicolai Grossherr Nicolai Grossherr
8 ene 2016 15:46:06
0

Intenta configurar el archivo htaccess a 777, luego entra y actualiza los ajustes de enlaces permanentes a lo que desees, luego si funciona vuelve y cámbialo de nuevo a 644

12 jul 2011 21:30:29
1

Después de agregar mi contenido, encontré un artículo que sugería eliminar el archivo .htaccess, luego ir a Configuración/enlaces permanentes y eliminar el index.php. El artículo decía que WordPress daría un error sugiriendo que crees el archivo .htaccess. Decidí probarlo pero no hizo nada. Lo que sí descubrí es que mis enlaces permanentes seguían funcionando con el archivo .htaccess eliminado. Esto me desconcertó al principio. Abrí mi cliente FTP y navegué hasta mis archivos. Noté que había un archivo .htaccess allí después de haberlo eliminado. No sé si fue WordPress, mi cuenta de alojamiento o qué exactamente lo creó, pero sé que esto es nuevo. Esto no ocurría antes. Podrías probar este método si todo lo demás falla.

No pude recrear el problema en tu pregunta, así que no estoy 100% seguro de que funcione para ti. Pero vale la pena intentarlo.

Saludos, Jeremy Jared

12 jul 2011 21:47:53
Comentarios

Hola, probé lo anterior y no funcionó, el archivo htaccess no se recreó, pero la configuración de enlaces permanentes no funcionó, así que simplemente volví a subir el archivo htaccess. Gracias de todos modos

emmahiggy emmahiggy
13 jul 2011 18:18:07
0

Prueba reemplazando el código .htaccess con este:

# -------------------------------------------------------------------------
# Opciones del Motor de Rewrite
# -------------------------------------------------------------------------

RewriteEngine On
RewriteCompatibility2 On
RepeatLimit 200
RewriteBase
RewriteRule ^/index.php$ / [NC,P,R=301]
RewriteCond %{REQUEST_URI} !/wp-admin
RewriteRule ^/(.*)/$ /index.php/$1 [NC]

# Redirige 'www.tublog.com/alguna-ruta/alguna-pagina/index.php'
# a 'www.tublog.com/alguna-ruta/alguna-pagina/'

RewriteRule ^/(.*)/index.php$ /$1/ [NC,P,R=301]

# -------------------------------------------------------------------------
# FIN DE LAS REWRITES
# -------------------------------------------------------------------------

Todavía tenía las credenciales de acceso de un cliente para el que tuve que solucionar esto. Esto es lo que usé para él. Es un servidor IIS, no estoy seguro si eso importa pero puedes probarlo.

Buena suerte,

JJ

13 jul 2011 18:43:50
0

Creo que tu hosting utiliza IIS (Internet Information Services). IIS usa "URL Rewrite" en lugar de "mod_rewrite", así que revisa el Codex.

Los enlaces permanentes "bonitos" (pretty permalinks) generalmente requieren mod_rewrite, y IIS (común en servidores Windows) no soporta mod_rewrite. (Si estás usando Apache 2.0.54 en Windows, mod_rewrite podría funcionar, siempre y cuando esté habilitado en apache\conf\httpd.conf).

20 nov 2012 23:42:05
2

Sé que es muy tarde para responder ahora, pero si todavía estás buscando esto; aquí hay una forma rápida de hacerlo:

Resuelto: ¿Cómo eliminar index.php de la URL de WordPress en IIS7?

10 mar 2013 15:05:08
Comentarios

Por favor, agrega una solución a tu respuesta, si el enlace muere, esto no será útil nunca más.

brasofilo brasofilo
10 mar 2013 16:34:21

@brasofilo ¡Madre de dios...! ¡Enlace muerto! ;)

Sunny R Gupta Sunny R Gupta
15 oct 2014 17:24:48
0

Estaba teniendo este problema en Mac OSX y lo siguiente fue muy útil. Parece que por defecto los Mac no están preparados para .htaccess y Apache ignorará el archivo hasta que se modifiquen ciertos archivos (especificados en los enlaces a continuación):

http://wordpress.org/support/topic/getting-pretty-permalinks-working-on-a-mac-105-server

http://clagnut.com/blog/350/

¡Espero que ayude!

14 mar 2013 07:26:47
0

Esto es para servidor Apache: Primero verifique su host virtual si está usando el predeterminado, verifique que el directorio raíz de WordPress tenga esto:

  <Directory DIRECTORIO_RAIZ_PARA_WORDPRESS>
            php_admin_flag engine on
            AllowOverride All
            Order allow,deny
            allow from all
            RewriteEngine On
            RewriteOptions Inherit
            Require all granted
    </Directory>

Verifique que su archivo .htaccess en la raíz de WordPress tenga permisos de lectura y escritura (666) y contenga:

# 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

Habilite el módulo rewrite (sudo a2enmod rewrite - para usuarios de Linux)

Ahora actualice los enlaces permanentes estructura personalizada: /%postname%/

Guarde y verifique si hay errores Ahora debería estar funcionando

La mayoría de las veces el problema es que su .htaccess es sobrescrito por las reglas de su host virtual

22 jul 2016 08:16:29
1

Necesitas ejecutar sudo a2enmod rewrite para habilitar el módulo rewrite

20 feb 2019 18:59:59
Comentarios

Bienvenido a WPSE. Deberías incluir más detalles en tu respuesta para aquellas personas que quizás no sepan de qué estás hablando aquí. Más detalles siempre son mejores, de lo contrario te encontrarás con preguntas como: "¿Dónde encuentro sudo en el panel de administración de WordPress?" (Además, deberías mencionar otros aspectos específicos, señalando que esto puede no funcionar en todos los casos, ya que a2enmod es un comando específico de Debian).

butlerblog butlerblog
20 feb 2019 19:45:00