Tengo un .htaccess que usa autenticación básica. Parece que la ruta al archivo .htpasswd no es relativa al archivo htaccess, sino a la configuración del servidor.
Entonces, aunque tengo los archivos .htaccess y .htpasswd en el mismo directorio, esto no funciona:
AuthType Basic
AuthName "Private Login"
AuthUserFile .htpasswd
Require valid-user
Sin embargo, funciona si cambio AuthUserFile para usar la ruta absoluta:
AuthType Basic
AuthName "Private Login"
AuthUserFile "/home/user/public_html/mydir/.htpasswd"
Require valid-user
Pero preferiría algo más móvil, ya que lo uso en varios sitios en diferentes áreas. He buscado en la web pero no he tenido ninguna resolución. ¿Es posible usar una ruta relativa o variables como %{DOCUMENT_ROOT}
?
/var/...
) - y la pregunta pregunta: "¿cómo usar una ruta relativa"?Por si acaso la gente está buscando una solución para esto:
fuente
req('Host')
¿No puede el cliente engañar a este valor?1) Tenga en cuenta que se considera inseguro tener el
.htpasswd
archivo debajo de la raíz del servidor.2) Los documentos dicen esto sobre las rutas relativas, por lo que parece que no tienes suerte:
3) Si bien las respuestas que recomiendan el uso de variables de entorno funcionan perfectamente bien, preferiría poner un marcador de posición en el
.htaccess
archivo, o tener diferentes versiones en mi base de código, y hacer que el proceso de implementación lo configure todo (es decir, reemplazar los marcadores de posición o cambiar el nombre / mover el archivo apropiado).En proyectos Java, uso Maven para hacer este tipo de trabajo, por ejemplo, proyectos PHP, me gusta tener un script de shell build.sh y / o install.sh que sintonice los archivos implementados en su entorno. Esto desacopla su base de código de los detalles de su entorno de destino (es decir, sus variables de entorno y parámetros de configuración). En general, la aplicación debe adaptarse al entorno; si lo hace al revés, es posible que tenga problemas una vez que el entorno también tenga que atender a diferentes aplicaciones o requisitos específicos del sistema que no guarden relación alguna.
fuente
puede poner su configuración de autenticación en un entorno. Me gusta:
La autenticación está funcionando, pero no pude hacer que mi entorno funcionara realmente.
fuente
/Users/...
) - y la pregunta pregunta: "¿cómo usar una ruta relativa"?.htpasswd requiere una ruta absoluta completa desde la raíz absoluta del servidor.
Obtenga la ruta absoluta completa del archivo por echo
echo $_SERVER['DOCUMENT_ROOT'];
.aquí está funcionando el script básico auth .htaccess.
Antes de iniciar sesión
Iniciar sesión Afetr
fuente
Si está intentando usar XAMPP con Windows y desea usar un archivo .htaccess en un servidor en vivo y también desarrollar en una máquina de desarrollo XAMPP, ¡lo siguiente funciona muy bien!
1) Después de una nueva instalación de XAMPP, asegúrese de que Apache esté instalado como servicio.
2) Cuando Apache se instala como servicio, agregue una nueva variable de entorno como bandera.
3) Inicie Apache
4) Cree su archivo .htaccess con la siguiente información ...
Para explicar el script anterior, aquí hay algunas notas ...
5) Cree su archivo de contraseña (en este caso llamado .htpasswd) con la siguiente información ...
Algunas cosas a tener en cuenta ...
fuente
/home...
) - y la pregunta pregunta: "¿cómo usar una ruta relativa"?o si desarrolla en localhost (solo para apache 2.4+):
fuente
Sé que esta es una pregunta antigua, pero acabo de buscar lo mismo y probablemente hay muchos otros que buscan una solución móvil rápida. Esto es lo que finalmente se me ocurrió:
fuente
/var...
) - y la pregunta pregunta: "¿cómo usar una ruta relativa"?.htaccess
archivo. Si tuviera que usar una ruta relativa, se consideraría relativa aServerRoot
.Pongamos un ejemplo.
Su aplicación se encuentra en / var / www / myApp en algún servidor Linux
.htaccess : /var/www/myApp/.htaccess
htpasswdApp : / var / www / myApp / htpasswdApp . (Puede usar cualquier nombre para el archivo .htpasswd )
Para usar la ruta relativa en .htaccess :
Pero buscará el archivo en el directorio raíz_servidor . No en document_root .
En nuestro caso, cuando la aplicación se encuentra en / var / www / myApp :
document_root es / var / www / myApp
server_root es / etc / apache2 // (solo en nuestro ejemplo, porque usamos el servidor linux )
Puede redefinirlo en su archivo de configuración de apache ( /etc/apache2/apache2.conf ), pero supongo que es una mala idea.
Entonces, para usar la ruta de archivo relativa en su /var/www/myApp/.htaccess , debe definir el archivo de la contraseña en su raíz_servidor .
Prefiero hacerlo siguiendo el comando:
Puede copiar mi comando, utilizar un enlace físico en lugar de un símbolo o copiar un archivo a su raíz_servidor .
fuente