Saya perlu melakukan operasi yang agak aneh.
Pertama, saya menjalankan di Debian, apache2 (yang 'berjalan' sebagai data pengguna www)
Jadi, saya punya file teks sederhana dengan .txt ot .ini, atau ekstensi apa pun, tidak masalah.
File-file ini terletak di subfolder dengan struktur seperti ini:
www.example.com/folder1/car/foobar.txt www.example.com/folder1/cycle/foobar.txt www.example.com/folder1/fish/foobar.txt www.example.com/folder1/fruit/foobar .txt
oleh karena itu, nama file selalu sama, juga untuk 'hierarki', cukup ganti nama folder: /folder-name-static/folder-name-dinamyc/file-name-static.txt
Yang harus saya lakukan adalah (saya pikir) relatif sederhana: Saya harus dapat membaca file itu dengan program di server (python, php misalnya), tetapi jika saya mencoba untuk mengambil konten file dengan broswer (menggali url www. example.com/folder1/car/foobar.txt, atau via cUrl, dll.) Saya harus mendapatkan kesalahan terlarang, atau apa pun, tetapi tidak mengakses file .
Akan lebih baik bahwa bahkan mengakses file-file itu melalui FTP adalah 'tersembunyi', atau lagi pula tidak dapat diunduh (setidaknya yang saya gunakan dengan ftp root dan data pengguna)
Bagaimana saya bisa melakukannya?
Saya menemukan ini online, dimasukkan ke dalam file .htaccess:
<Files File.txt>
Order allow, deny
Deny from all
</ Files>
Tampaknya berfungsi, tetapi hanya jika file ada di root web (www.example.com / myfile.txt), dan tidak dalam subfolder. Selain itu, folder di tingkat kedua (www.example.com/folder1/ fruit /foobar.txt) akan dibuat secara dinamis .. Saya ingin menghindari keharusan mengubah file .htaccess dari waktu ke waktu.
Dimungkinkan untuk membuat aturan, sesuatu seperti itu, yang berlaku untuk semua file dengan nama yang diberikan, yang ada di * www.example.com / folder-name-static / * folder-name-dinamyc / *** file-name -static.txt *, di mana bagian-bagian itu selalu sama , hanya ** yang satu perubahan ?
EDIT :
Seperti yang dikatakan Dave Drager, saya bisa mengamplifikasi ini dengan menyimpan file-file itu di luar direktori yang dapat diakses web. Tetapi direktori tersebut akan berisi file orang lain juga, gambar, dan hal-hal yang digunakan oleh pengguna saya, jadi saya hanya mencoba untuk tidak memiliki sistem folder duplikat, seperti:
/var/www/vhosts/example.com/httpdocs/folder1/car/[other folders and files here]
/var/www/vhosts/example.com/httpdocs/folder1/cycle/[other folders and files here]
/var/www/vhosts/example.com/httpdocs/folder1/fish/[other folders and files here]
//and, then for the 'secrets' files:
/folder1/data/car/foobar.txt
/folder1/data/cycle/foobar.txt
/folder1/data/fish/foobar.txt
sumber
Ya, ini semua mungkin. Namun, jika Anda memiliki program di server yang perlu mengakses file teks, mereka harus berada di luar root web. Sebagai contoh, jika file web Anda di ~ / public_html /, Anda harus menyimpannya di ~ / data. Tidak ada alasan untuk menempatkan mereka di folder html publik.
Selain menghapusnya dari folder web, pastikan izin unix diatur dengan benar. Pengguna skrip harus memiliki akses baca (tulis?) Tetapi orang lain tidak harus memiliki akses ini.
Jika Anda DO perlu memiliki file-file ini di folder yang dapat diakses web, ada beberapa cara untuk melakukan apa yang Anda minta melalui mod_rewrite. Lihat situs follow untuk banyak contoh, salah satunya harus sesuai dengan tagihan.
http://perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/
sumber
Mengapa tidak menggunakan izin file unix standar untuk menolak akses ke file?
Ada penjelasan yang layak di wikipedia tentang izin file unix
sumber
Letakkan file .htaccess di subdirektori dan dalam pernyataan, atur AllowOverride All
sumber
Anda dapat menggunakan Linux ACL .
sumber
Setelah membaca Anda semua, saya perhatikan bahwa file .htaccess dapat menjadi jalan bagi saya: hanya memengaruhi file-file di folder di mana ia berada.
Tapi folder saya dibuat secara dinamis. Saya tidak berpikir bahwa menyalin file .htaccess atau membuatnya kembali setiap kali saya membuat folder baru adalah cara yang dapat diandalkan.
Seperti yang Dave katakan, cara logis harus menyimpan file teks konfigurasi di luar folder yang dapat diakses web.
Tetapi di setiap folder saya harus menyimpan file lain, gambar untuk contoh, yang harus dapat diakses web ... dan saya masih tidak berpikir bahwa mereplikasi struktur folder, masuk dan keluar web-root direktori, adalah cara yang dapat diandalkan juga . Oleh karena itu, saya perlu mengubah bahkan konfigurasi apache untuk memasukkan folder config di jalur yang diizinkan php .. toh ini seharusnya tidak menjadi masalah.
Jadi, jika saya tidak memiliki yang lebih baik , saya harus memilih yang kurang buruk .
Saya akan menggunakan beberapa solusi file .htaccess, untuk saat ini, berharap tidak memiliki penyesalan di masa depan.
Setiap solusi lainnya dihargai.
sumber
Dari bagian dokumentasi Pemesanan :
Jadi yang berikut ini salah:
Berikut ini (lebih) benar
sumber