No se puede acceder a subdirectorios que no sean de WordPress, ya que WordPress los anula con un error 404

35

Me refiero a esta pregunta que se hizo anteriormente y que no se respondió adecuadamente: Wordpress anula los subdirectorios reales y también las páginas / códigos no "Wordpress" que obtienen un error 404

Tengo el mismo problema y he probado casi todo lo que encontré en la red. Definitivamente está relacionado con tener enlaces permanentes activados en WordPress. Sin embargo, he puesto un nuevo archivo .htaccess en el subdirectorio con:

RewriteEngine off

Y el problema todavía existe. Incluso si elimino completamente el archivo .htaccess de wordpress, el problema aún existe.

También probé algunas otras soluciones sugeridas, como ErrorDocument 401 "Acceso no autorizado" y ErrorDocument 404 "Acceso no autorizado" y Redirect 301 / mysubdirectory http://www.mydomain.com/mysubdirectory/index.html en varios lugares, todo en vano .

¿Alguien puede ofrecer otra solución? La única forma en que puedo solucionarlo es desactivar los enlaces permanentes, pero necesitamos que estén activados.

Gracias,

Nicole

Nicole
fuente
¿Qué sucede si cambia el nombre de index.php a index.bak en la carpeta raíz de WordPress? ¿Todavía no se puede acceder al directorio?
Horttcore
¿Has intentado redefinir la url base en tu subcarpeta .htaccess (con esta subcarpeta por valor)?
Cédric G

Respuestas:

29

Supongo que coloca WordPress en la raíz de su sitio y los directorios externos también están en la raíz de su sitio. La razón de esto está sucediendo es que los archivos .htaccess seguir un orden jerárquico. Cualesquiera que sean las directivas en el archivo de nivel superior .htaccess fluyen hacia abajo y se aplican a todos los directorios debajo de él.

Si este es el caso, puede hacer una de varias cosas:

  1. Mueva su WordPress a su propio directorio. Consulte: http://codex.wordpress.org/Moving_WordPress Si mueve WordPress a su propio directorio para que esté en el mismo nivel en la jerarquía de directorios de su servidor que los otros directorios, las reglas de reescritura de WordPress no pueden afectar a los otros directorios.

  2. RewriteEngine Off - esto normalmente trabajar. Si no funciona Compruebe que no se está utilizando una configuración de DNS comodín. Si tiene un registro de nombre de host comodín * apuntando a su servidor web en su configuración de DNS, puede causar estragos con .htaccess y subdominios.

  3. En el archivo .htaccess en la raíz de su sitio, agregue lo siguiente SOBRE las directivas de WordPress .htaccess:

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

Uno de estos debería funcionar para usted.

Elpie
fuente
18

Esto ha funcionado para mí en el pasado por una situación similar:

Pon esto encima de .htaccess

ErrorDocument 401 default
mike23
fuente
2
¡Gracias! He intentado muchas cosas, pero esta es la única solución que funcionó para mi caso: subdirectorio protegido con contraseña
Rado
2
También funcionó para mí, ¿alguna explicación de lo que hace y por qué funciona?
Asaf
Esto funciona para mí ... no usando WordPress sino OpenCart y teniendo el mismo problema. Una explicación sería realmente útil.
billynoah
4

cuando copio mis archivos en el mismo servidor pero con una carpeta de subdirectorio diferente, así que cuando intenté acceder a mis páginas, index.php funciona bien pero las otras páginas no lo están y me da un error 404. ¡¡Perdón por mi mal ingles!!

Solo miro en mi htaccess el original:

# COMIENZA WordPress

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

# FIN WordPress

y poner el nuevo con

# COMIENZA WordPress

RewriteEngine On
RewriteBase / subdirectoryfolder
RewriteCond% {REQUEST_FILENAME}! -F
RewriteCond% {REQUEST_FILENAME}! -D
RewriteRule. /subdirectoryfolder/index.php [L]

# FIN WordPress
lizette
fuente
Hola @lizette Bienvenido a los foros de WPSE. Es posible que desee ver cómo funciona el formateo aquí.
Pothi Kalimuthu
4

Veo que este hilo tiene unos meses, ¡pero en caso de que nunca lo hayas hecho funcionar!

Tuve un problema similar, pero mi problema fue que la instalación de WordPress estaba ubicada en el subdirectorio que impedía el acceso URL a las carpetas dentro de la raíz (fuera del directorio de instalación de WP), pero solo cuando los enlaces permanentes estaban habilitados. Para resolver esto, copié index.php y .htaccess (copiar no mover) del subdirectorio donde se encuentra la instalación de WP y los coloqué en la raíz public_html (o cualquier subdirectorio al que intente acceder fuera de la instalación de WP) directorio). El archivo .htaccess ya tiene las condiciones de reescritura para enlaces permanentes:

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

Habilitar enlaces permanentes para actualizar y resolvió todos los problemas. Asegúrese de que sus permisos para las carpetas raíz también estén configurados correctamente, ya que esto me ha causado problemas en el pasado.

Kirsten Douglas
fuente
3

Si todavía obtiene 404's con el acceso htaccess deshabilitado y ha verificado las rutas y sabe que los archivos están allí, entonces sus ú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á escribiendo una ruta y no está usando los caracteres exactos y la carcasa simplemente no funcionará.
  2. Permisos: puede tener permisos incorrectos en el archivo o carpeta o en una carpeta principal. Intente cambiar los permisos a 755 en los archivos, carpetas y carpetas principales. Si tiene acceso ssh (terminal), vaya a su raíz y ejecute este "chmod -R 755 mydir" y eso establecerá recursivamente los permisos para todos ellos.
  3. Si todavía tiene un problema después de todo eso, entonces tiene un problema de configuración del servidor (Apache probablemente). Deberá hablar con su proveedor de alojamiento al respecto.

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

Patricio
fuente
2

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 codeiginter en el mismo directorio raíz que está instalado WordPress.

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

Noté que el htaccess de WordPress estaba anulando 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é a la carpeta donde se encuentra 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>

Reemplace subdirectoryname con el nombre de su directorio y coloque este archivo htaccess dentro de la carpeta donde se encuentra su script.

Ejemplo: si el sitio está instalado aquí

public_html/

y la nueva carpeta se encuentra

`public_html/example`

copie el htaccess anterior y guárdelo dentro de la carpeta 'ejemplo' y esto debería funcionar.

NJENGAH
fuente
1

He visto las respuestas aquí varias veces, ya que me he encontrado con un problema similar. Tengo archivos en un subdirectorio que arrojarían un error 404 cuando intenté acceder a ellos. Todas las cosas de .htaccess no pudieron rectificarlo, como dice Kirsten Douglas, Wordpress ya hace el trabajo.

Mi solución

Encontré este artículo después de verificar el error_log en el servidor. Estaba recibiendo un mensaje sobre uid incorrecto para los scripts. También noté que el 404 no se estaba lanzando debido al archivo, sino porque el servidor no podía entregar un archivo 500.html, es decir, tuve un error 500.

Resulta que había creado archivos como root y necesitaba cambiar la propiedad al propietario de los archivos web.

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

Dan
fuente
0

Debería poder agregar una RewriteConddirectiva que se asegurará de que las reglas de WordPress se ignoren para las solicitudes dentro de su subcarpeta.

RewriteCond %{REQUEST_URI} !^/mysubdirectory
# rest of WordPress rewrite rules

Sin embargo, ¿dices que incluso sin WordPress .htaccessestás experimentando el problema? ¿Cuál es el contenido de su subdirectorio .htaccess?

TheDeadMedic
fuente