Mam .htaccess, który wykorzystuje uwierzytelnianie podstawowe. Wygląda na to, że ścieżka do pliku .htpasswd nie jest względna do pliku htaccess, ale zamiast tego do konfiguracji serwera.
Więc mimo że mam pliki .htaccess i .htpasswd w tym samym katalogu, to nie działa:
AuthType Basic
AuthName "Private Login"
AuthUserFile .htpasswd
Require valid-user
Jednak zadziała, jeśli zmienię AuthUserFile, aby użyć ścieżki bezwzględnej:
AuthType Basic
AuthName "Private Login"
AuthUserFile "/home/user/public_html/mydir/.htpasswd"
Require valid-user
Ale wolałbym coś bardziej mobilnego, ponieważ używam tego w wielu witrynach w różnych obszarach. Przeszukałem sieć, ale nie znalazłem żadnego rozwiązania. Czy można użyć ścieżki względnej lub takich zmiennych %{DOCUMENT_ROOT}
?
/var/...
) - a pytanie brzmi: „jak używać ścieżki względnej”?Na wszelki wypadek ludzie szukają rozwiązania tego:
źródło
req('Host')
, czy klient nie może oszukać tej wartości?1) Zauważ, że umieszczanie
.htpasswd
pliku poniżej katalogu głównego serwera jest uważane za niebezpieczne .2) docs powiedzieć o względnych ścieżek, tak to wygląda masz pecha:
3) Chociaż odpowiedzi zalecające użycie zmiennych środowiskowych działają doskonale, wolałbym umieścić symbol zastępczy w
.htaccess
pliku lub mieć różne wersje w mojej bazie kodu i pozwolić procesowi wdrażania skonfigurować to wszystko (tj. Zastąpić symbole zastępcze lub zmienić nazwę / przenieś odpowiedni plik).W projektach Java używam Mavena do wykonywania tego typu pracy, na przykład w projektach PHP, lubię mieć skrypt powłoki build.sh i / lub install.sh, który dostosowuje wdrożone pliki do ich środowiska. To oddziela twój kod źródłowy od specyfiki środowiska docelowego (tj. Jego zmiennych środowiskowych i parametrów konfiguracyjnych). Ogólnie rzecz biorąc, aplikacja powinna dostosowywać się do środowiska, jeśli zrobisz to na odwrót, możesz napotkać problemy, gdy środowisko będzie również musiało obsługiwać różne aplikacje lub całkowicie niepowiązane wymagania specyficzne dla systemu.
źródło
możesz umieścić swoje ustawienia uwierzytelniania w środowisku. Lubić:
Autoryzacja działa, ale nie mogłem tak naprawdę uruchomić mojego środowiska.
źródło
/Users/...
) - a pytanie brzmi: „jak używać ścieżki względnej”?.htpasswd wymaga pełnej ścieżki bezwzględnej od bezwzględnego katalogu głównego serwera.
Uzyskaj pełną bezwzględną ścieżkę do pliku przez echo
echo $_SERVER['DOCUMENT_ROOT'];
.tutaj działa podstawowy skrypt auth .htaccess.
Przed zalogowaniem
Po zalogowaniu
źródło
Jeśli próbujesz używać XAMPP w systemie Windows i chcesz użyć pliku .htaccess na serwerze rzeczywistym, a także rozwijać się na maszynie programistycznej XAMPP, poniższe działa świetnie!
1) Po nowej instalacji XAMPP upewnij się, że Apache jest zainstalowany jako usługa.
2) Gdy Apache jest instalowany jako usługa, dodaj nową zmienną środowiskową jako flagę.
3) Uruchom Apache
4) Utwórz plik .htaccess z następującymi informacjami ...
Aby wyjaśnić powyższy skrypt, oto kilka uwag ...
5) Utwórz plik z hasłami (w tym przypadku o nazwie .htpasswd) zawierający następujące informacje ...
Kilka uwag ...
źródło
/home...
) - a pytanie brzmi: „jak używać ścieżki względnej”?lub jeśli tworzysz na localhost (tylko dla Apache 2.4+):
źródło
Wiem, że to stare pytanie, ale właśnie szukałem tego samego i prawdopodobnie wielu innych szuka szybkiego, mobilnego rozwiązania. Oto, co w końcu wymyśliłem:
źródło
/var...
) - a pytanie brzmi: „jak używać ścieżki względnej”?.htaccess
pliku. Jeśli użyjesz ścieżki względnej, zostanie ona uznana za względną w stosunku doServerRoot
.Weźmy przykład.
Twoja aplikacja znajduje się w / var / www / myApp na jakimś serwerze Linux
.htaccess : /var/www/myApp/.htaccess
htpasswdApp : / var / www / myApp / htpasswdApp . (Możesz używać dowolnej nazwy dla .htpasswd pliku )
Aby użyć ścieżki względnej w .htaccess :
Ale będzie szukać pliku w katalogu server_root . Nie w document_root .
W przypadku, gdy aplikacja znajduje się pod adresem / var / www / myApp :
katalog_główny_dokumentu to / var / www / myApp
server_root to / etc / apache2 // (tylko w naszym przykładzie, ponieważ używamy serwera linux )
Możesz go przedefiniować w swoim pliku konfiguracyjnym Apache ( /etc/apache2/apache2.conf ), ale myślę, że to zły pomysł.
Aby więc użyć względnej ścieżki pliku w swoim /var/www/myApp/.htaccess , należy zdefiniować plik hasła w swoim server_root .
Wolę to zrobić, wykonując polecenie:
Możesz skopiować moje polecenie, użyć twardego łącza zamiast symbolu lub skopiować plik do swojego server_root .
źródło