Cargando contenido de index.php que se encuentra fuera de la carpeta del blog para publicar una sola página

4 minutos de lectura

avatar de usuario
Sree

estoy creando Blog página como WordPress para mi sitio web PHP estático. Cuando la URL de la página del blog cambia a pretty permalink (example.com/blog/my-post-page), cargando contenidos (sin redirigir a index.php, solo la carga de contenidos y la URL serán como http://example.com/blog/mi-página-de-publicaciones) de index.php (página de inicio de mi sitio) que se encuentra fuera de la carpeta del blog en lugar de single.php contenido.

Cuando enlace permanente cambios a default (example.com/blog/?p=123), funcionará perfectamente.

necesito URL como http://example.com/blog/mi-página-de-publicaciones.

EDITAR: – He actualizado el enlace permanente a la estructura personalizada como /index.php/%postname%/. Pero ahora las páginas de publicaciones se muestran con example.com/blog/index.php/my-post-page.

Creo que el problema surgió con la nueva versión de WordPress. (Versión 4.2.2). Cualquier solución para eliminar index.php de la URL?

Mi estructura de directorio: –

/                                          - Root
/blog                                      - Blog folder
/blog/wp-content/themes/mytheme/           - Theme folder
/blog/wp-content/themes/mytheme/single.php - Post Single page

/index.php                                 - Home page (Loading contents of this file)

Mi htaccess :-

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

Cuando elimino/cambio el nombre de index.php en la carpeta raíz, la página mostrará un error no encontrado.

  • No entiendo la parte de la que hablas index.php (la raíz, fuera de blog directorio) y single.php (¿Qué es? ¿Qué tiene que hacer este archivo aquí?)

    – Justin Iurman

    19 mayo 2015 a las 14:01


  • @JustinIurman mi página de publicación es index.php y la página de detalles de la publicación es single.php (concepto WP). Aquí el problema es que en la carpeta externa del blog hay otro archivo llamado index.php (página de inicio del sitio). Cuando accedo a la página de detalles de la publicación en el blog como un bonito enlace permanente (example.com/blog/my-post-page), se redirigirá al archivo index.php fuera de la carpeta de mi blog. Luego cambié el enlace permanente a Estructura personalizada como /index.php/%postname%/. Luego, la página de detalles de la publicación se carga correctamente, pero el enlace contiene index.php (example.com/blog/index.php/my-post-page).

    – Sree

    20 de mayo de 2015 a las 3:42

  • Bueno, solo para estar seguro… Su directorio de WP es blog Correcto ? ¿Podría actualizar su pregunta con su WP htaccess actual? Porque es extraño, está reescribiendo en el índice raíz en lugar del índice de la carpeta del blog … A menos que tenga un problema en las rutas de htaccess, por ejemplo

    – Justin Iurman

    21 de mayo de 2015 a las 11:05


  • @Sree, ¿su WP está instalado en el Blog? si es así, ¿para qué sirve index.php en el directorio raíz? Por favor proporcione esta información?

    – Panamá Jack

    21 mayo 2015 a las 20:39

  • @JustinIurman sí. El directorio de WP es un blog. He actualizado mi archivo htaccess. Pero mi sitio funcionará sin el archivo htaccess.

    – Sree

    25 de mayo de 2015 a las 6:41

en htaccess puede escribir cualquier expresión regular para la reescritura de URL en su caso

RewriteRule ^/blog/\(.+)$ /blog/index.php?postname=$1

esta línea significa que si url comienza con /blog/ cualquier cosa después / sería pasado a /blog/index.php como postname parámetro.
example.com/blog/my-post-page se reescribiría como example.com/blog/index.php?postname=my-post-page

puedes excluir cualquier cosa de esta regla

por ejemplo, excluyamos esto: /blog/wp-content/themes/mytheme/
seria asi:

RewriteRule ^(?!/(.+)/(.+)/(.+)/(.+))/blog/\(.+)$ /blog/index.php?postname=$1

  • ¿podría actualizar la respuesta con el código htaccess completo?

    – Sree

    26 de mayo de 2015 a las 5:03

  • No entendí completamente todas las reglas de reescritura que le gustaría aplicar. ¿Puedes comentar el mapa completo? en example.com/blog/my-post-page -> example.com/blog/index.php?postname=my-post-page este tipo de formato?

    – JNZ

    27 de mayo de 2015 a las 8:05


Deberia de funcionar

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

  • caso bastante similar al tuyo, echa un vistazo wordpress.org/support/topic/…

    – ankit.jbp

    15 mayo 2015 a las 10:10

  • Sí. Desde el enlace anterior he actualizado el enlace permanente a personalizado como /index.php/%postname%/. Pero ahora las páginas de publicaciones se muestran con example.com/blog/index.php/my-post-page. ¿Cómo eliminarlo?

    – Sree

    15 mayo 2015 a las 10:45

  • en Permalinks en wp-admin (/wp-admin/options-permalink.php): seleccioné Personalizado y esto en el campo personalizado /%year%/%monthnum%/%day%/%postname%/ En su caso sería ser simplemente ” /%postname%/ ” Si ya está configurado así, cámbielo a la configuración predeterminada, guarde los cambios y vuelva a cambiarlo a esta configuración y vuelva a aplicar el cambio por si acaso. que .htaccess debería funcionar

    – Róstol

    21 mayo 2015 a las 18:41


Necesitas hacer dos cambios aquí, cambiar permalink a /%postname%/.

y cambiar .htaccess a siguiente

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

¿Ha sido útil esta solución?