No se puede acceder a subdirectorios que no son de WordPress ya que WordPress los sobrescribe con un error 404

16 jun 2011, 10:54:22
Vistas: 111K
Votos: 43

Me refiero a esta pregunta previamente realizada y no respondida adecuadamente: WordPress sobrescribiendo subdirectorios actuales y también Páginas/código que no son de "WordPress" obteniendo error 404

Tengo el mismo problema y he intentado casi todo lo que encontré en internet. Definitivamente está relacionado con tener los permalinks activados en WordPress. Sin embargo, he puesto un nuevo archivo .htaccess en el subdirectorio con:

RewriteEngine off

y el problema aún persiste. Incluso si elimino completamente el archivo .htaccess de WordPress, el problema continúa.

También he probado otras soluciones sugeridas como ErrorDocument 401 "Acceso no autorizado" y ErrorDocument 404 "Acceso no autorizado" y Redirect 301 /misubdirectorio http://www.midominio.com/misubdirectorio/index.html en varias ubicaciones, todo sin éxito.

¿Puede alguien por favor ofrecer otra solución? La única forma en que puedo arreglarlo es desactivando los permalinks, pero necesitamos tenerlos activados.

Gracias,

Nicole

3
Comentarios

¿Qué sucede si renombras el archivo index.php a index.bak en la carpeta raíz de WordPress? ¿El directorio sigue siendo inaccesible?

Horttcore Horttcore
16 jun 2011 11:44:21

¿Has intentado redefinir la URL base en el archivo .htaccess de tu subcarpeta (usando esta subcarpeta como valor)?

Cédric G Cédric G
5 ago 2011 18:19:53

¡Vaya, no puedo servir un archivo HTML desde una subcarpeta! Llevo más de una hora con esto y todavía no tengo resultados. Esto debería ser una de las cosas más fáciles de hacer. ¿Qué porcentaje de los millones de sitios usan subcarpetas? AAAAAAAAAAAAAAAAAAAA

Paul McCarthy Paul McCarthy
31 ago 2022 16:31:20
Todas las respuestas a la pregunta 8
0
33

Asumo que has instalado WordPress en el directorio raíz de tu sitio y que los directorios externos también están en la raíz. La razón por la que esto ocurre es que los archivos .htaccess siguen una jerarquía. Las directivas que están en el archivo .htaccess de nivel superior se aplican a todos los directorios inferiores.

Si este es el caso, puedes hacer varias cosas:

  1. Mueve tu WordPress a su propio directorio. Consulta: http://codex.wordpress.org/Moving_WordPress Si mueves WordPress a su propio directorio, de modo que esté al mismo nivel en la jerarquía del servidor que los otros directorios, las reglas de reescritura de WordPress no afectarán a los otros directorios.

  2. RewriteEngine Off - esto normalmente funcionaría. Si no está funcionando, verifica que no estés usando una configuración DNS con comodín. Si tienes un registro * de nombre de host apuntando a tu servidor web en la configuración DNS, puede causar problemas con .htaccess y subdominios.

  3. En el archivo .htaccess en la raíz de tu sitio, añade lo siguiente ENCIMA de las directivas de WordPress:

    <IfModule mod_rewrite.c>
    RewriteEngine On  
    RewriteBase /
    RewriteCond %{REQUEST_URI} ^/subdirectoryname1/(.*)$ [OR]
    RewriteCond %{REQUEST_URI} ^/subdirectoryname2/(.*)$ [OR]  
    RewriteRule ^.*$ - [L]
    </IfModule>
    

Una de estas opciones debería funcionarte.

17 jun 2011 17:33:00
3
22

Esto me ha funcionado en el pasado para una situación similar:

Coloca esto en la parte superior del archivo .htaccess

ErrorDocument 401 default
16 jun 2011 12:39:43
Comentarios

¡Gracias! He probado muchas cosas, pero esta es la única solución que funcionó para mi caso: subdirectorio protegido con contraseña

Rado Rado
7 mar 2013 01:27:48

También me funcionó, ¿alguna explicación sobre qué hace y por qué funciona?

Asaf Asaf
10 ago 2013 11:27:48

Esto funciona para mí... no estoy usando WordPress sino OpenCart y tengo el mismo problema. Una explicación sería realmente útil.

You Old Fool You Old Fool
28 ago 2014 22:09:24
0

Si todavía estás recibiendo errores 404 con el htaccess deshabilitado y has verificado las rutas y sabes que los archivos están allí, entonces tus únicas opciones restantes son estas tres...

Opciones...

  1. El servidor posiblemente esté ejecutando un sistema operativo sensible a mayúsculas y minúsculas. Lo que significa que si estás escribiendo una ruta y no usas los caracteres exactos y las mayúsculas/minúsculas correctas, simplemente no funcionará.
  2. Permisos: Puede que tengas los permisos incorrectos en el archivo, carpeta o una carpeta padre. Intenta cambiar los permisos a 755 en los archivos, carpetas y carpetas padre. Si tienes acceso ssh (terminal) a él, entonces ve a tu raíz y ejecuta esto "chmod -R 755 midirectorio" y eso establecerá recursivamente los permisos para todos ellos.
  3. Si todavía tienes un problema después de todo eso, entonces tienes un problema de configuración del servidor (probablemente Apache). Necesitarás hablar con tu proveedor de hosting sobre ello.

Si nada de eso funciona, entonces necesitas un nuevo host.

17 jun 2011 17:44:49
0

Veo que este hilo tiene algunos meses, pero por si acaso nunca lograste que funcionara.

Tuve un problema similar, pero mi problema era que la instalación de WordPress estaba ubicada en un subdirectorio lo que impedía el acceso a URL de carpetas dentro del root (fuera del directorio de instalación de WP), pero solo cuando los permalinks estaban habilitados. Para solucionarlo, copié tanto el index.php como el .htaccess (copiar, no mover) desde el subdirectorio donde está instalado WP y los coloqué ambos en el root public_html (o cualquier subdirectorio que estés intentando acceder fuera del directorio de instalación de WP). El archivo .htaccess ya tiene las condiciones de reescritura para los permalinks:

RewriteEngine On
RewriteBase /subdirectoryinstallfolder/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Habilita los permalinks para refrescar y esto resolvió todos los problemas. Asegúrate de que los permisos para las carpetas root estén configurados correctamente también, ya que esto me ha causado problemas en el pasado.

25 may 2012 21:46:55
2

Cuando copio mis archivos al mismo servidor pero en una subcarpeta diferente, al intentar acceder a mis páginas, index.php funciona bien pero las otras páginas no y me dan un error 404. ¡Perdón por mi mal inglés!

Revisé mi archivo htaccess original:


# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

y puse el nuevo con


# BEGIN WordPress

RewriteEngine On
RewriteBase /subdirectorio
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /subdirectorio/index.php [L]

# END WordPress
13 sept 2012 14:14:06
Comentarios

Hola @lizette. Bienvenida a los foros de WPSE. Quizás quieras revisar cómo funciona el formato aquí.

Pothi Kalimuthu Pothi Kalimuthu
21 sept 2012 05:59:46

Solo ten cuidado de nunca cambiar la estructura de los enlaces permanentes, porque cuando lo haces, WP sobrescribirá cualquier cosa entre #BEGIN WordPress y #END WordPress

clayRay clayRay
13 oct 2020 06:53:26
0

Después de casi arrancarme el cabello editando el htaccess, finalmente encontré una solución que funcionará para WordPress.

Tuve este problema después de instalar un script de CodeIgniter en el mismo directorio raíz donde está instalado WordPress.

Después de probar todos los trucos mencionados aquí, seguía obteniendo errores 404 en las páginas asociadas con el nuevo script.

Noté que el htaccess de WordPress estaba sobrescribiendo el htaccess del script. También noté que otras instalaciones de WordPress en el mismo directorio no tenían este error 404.

Simplemente adopté el htaccess de la nueva instalación de WordPress en el mismo directorio del servidor y lo agregué en la carpeta donde está ubicado mi script. Así es como se ve:

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

Reemplaza subdirectoryname con el nombre de tu directorio y coloca este archivo htaccess dentro de la carpeta donde está ubicado tu script.

Ejemplo: Si el sitio está instalado aquí

public_html/

y la nueva carpeta está ubicada en

`public_html/ejemplo`

copia el htaccess de arriba y guárdalo dentro de la carpeta 'ejemplo' y esto debería funcionar.

10 dic 2015 15:59:38
0

He revisado las respuestas aquí varias veces porque me encontré con un problema similar. Tenía archivos en un subdirectorio que generaban un error 404 cuando intentaba acceder a ellos. Todas las soluciones con .htaccess no funcionaron, como dice Kirsten Douglas, WordPress ya hace ese trabajo.

Mi solución

Encontré este artículo después de revisar el error_log en el servidor. Estaba recibiendo un mensaje sobre un uid incorrecto para los scripts. También noté que el 404 no se generaba por el archivo, sino porque el servidor no podía servir un archivo 500.html, es decir, tenía un error 500.

Resulta que había creado los archivos como root, y necesitaba cambiar la propiedad al dueño de los archivos web.

¡Espero que esto ayude a otros que hayan tenido el mismo problema!

2 oct 2013 10:54:14
0

Deberías poder simplemente agregar una directiva RewriteCond que asegure que las reglas de WordPress sean ignoradas para solicitudes dentro de tu subcarpeta.

RewriteCond %{REQUEST_URI} !^/misubdirectorio
# resto de las reglas de reescritura de WordPress

Sin embargo, mencionas que incluso sin el archivo .htaccess de WordPress estás experimentando el problema. ¿Cuál es el contenido del archivo .htaccess en tu subdirectorio?

16 jun 2011 11:58:45