Chciałbym, aby wejście do określonej lokalizacji na stronie było możliwe jedynie, gdy zostanie podane hasło. Na nowym serwerze postawiłem Apache, włączyłem mod_rewrite , a mod_auth_basic był włączony automatycznie. Utworzyłem plik .htpasswd z określonym użytkownikiem i hasłem oraz .htaccess z potrzebnymi informacjami w danym folderze zgodnie z wzorem z Wiki.
W pliku _ /etc/apache2/sites-enabled/000-default _ w _ <Directory /var/www/> _ zmieniłem jedynie AllowOverride na All.
W tym momencie pokazuje się okienko do logowania, jednak przy podaniu jakichkolwiek danych wywala zaraz stronę Internal Server Error…
Internal Server Error oznacza w tym wypadku błąd w pliku .htaccess (bądź innym z konfiguracją Apacha). Sprawdź czy ścieżka do .htpasswd jest poprawna, rób zmiany stopniowo i obserwój przy którym fragmencie natrafisz na problem - łatwiej wtedy go wyeliminować.
Plik .htpasswd nie może być w tym samym katalogu to .htaccess, w którym ustawiasz autoryzację HTTP.
Jeśli w pliku .htaccess masz /public_html/domena/ to .htpasswd musi być w /public_html/ , a dyrektywa musi wyglądać AuthUserFile /public_html/.htpasswd (na moich serwerach wymagana jest pełna ścieżka)
Nie może być w tym samym, bo powstaje ślepa pętla - strzeżesz w końcu plików w katalogu, w którym jest plik z hasłami, a do którego nie ma dostępu bez autoryzacji.
Nie wiem czemu jest wymagana ścieżka absolutna - może tak jest w dokumentacji.
Dostęp do pliku .ht jest domyślnie wyłączany w konfiguracji apache, tzn po HTTP nie wyświetlisz ich zawartości.