Saya memiliki .htaccess yang menggunakan otentikasi dasar. Tampaknya jalur ke file .htpasswd tidak terkait dengan file htaccess, melainkan ke konfigurasi server.
Jadi meskipun saya memiliki file .htaccess dan .htpasswd di direktori yang sama, ini tidak berfungsi:
AuthType Basic
AuthName "Private Login"
AuthUserFile .htpasswd
Require valid-user
Namun, ini berfungsi jika saya mengubah AuthUserFile untuk menggunakan jalur absolut:
AuthType Basic
AuthName "Private Login"
AuthUserFile "/home/user/public_html/mydir/.htpasswd"
Require valid-user
Tapi saya lebih suka sesuatu yang lebih mobile karena saya menggunakan ini di banyak situs di area berbeda. Saya telah mencari di web tetapi belum menemukan resolusi apa pun. Apakah mungkin menggunakan jalur relatif atau variabel seperti itu %{DOCUMENT_ROOT}
?
/var/...
) - dan pertanyaannya menanyakan: "bagaimana menggunakan jalur relatif"?Untuk berjaga-jaga jika orang mencari solusi untuk ini:
sumber
req('Host')
, tidak bisakah klien mengelabui nilai ini?1) Perhatikan bahwa dianggap tidak aman untuk memiliki
.htpasswd
file di bawah root server.2) Dokumen mengatakan ini tentang jalur relatif, jadi sepertinya Anda kurang beruntung:
3) Sementara jawaban yang merekomendasikan penggunaan variabel lingkungan berfungsi dengan baik, saya lebih suka meletakkan placeholder di
.htaccess
file, atau memiliki versi berbeda dalam basis kode saya, dan meminta proses penerapan mengatur semuanya (yaitu mengganti placeholder atau mengganti nama / pindahkan file yang sesuai).Pada proyek Java, saya menggunakan Maven untuk melakukan jenis pekerjaan ini, katakanlah, proyek PHP, saya ingin memiliki skrip shell build.sh dan / atau install.sh yang menyesuaikan file yang diterapkan ke lingkungannya. Ini memisahkan basis kode Anda dari spesifikasi lingkungan targetnya (yaitu variabel lingkungan dan parameter konfigurasi). Secara umum, aplikasi harus beradaptasi dengan lingkungan, jika Anda melakukannya dengan cara lain, Anda mungkin mengalami masalah setelah lingkungan juga harus memenuhi aplikasi yang berbeda, atau untuk persyaratan khusus sistem yang sama sekali tidak terkait.
sumber
Anda dapat menempatkan pengaturan Auth Anda ke dalam Lingkungan. Suka:
Auth berfungsi, tetapi saya tidak dapat menjalankan lingkungan saya.
sumber
/Users/...
) - dan pertanyaannya menanyakan: "bagaimana menggunakan jalur relatif"?.htpasswd membutuhkan jalur absolut penuh dari root absolut server.
Silakan dapatkan path absolut lengkap dari file dengan echo
echo $_SERVER['DOCUMENT_ROOT'];
.di sini bekerja skrip auth .htaccess dasar.
Sebelum masuk
Setelah Login
sumber
Jika Anda mencoba menggunakan XAMPP dengan Windows dan ingin menggunakan file .htaccess di server langsung dan juga mengembangkannya di mesin pengembangan XAMPP, berikut ini berfungsi dengan baik!
1) Setelah menginstal XAMPP baru, pastikan Apache diinstal sebagai layanan.
2) Ketika Apache diinstal sebagai layanan, tambahkan variabel lingkungan baru sebagai tanda.
3) Jalankan Apache
4) Buat file .htaccess Anda dengan informasi berikut ...
Untuk menjelaskan skrip di atas berikut adalah beberapa catatan ...
5) Buat file kata sandi Anda (dalam hal ini bernama .htpasswd) dengan informasi berikut ...
Beberapa hal yang perlu diperhatikan ...
sumber
/home...
) - dan pertanyaannya menanyakan: "bagaimana menggunakan jalur relatif"?atau jika Anda mengembangkan di localhost (hanya untuk apache 2.4+):
sumber
Saya tahu ini adalah pertanyaan lama, tetapi saya baru saja mencari hal yang sama dan mungkin ada banyak orang lain yang mencari solusi seluler yang cepat. Inilah yang akhirnya saya temukan:
sumber
/var...
) - dan pertanyaannya menanyakan: "bagaimana menggunakan jalur relatif"?.htaccess
file. Jika Anda menggunakan jalur relatif, ini akan dianggap relatif terhadapServerRoot
.Mari kita ambil contoh.
Aplikasi Anda terletak di / var / www / myApp di beberapa server Linux
.htaccess : /var/www/myApp/.htaccess
htpasswdApp : / var / www / myApp / htpasswdApp . (Anda bebas menggunakan nama apa pun untuk file .htpasswd )
Untuk menggunakan jalur relatif di .htaccess :
Tetapi itu akan mencari file di direktori server_root . Tidak di document_root .
Dalam kasus keluar, ketika aplikasi terletak di / var / www / myApp :
document_root adalah / var / www / myApp
server_root adalah / etc / apache2 // (hanya di contoh kami, karena kami menggunakan server linux )
Anda dapat mendefinisikannya kembali di file konfigurasi apache Anda ( /etc/apache2/apache2.conf ), tapi saya rasa itu ide yang buruk.
Jadi untuk menggunakan jalur file relatif di /var/www/myApp/.htaccess Anda harus menentukan file kata sandi di server_root Anda .
Saya lebih suka melakukannya dengan mengikuti perintah:
Anda bebas menyalin perintah saya, menggunakan tautan keras alih-alih simbol, atau menyalin file ke server_root Anda .
sumber