La subcarpeta protegida con contraseña solicita la contraseña dos veces y luego arroja el error 404
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
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 .htaccess
archivo raíz ) agregarán una .php
extensión, es decir. /subfolder/.php
y 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 .htaccess
directivas? )
Necesitas:
Incluya una condición adicional en la regla anterior para excluir directorios. Por ejemplo:
RewriteCond %{REQUEST_FILENAME} !-d
O, en el
/subfolder/.htaccess
archivo, desactive el motor de reescritura, para que las directivas mod_rewrite en el.htaccess
archivo principal no se procesen. Aunque esto puede no ser deseable.RewriteEngine Off