Eliminar index.php de la URL en WordPress

25 mar 2017, 05:14:20
Vistas: 4.6K
Votos: 0

He instalado WordPress en el subdirectorio /www/html/wordpress/ (y no en /www/html/) y la solución proporcionada aquí Cómo eliminar index.php no funcionó en este servidor.

La solución sugiere agregar lo siguiente al .htaccess:

# INICIO 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>
# FIN WordPress

y cambiar a 'AllowOverride ALL' en la configuración de Apache.

La solución funcionó para mi otro servidor donde WordPress está instalado en /www/html/ pero no en este. ¿Sabes por qué ocurre esto y cómo podría solucionarlo? (Aparentemente debería cambiar el código anterior en .htaccess pero no sé cómo)

1
Comentarios

¿Cómo se ven actualmente tus URLs? ¿Cómo están configurados tus ajustes de enlaces permanentes?

bosco bosco
25 mar 2017 06:17:47
Todas las respuestas a la pregunta 2
1
-2

Inicia sesión en tu panel de WordPress y haz clic en Ajustes > Enlaces permanentes. En Configuración común, selecciona Estructura personalizada y en el campo de texto ingresa /%postname%/

Haz clic en Guardar cambios

El segundo paso es crear un archivo .htaccess que luego se cargará en la ubicación raíz del sitio de WordPress.

El archivo .htaccess contendrá las siguientes reglas:

RewriteEngine on
RewriteBase / 

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/(.*)$ /index.php/$1 [NC,L]

#para wordpress con un directorio de blogs
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule ^wordpress/(.*)$ wordpress/index.php/$1 [NC,L]
25 mar 2017 05:23:26
Comentarios

¡Gracias, pero el código anterior no funcionó para mi! Las páginas que no incluyen index.php no pueden cargarse.

geek2000 geek2000
26 mar 2017 00:01:26
0
-2

Dependiendo de tus configuraciones, las entradas predeterminadas del .htaccess se verían exactamente como tu código (ver abajo). Si después de activar una de las configuraciones distintas a "predeterminado" en el Panel de WordPress > Ajustes > Enlaces permanentes, aún no puedes eliminar index.php, eso indica que las entradas predeterminadas de WordPress no están teniendo efecto.

¿Estás seguro de que tus archivos .htaccess se cargan cuando Apache inicia?
¿Cómo se ve tu configuración de Apache <virtualhost> para el directorio donde está instalado WordPress?

Entrada predeterminada de WordPress en .htaccess después de activar los enlaces permanentes

# 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

Si todo lo demás falla, puedes intentar agregar este código en tu archivo .htaccess. Esto no es realmente una solución, pero al agregar esto en tu archivo .htaccess podría generar un error que te señale la fuente del problema. Revisa tus archivos de registro de errores.

# Forzar las solicitudes de archivos index.php a eliminar el nombre de archivo index.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]*/)*index\.(php)(\?[^\ ]*)?\ HTTP/
RewriteRule ^(([^/]*/)*)index\.(php)$ /$1 [R=301,L] 
5 mar 2018 16:25:31