Bagaimana cara menghapus proteksi password .htaccess dari subdirektori

97

Saya memiliki kata sandi yang melindungi seluruh situs web saya menggunakan .htaccesstetapi saya ingin mengekspos salah satu sub direktori sehingga dapat dilihat tanpa kata sandi.

Bagaimana cara menonaktifkan perlindungan kata sandi htaccess untuk sub direktori? Secara khusus apa itu .htaccesssintaks.

Ini .htaccessfile saya yang ditempatkan di root ftp saya.

AuthName "Administrasi Situs"
AuthUserFile /dir/.htpasswd
AuthGroupFile / dev / null

AuthName aman
AuthType Basic
membutuhkan nama pengguna pengguna1
order allow, deny
bolehkan dari semua
justinl
sumber
4
Ini mungkin lebih cocok untuk default server.
Beggs

Jawaban:

154

Anda perlu membuat .htaccessfile baru di direktori yang diperlukan dan menyertakan Satisfy anydirektif di dalamnya seperti itu, hingga Apache 2.3:

# allows any user to see this directory
Satisfy Any

Sintaksnya diubah di Apache 2.4, ini memiliki efek yang sama:

Require all granted
RageZ
sumber
7
Saya hanya bisa mendapatkan ini untuk bekerja dengan Allow from alltidak Satisfy Any.
Jess Telford
@JessTelford menggunakan cuplikan kode dengan baik. @RageZ +1 untuk jawaban yang berhasil untuk saya. Bisakah Anda mengedit jawabannya menjadi sangat sederhana dan mempostingnya menggunakan metode potongan kode. Jika tidak, seseorang harus berpikirthanks
Jesse Burcsik
2
@JessTelford Satisfy Anybekerja dan salah dieja sebagai Satisify Any. Mungkin itulah alasan mengapa itu tidak berhasil untuk Anda.
BlueBird
1
Saya perlu memiliki satu file yang tidak terlindungi (yang lainnya terlindungi), dibuat sama di bagian <Files>
Nick
Ini tidak berhasil untuk saya - Saya masih mendapatkan modal kata sandi yang meminta nama pengguna dan sandi .. Menggunakan firefox & windows 7 ... Ada yang tahu?
ItsMeDom
36

Menambahkan jawaban RageZ, saya menggunakan ini di Server Directive:

<Directory /var/www/protected/>
     AuthType Basic
     AuthName "Production"
     AuthUserFile /path/to/.htpasswd
     Require valid-user
</Directory>

<Directory /var/www/protected/unprotected>
     Satisfy Any
</Directory>

Hebat. Terima kasih RageZ!

atonyc
sumber
9

Cukup buat yang baru .htaccessdi subdirektori yang diinginkan dengan petunjuk ini:

Allow from all

Anda dapat membatasi ke IP Anda hanya dengan:

Allow from x.x.x.x

Lihat: http://httpd.apache.org/docs/current/mod/mod_access_compat.html

Paul Rad
sumber
Ini berhasil ketika saya meletakkan "Wajibkan semua diberikan" alih-alih "Izinkan dari semua" dan "Puaskan Semua". Keduanya tidak berhasil untuk saya. Saya menggunakan Apache 2.4.
endo64
1

Anda perlu menambahkan file .htaccess lain ke subdirektori yang menggantikan otentikasi. .htaccess mengalir ke atas, yaitu akan terlihat di folder saat ini, lalu naik satu level dan seterusnya.

Fenton
sumber
4
apakah Anda mengetahui sintaksnya? Saya mengerti konsepnya tapi tidak tahu bagaimana mengimplementasikannya.
justinl
Jika Anda ingin menghapus file saat ini dan tidak menggunakan izin, cukup ganti dengan file kosong bernama .htaccess
Gaʀʀʏ
3
@ Garry bukan itu cara kerja berjenjang .htaccess, Anda harus mengganti opsi secara eksplisit.
William Denniss
1

Berikut adalah cara untuk mengizinkan subdirektori "foo" melalui otentikasi dasar dari file .htaccess utama di situs:

AuthType Basic
AuthName "Password Required"
AuthUserFile /dir/.htpasswd
Require expr %{REQUEST_URI} =~ m#^/foo/#
Require valid-user

Catatan: Ini berfungsi di Apache 2.4. Saya belum mengkonfirmasi untuk versi sebelumnya.

PeterA
sumber
0

Jika Anda ingin mencegah direktori tertentu dari otentikasi htaccess maka Anda dapat menggunakan kode berikut di file htaccess Anda di atas.

AuthType Basic AuthName "Enter Pass" AuthUserFile /home/public_html/.htpasswd /*PATH TO YOUR .htpasswd FILE*/ Require valid-user SetEnvIf Request_URI "(/DIRECTORY_NAME/)$" allow Order allow,deny Allow from env=allow

Juga Jika Anda ingin mencegah beberapa direktori, tambahkan

SetEnvIf Request_URI "(/DIRECTORY_NAME/)$" allow

sebanyak mungkin direktori, yang ingin Anda hapus dari pencegahan htaccess.

Mohd Jafar
sumber