La subcarpeta protegida con contraseña solicita la contraseña dos veces y luego arroja el error 404

Nov 11 2020

Mi problema:

Mi sitio web consta de algunos archivos en la carpeta raíz, así como una subcarpeta protegida con contraseña, establecida en mi htaccess. Cuando intento acceder a la subcarpeta, me solicita la contraseña, como debería. Sin embargo, me solicita la contraseña dos veces y, después de ingresar la contraseña correcta dos veces, arroja un error 404. Si ingreso una contraseña incorrecta, sigue pidiendo la contraseña.

Después de ingresar la contraseña, de hecho he iniciado sesión, porque si intento acceder a una parte específica de esa subcarpeta (es decir, myurl.com/subfolder/index.php), puedo acceder a ella. Pero, obviamente, el sitio no debería lanzar un error 404 primero.

Lo que he probado:

He visto que otras personas tienen un problema similar, con respecto a las subcarpetas protegidas con contraseña y los errores 404 . Sin embargo, mi problema es ligeramente diferente, ya que en realidad puedo ingresar una contraseña. Por lo tanto, la solución común de agregar ErrorDocument 401 "Authorisation Required"no ha resuelto el problema.

Código:

Este es el htaccess para la carpeta raíz:

#Redirects to the https version of site
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] ## Removes php extensions RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.php [NC,L]

#Allow password for subfolder
ErrorDocument 401 "Authorisation Required"

Y este es el htacess para la subcarpeta:

#Password for subfolder
AuthType Basic
AuthName "Password Protected Area"
AuthUserFile myurl/mysubfolder/.htpasswd
Require valid-user

¡Cualquier ayuda es muy apreciada!

Respuestas

MrWhite Nov 11 2020 at 23:36
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

Si solicita el /subfolder directorio (y una vez que esté autenticado), las directivas mod_rewrite anteriores (en el .htaccessarchivo raíz ) agregarán una .phpextensión, es decir. /subfolder/.phpy dar como resultado un 404.

(No estoy seguro de por qué se le solicita dos veces la contraseña, a menos que esto también esté relacionado con la reescritura anterior, o quizás con la forma en que se activa el 404: ¿tiene un documento 404 personalizado definido? ¿Tiene otras .htaccessdirectivas? )

Necesitas:

  • Incluya una condición adicional en la regla anterior para excluir directorios. Por ejemplo:

    RewriteCond %{REQUEST_FILENAME} !-d
    
  • O, en el /subfolder/.htaccessarchivo, desactive el motor de reescritura, para que las directivas mod_rewrite en el .htaccessarchivo principal no se procesen. Aunque esto puede no ser deseable.

    RewriteEngine Off