• Resuelto Irmandinho

    (@irmandinho)


    Hola a todo el mundo.

    Para resolver este problema he intentado de todo y no he sido capaz. El problema consiste en que, tras actualizar WP a las últimas versiones (a partir de la 4), cuando entro en el panel de administración a través de ‘www.dominio.es/blog/wp-admin’ me lleva a dicho panel pero desaparece de la barra de navegación la parte de /blog/, quedando sólo ‘www.dominio.es/wp-admin’. De esta forma, al intentar navegar por el panel o publicar cualquier entrada me lleva directamente a una página de error de «la página que busca no existe». Este problema no me pasaba con las versiones anteriores a la 4, teniendo exactamente la misma configuración en el resto del WP. Si entro a la página sin ser como administrador (como entraría cualquier visitante) puedo ver todo perfectamente y navegar por ella sin problema.

    Adelanto que tengo bien definidos los valores de siteurl y home en la tabla wp-options de la base de datos (con los valores http://www.dominio.es/blog). También la página está dentro del directorio dominio->blog->public-html.

    En el wp-config tengo añadido el siguiente código (si se quita da error al intentar entrar en la página), pero no creo que tenga que ver porque, como dije, con las versiones de WP anteriores no me pasa nada de esto:

    $_SERVER['HTTP_HOST']=$_SERVER['HTTP_X_FORWARDED_HOST'];
    define('WP_HOME','http://www.dominio.es/blog');
    define('SERVER_NAME','http://www.dominio.es/blog');
    $_SERVER['SERVER_NAME'] = 'http://www.dominio.es/blog';
    define('WP_SITEURL','http://www.dominio.es/blog');

    En el .htaccess pasa algo extraño, y es que funciona con esta estructura:

    # BEGIN wordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /blog/
    RewriteCond %{REQUEST_URI} !page
    RewriteRule ^[0-9]{4}\/+[0-9]{2}\/+(.+)$ /blog/$1 [L,R=301]
    RewriteRule ^index.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    # END WordPress

    cuando lo normal, por lo que he visto por ahí, sería que en la penúltima línea pusiese así:

    RewriteRule . /blog/index.php [L]

    Si lo pongo así, me da un «Internal Server Error», ni idea de porqué.

    Sin embargo, si pongo un .htaccess como si no tuviese la página en una subcarpeta /blog/ no me da problemas de redirección ni nada:

    # BEGIN wordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} !page
    RewriteRule ^[0-9]{4}\/+[0-9]{2}\/+(.+)$ /$1 [L,R=301]
    RewriteRule ^index.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    # END WordPress

    Ah! y los plugins (sólo tengo 3) están todos actualizados a la última versión, y también he probado a irlos desactivando a ver si el problema tenía algo que ver, y no.

    Explico estas cosas porque pienso que podrían tener alguna relación con el problema expresado en el primer párrafo y así podemos adelantar algo de tiempo. Lo dicho, con versiones anteriores de WP no había este problema y si vuelvo a «desactualizar» a esas versiones sigue sin haberlo. Sólo con las nuevas.

    Eternamente agradecido al crack o a la crack que sea capaz de echar un cable.

Viendo 15 respuestas - de la 1 a la 15 (de un total de 18)
  • Iniciador del debate Irmandinho

    (@irmandinho)

    Por cierto, también probé a cambiar el tema por la versión más reciente de TwentyTen a ver si era cosa de algunha incompatibilidad por ahí, y nada.

    Moderador LGrusin

    (@lgrusin)

    Pensé que ya habías resuelto este tema. Para mi es un problema de configuración del servidor puesto que el .htaccess debe ir con /blog/index.php

    Debiste seguir en el hilo anterior…

    Un saludo

    Iniciador del debate Irmandinho

    (@irmandinho)

    Pués me voy a poner en contacto con los responsables del servidor, pero ya me sé su respuesta: «Todo está bien y no damos soporte para gestores de contenidos».

    El hilo anterior lo seguí, pero después de probar todas las soluciones que allí se aportaron y no funcionar ninguna decidí abrir uno nuevo, dando mayores especificaciones y con la esperanza de que a alguien le hubiese pasado algo parecido y lo hubiese arreglado.

    Iniciador del debate Irmandinho

    (@irmandinho)

    Desde el servidor me dicen que todo bien, que hay otras webs utilizando WordPress y sin problemas. Me dicen que posiblemente sea la configuración del .htaccess y que dicha configuración depende muchas veces de la versión instalada. Esto debe de ser cierto, pues yo tengo el problema con la versión 4.4.2; con versiones más antiguas la cosa funciona.

    Alguien que tenga la versión 4.4.2 podría copiar por aquí la configuración de su .htaccess?

    Gracias y saludos

    El .htaccess que tienes no es nada extraño. Simplemente no necesitas esto:

    RewriteRule . /blog/index.php [L]

    Por que antes hay:

    RewriteBase /blog/

    El .htaccess hace muchísimas versiones de WordPress que no ha cambiado nada. Yo empecé a utilizar WorPress creo recordar que en la versión 3.1 y al menos desde entonces no ha cambiado. Lo que pasa es que parece que estás utilizando unas reglas en el .htaccess para una configuración de WordPress que no es la tuya.

    Tampoco necesitas todo eso que has puesto en el archivo wp-config.php.

    Un poco de explicacíon. En la configuración de WordPress:

    – Dirección de WordPress: debes poner la dirección real dónde están los archivos de WordPress. En tu caso parece ser http://www.ejemplo.es/blog). Esta direccón en la base de datos en el site url. Es la URL a la que puedes poner al final wp-admin y acceder al panel de administración.

    – Dirección del sitio: curiosamente, esta dirección en la base de datos es la home url, no el site url. Es la URL en la que quieres que se acceda a la web en el frontend. Puede ser la misma o diferente a la anterior. Por ejemplo, puedes tener los archivos de WordPress en http://www.ejemplo.es/blog (y la administración en http://www.ejemplo.es/blog/wp-admin) pero que el frontend se vea en http://www.ejemplo.es/.

    Si ambos valores son iguales, http://www.ejemplo.es/blog, el .htaccess tiene que estar también en http://www.ejemplo.es/blog, no en el directorio raíz, y tener este contenido:

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

    Si has estado toqueteando las opciones de site url y home url, o la configuración de enlaces, puede que necesites «reconstruir» las reglas de reescritura de URLs de WordPress. Para hacerlo, ve a «Configuración->Enlaces permanentes» y pulsa el votón guardar, auqnue no cambies nada.

    Si WordPress instalado en http://www.ejemplo.es/blog pero que tu web sea accesible en http://www.ejemplo.es/ (salvo el admin que estaría en http://www.ejemplo.es/blog/wp-admin) ya el tema es otro. Si quieres este comportamiento dime y te pongo como sería la configuración.

    PD: ¿Seguro que tienes WordPress dominio->blog->public-html y no en dominio(usuarios)->public_html->blog?

    Perdona pero me equivoqué. Toda la explicación está bien pero el .htaccess debe estar en el directorio http://www.ejemplo.es/blog con este contenido:

    # BEGIN WordPress
    <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>
    
    # END WordPress

    Eso, como decía, siempre suponiendo que tanto el backend como el frontend se accede en http://www.ejemplo.es/blog

    ¿De dónde sacas estas líneas y por qué las tienes en tu .htaccess?

    RewriteCond %{REQUEST_URI} !page
    RewriteRule ^[0-9]{4}\/+[0-9]{2}\/+(.+)$ /$1 [L,R=301]
    Iniciador del debate Irmandinho

    (@irmandinho)

    Hola cybmeta, te vou contestando.

    El contenido

    RewriteCond %{REQUEST_URI} !page
    RewriteRule ^[0-9]{4}\/+[0-9]{2}\/+(.+)$ /$1 [L,R=301]

    no tengo ni idea de donde salió, para ser sinceros. Si lo quito tampoco pasa nada. Es decir, no me da problemas.

    Tanto la SITE URL como la HOME URL son la misma, http://wwww.ejemplo.com/blog. El usuario tiene que entrar a través de ahí y esa es mi intención.

    El .htaccess está en el directorio principal de la página junto al resto de archivos y carpetas, es decir, en la carpeta ejemplo -> blog -> public_html.

    Si escribo el .htaccess como el que me indicas en el segundo de tus mensajes me da error de redirección al intentar entrar en la página.

    # BEGIN WordPress
    <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>
    
    # END WordPress

    Sin embargo, si elimino los caracteres «/blog» de la penúltima línea, ya podría entrar como usuario visitante sin problema. Lo que pasa es que me sigue dando el problema que me trajo aquí en un inicio: que al entrar al panel de administración desaparece de la URL en la barra de direcciones del navegador la parte de /blog/, con lo que cualquier paso que intente dar me lleva a error de página no encontrada. Es decir, al desaparecer esa parte de la URL, me lleva a sitios como http://www.ejemplo.com/wp-admin/options-permalink.php; y eso sin el /blog/ en medio no existe.

    Ten en cuenta, como comenté por ahí, que esto sólo pasa al actualizar a la versión 4.4.2 (y otras versiones inmediatamente anteriores), pero con versiones más antiguas y exactamente el mismo .htaccess no me da este problema. No tengo ni idea de cual puede ser la relación.

    Un saludo y gracias

    En ese caso, cómo te decía, ese .htaccess tiene que estar en el directorio blog y no en el directorio raíz.

    Iniciador del debate Irmandinho

    (@irmandinho)

    Igual no te estoy entendiendo bien y pido disculpas.

    Probé a llevar el .htaccess desde ejemplo->blog->public_html (que es donde tengo el WordPress instalado) a ejemplo->blog. Al intentar entrar, me da el error de «página no encontrada… Ha sido eliminada o no se encuentra en el servidor». Eso probando tanto con

    RewriteRule . /blog/index.php [L]

    como con

    RewriteRule . /index.php [L]

    Iniciador del debate Irmandinho

    (@irmandinho)

    Por cierto, sobre lo que me decías que no necesitaba en mi wp-config.php

    $_SERVER[‘HTTP_HOST’]=$_SERVER[‘HTTP_X_FORWARDED_HOST’];
    define(‘WP_HOME’,’http://www.dominio.es/blog&#8217;);
    define(‘SERVER_NAME’,’http://www.dominio.es/blog&#8217;);
    $_SERVER[‘SERVER_NAME’] = ‘http://www.dominio.es/blog&#8217;;
    define(‘WP_SITEURL’,’http://www.dominio.es/blog&#8217;);

    Borré todo excepto la línea de $_SERVER['HTTP_HOST']=$_SERVER['HTTP_X_FORWARDED_HOST'];. De esta manera, sigo teniendo los mismos problemas que antes pero la web se sigue viendo. Si pruebo a borrar esa línea me da un problema de página no encontrada, pues la URL del navegador se redirige hacia http://www-php2.ejemplo.es/, es decir, el nombre del servidor de los archivos.

    Pero bueno, en cualquier caso, entiendo que esa línea no está en el origen de mis problemas y que no pasa nada por dejarla.

    Moderador LGrusin

    (@lgrusin)

    Irmandinho, como te dije en el hilo anterior el .htaccess debe ser el segundo que ha puesto cybmeta. También te dije que lo creara WordPress desde el escritorio, no lo crees manualmente. Si no funciona no lo cambies, busca otros problemas porque eso está bien así.

    Creo que lo mejor es que vuelvas a leer detenidamente todo lo que se ha escrito sobre este tema.
    https://es.forums.wordpress.org/topic/la-url-de-la-subcarpeta-de-mi-wp-desaparece-del-navegador-al-intentar-publicar?replies=23

    Un saludo

    Iniciador del debate Irmandinho

    (@irmandinho)

    El asunto es que si dejo que WP cree el .htaccess desde el escritorio me crea el siguiente

    `# BEGIN wordPress
    <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>
    # END WordPress`

    El WP funciona con este .htaccess y en la versión 4.1.1 no hay ningún problema.

    Lo que pasa es que si actualizo a 4.4.2, manteniendo exactamente la misma configuración del sitio, me pasa lo de la dichosa URL, que es el motivo que me trae aquí.

    Bien, dado que el problema no está en el .htaccess, a qué crees que se podría deber que al actualizar la versión del WP me empiece a desaparecer la parte de /blog/ de la url y me imposibilite navegar por el panel de administración? Por donde debería empezar a buscar?

    (ojo, eso no pasa si entro a la página como visitante, ahí no hay problema)

    Gracias y un saludo.

    A mi eso de ejemplo->blog->public_html me suena muy raro, lo más normal sería ejemplo->public_html->blog. ¿Estás seguro de la ruta real en el servidor?

    Cuándo dejas que lo cree WordPress, ¿dónde lo crea? ¿Tienes algún otro .htaccess en el directorio raíz o en el directorio blog?

    El otro problema de redirección a http://www-php2.ejemplo.es/ también es muy extraño. Yo para esto contactaría con el soporte del hosting.

    Iniciador del debate Irmandinho

    (@irmandinho)

    Sobre la ruta estoy seguro. Hay un servidor, ‘ejemplo‘, con varios directorios, ‘blog1', 'blog2', 'blog3', etc. de otras páginas de la institución. Yo sólo tengo acceso a uno de esos directorios que llamaremos ‘blog’. Y ahí dentro es donde está la carpeta public_html con todos los archivos de WP.

    Cuando dejo que WP cree el .htaccess através de la pantalla de permalinks, lo crea dentro de la carpeta public_html, junto al wp-admin, wp-contents, wp-includes y el resto de archivos. Y ese es el único .htaccess que tengo, no hay ningún otro.

    La redirección a http://www-php2.ejemplo.es/ sólo la hace si elimino esta línea del wp-config:

    $_SERVER['HTTP_HOST']=$_SERVER['HTTP_X_FORWARDED_HOST']

    Lo extraño de todo esto es que sólo me da problema al actualizar a la versión 4.4.2, si vuelvo atrás y pongo la versión 4.1.1, manteniendo todo igual, no hay problema.

    ¿Cuál el motivo de que hayas introducido esta línea?:

    $_SERVER['HTTP_HOST']=$_SERVER['HTTP_X_FORWARDED_HOST']

    ¿Tienes el sitio en una intranet, detrás de un proxy o algo así?

Viendo 15 respuestas - de la 1 a la 15 (de un total de 18)
  • El debate ‘El /subdominio/ desaparece de la URL al ingresar al panel de admin’ está cerrado a nuevas respuestas.