File konfigurasi Apache .htaccess adalah poin yang sulit dan penting. Saya tidak pernah menetap untuk mempelajarinya dengan cermat. Saya selalu berpikir bahwa metode Redirect adalah milik mod_rewrite, dan saya bingung saat menggunakannya. Saya menemukan tutorial yang sangat bagus hari ini, dan saat mempelajarinya, saya menuliskan beberapa pemikiran.
diperbarui: Terus perbaiki beberapa masalah kecil
Sumber: Panduan komprehensif untuk .htaccess
Referensi resmi: Referensi Cepat Petunjuk
1 Pendahuluan Pendahuluan
Nama file.htaccess atribut 644 (RW-R–R–)
htaccess akan mempengaruhi semua subdirektori di direktori tempatnya berada. Perhatikan bahwa sebagian besar konten harus disimpan dalam satu baris dan jangan digabungkan. Jika tidak, kesalahan akan terjadi.
2 Dokumen Kesalahan Dokumen Kesalahan
Dokumen resmi: Petunjuk ErrorDocument
Dokumen kode ErrorDocument
contoh
Dokumen Kesalahan 400 /errors/badrequest.html
ErrorDocument 404 http://situsAnda/errors/notfound.html
ErrorDocument 401 “Diperlukan Otorisasi”
(Perhatikan bahwa tanda kutip ganda apa pun yang muncul kemudian di konten harus di-escape sebagai ")
Kode status HTTP umum
Permintaan Klien yang Berhasil
200 oke
201 Dibuat
202 Diterima
203 Informasi Non-Resmi
204 Tidak Ada Konten
205 Atur Ulang Konten
206 Isi Sebagian
Permintaan Klien Dialihkan
300 Pilihan Ganda
301 Dipindahkan Secara Permanen
302 Pindah Sementara
303 Lihat Lainnya
304 Tidak Dimodifikasi
305 Gunakan Proksi
Kesalahan Permintaan Klien
400 Permintaan Buruk
401 Otorisasi Diperlukan
402 Pembayaran Diperlukan (belum digunakan)
403 Dilarang
404 Tidak Ditemukan
Metode 405 Tidak Diizinkan
406 Tidak Dapat Diterima (pengkodean)
407 Diperlukan Otentikasi Proksi
408 Permintaan Waktu Habis
409 Permintaan yang Bertentangan
410 Hilang
411 Panjang Konten Diperlukan
412 Prasyarat Gagal
413 Permintaan Entitas Terlalu Panjang
414 Permintaan URI Terlalu Panjang
415 Jenis Media yang Tidak Didukung
Kesalahan Server
500 Kesalahan Server Internal
501 Tidak Diimplementasikan
502 Gerbang Buruk
503 Layanan Tidak Tersedia
Batas Waktu Gerbang 504
Versi HTTP 505 Tidak Didukung
3 Perlindungan Kata Sandi Perlindungan Kata Sandi
Dokumen resmi: Otentikasi, Otorisasi dan Kontrol Akses
Asumsikan file kata sandinya adalah .htpasswd
AuthUserFile /usr/local/safedir/.htpasswd (nama path lengkap harus digunakan di sini)
NamaOtoritas Masukkan Kata Sandi
Tipe Auth Dasar
Dua metode verifikasi umum:
Membutuhkan penggunawindix
(Hanya pengguna windix yang diperbolehkan login)
Membutuhkan pengguna yang valid
(Semua pengguna sah dapat masuk)
Tip: Cara membuat file kata sandi menggunakan perintah htpasswd (disertakan dengan Apache)
File kata sandi perlu dibuat untuk generasi pertama
htpasswd -c .htpasswd pengguna1
Tambahkan pengguna baru nanti
htpasswd .htpasswd pengguna2
4 Mengaktifkan SSI Via htaccess Izinkan fungsi SSI (Termasuk Sisi Server) melalui htaccess
TambahkanJenis teks/html .shtml
.shtml yang diurai server AddHandler
Indeks Opsi Termasuk FollowSymLinks
Indeks Direktori indeks.shtml indeks.html
5 Memblokir pengguna berdasarkan IP Memblokir akses pengguna berdasarkan IP
perintah izinkan, tolak
tolak dari 123.45.6.7
tolak dari 12.34.5. (seluruh alamat kelas C)
izinkan dari semua
6 Memblokir pengguna/situs berdasarkan perujuk Memblokir pengguna/situs berdasarkan perujuk
Membutuhkan modul mod_rewrite
Contoh 1. Memblokir satu perujuk: badsite.com
Mesin Tulis Ulang menyala
# Opsi +IkutiSymlinks
RewriteCond %{HTTP_REFERER} situs buruk.com [NC]
Aturan Penulisan Ulang .* - [F]
Contoh 2. Blokir beberapa perujuk: badsite1.com, badsite2.com
Mesin Tulis Ulang menyala
# Opsi +IkutiSymlinks
RewriteCond %{HTTP_REFERER} badsite1.com [NC,OR]
RewriteCond %{HTTP_REFERER} badsite2.com
Aturan Penulisan Ulang .* - [F]
[NC] - Tidak peka huruf besar-kecil
[F] - 403 Dilarang
Perhatikan bahwa pernyataan "Options +FollowSymlinks" dikomentari dalam kode di atas. Jika server tidak menyetel FollowSymLinks di bagian httpd.conf, Anda perlu menambahkan kalimat ini, jika tidak, Anda akan mendapatkan kesalahan "500 Internal Server error".
7 Memblokir bot jahat dan ripper situs (alias browser offline) Memblokir bot jahat dan browser offline
Memerlukan modul mod_rewrite
Perayap buruk? Misalnya, beberapa perayap yang mengambil alamat email spam dan perayap yang tidak mematuhi robots.txt (seperti baidu?)
Mereka dapat dinilai berdasarkan HTTP_USER_AGENT
(Tetapi ada lebih banyak lagi yang tidak tahu malu seperti "Zhongsou zhongsou.com" yang menetapkan agen mereka sendiri ke "Mozilla/4.0 (kompatibel; MSIE 5.5; Windows NT 5.0)". Mereka terlalu nakal dan tidak bisa berbuat apa-apa.)
Tulis UlangEngineOn
Penulisan UlangCond %{HTTP_USER_AGENT} ^BlackWidow [ATAU]
RewriteCond %{HTTP_USER_AGENT} ^Bot mailto:[email protected] [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^ChinaClaw [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^Kusto [ATAU]
Tulis UlangCond %{HTTP_USER_AGENT} ^DISCo [ATAU]
RewriteCond %{HTTP_USER_AGENT} ^Unduh Setan [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^eCatch [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^EirGrabber [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^EmailSiphon [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^EmailWolf [ATAU]
RewriteCond %{HTTP_USER_AGENT} ^Ekspres WebPictures [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^ExtractorPro [ATAU]
Tulis UlangCond %{HTTP_USER_AGENT} ^EyeNetIE [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^FlashGet [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^Dapatkan Kanan [ATAU]
Tulis UlangCond %{HTTP_USER_AGENT} ^DapatkanWeb [ATAU]
Tulis UlangCond %{HTTP_USER_AGENT} ^Ayo!Zilla [ATAU]
RewriteCond %{HTTP_USER_AGENT} ^Lanjutkan-Paham [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^GrabNet [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^Grafula [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^HMLihat [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} HTTrack [NC,OR]
Penulisan UlangCond %{HTTP_USER_AGENT} ^Gambar Stripper [ATAU]
RewriteCond %{HTTP_USER_AGENT} ^Gambar Pengisap [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} Indy Library [NC,OR]
Penulisan UlangCond %{HTTP_USER_AGENT} ^InterGET [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^Internet Ninja [ATAU]
Tulis UlangCond %{HTTP_USER_AGENT} ^JetCar [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^JOC Web Spider [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^larbin [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^LeechFTP [ATAU]
RewriteCond %{HTTP_USER_AGENT} ^Pengunduh Massal [ATAU]
RewriteCond %{HTTP_USER_AGENT} ^MIDown alat [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^Tuan PiX [ATAU]
Tulis UlangCond %{HTTP_USER_AGENT} ^Navroad [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^Situs Dekat [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^NetAnts [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^NetSpider [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^Net Vampire [ATAU]
Tulis UlangCond %{HTTP_USER_AGENT} ^NetZIP [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^Gurita [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^Offline Explorer [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^Offline Navigator [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^PageGrabber [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^Papa Foto [ATAU]
Tulis UlangCond %{HTTP_USER_AGENT} ^pavuk [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^pcBrowser [ATAU]
RewriteCond %{HTTP_USER_AGENT} ^Unduh Nyata [ATAU]
Tulis UlangCond %{HTTP_USER_AGENT} ^Dapatkan Kembali [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^SiteSnagger [ATAU]
RewriteCond %{HTTP_USER_AGENT} ^Unduh Cerdas [ATAU]
Tulis UlangCond %{HTTP_USER_AGENT} ^SuperBot [ATAU]
Tulis UlangCond %{HTTP_USER_AGENT} ^SuperHTTP [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^Surfbot [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^tAkeOut [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^Teleportasi Pro [ATAU]
Tulis UlangCond %{HTTP_USER_AGENT} ^VoidEYE [ATAU]
RewriteCond %{HTTP_USER_AGENT} ^Web Gambar Kolektor [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^Web Pengisap [ATAU]
Tulis UlangCond %{HTTP_USER_AGENT} ^WebOtomatis [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^WebCopier [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^WebFetch [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^WebGo IS [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^WebLeacher [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^WebReaper [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^WebSauger [ATAU]
RewriteCond %{HTTP_USER_AGENT} ^Situs Web eXtractor [ATAU]
RewriteCond %{HTTP_USER_AGENT} ^Situs Web Pencarian [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^WebStripper [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^WebWhacker [ATAU]
Tulis UlangCond %{HTTP_USER_AGENT} ^WebZIP [ATAU]
Tulis UlangCond %{HTTP_USER_AGENT} ^Wdapatkan [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^Janda [ATAU]
Tulis UlangCond %{HTTP_USER_AGENT} ^WWWOFFLE [ATAU]
Penulisan UlangCond %{HTTP_USER_AGENT} ^Xaldon WebSpider [ATAU]
Tulis UlangCond %{HTTP_USER_AGENT} ^Zeus
Aturan Penulisan Ulang ^.* - [F,L]
[F] - 403 Dilarang
[L] - ?
8 Ubah halaman direktori default Anda Ubah halaman direktori default Anda
DirectoryIndex indeks.html indeks.php indeks.cgi indeks.pl
9 Pengalihan
File tunggal
Alihkan /old_dir/old_file.html http://situsAnda.com/new_dir/new_file.html
seluruh direktori
Alihkan /old_dir http://situsanda.com/new_dir
Efek: Sama seperti memindahkan direktori
http://situsAnda.com/old_dir -> http://situsAnda.com/new_dir
http://situsAnda.com/old_dir/dir1/test.html -> http://situsAnda.com/new_dir/dir1/test.html
Tip: Solusi untuk masalah Redirect tidak dapat mengarahkan ulang saat menggunakan direktori pengguna
Saat Anda menggunakan direktori pengguna default Apache, seperti http://mysite.com/~windix, dan saat Anda ingin mengalihkan ke http://mysite.com/~windix/jump, Anda akan menemukan bahwa Redirect berikut tidak bekerja:
Alihkan / lompat http://www.google.com
Cara yang benar adalah dengan mengubahnya menjadi
Alihkan /~windix/jump http://www.google.com
(sumber: .htaccess Redirect di “Situs” tidak mengalihkan: mengapa?)
10 Cegah tampilan file .htaccess Cegah tampilan file .htaccess
perintah izinkan, tolak
menyangkal dari semua
11 Menambahkan Tipe MIME Menambahkan tipe MIME
Aplikasi AddType/x-shockwave-flash swf
Tip: Mengatur jenis ke application/octet-stream akan meminta Anda untuk mengunduh
12 Mencegah hot linking pada gambar dan jenis file lainnya Anti-hot linking
Membutuhkan modul mod_rewrite
Mesin Tulis Ulang menyala
Tulis UlangCond %{HTTP_REFERER} !^$
Penulisan UlangCond %{HTTP_REFERER} !^http://(www/.)?domainsaya.com/.*$ [NC]
Aturan Penulisan Ulang .(gif|jpg|js|css)$ - [F]
Analisa:
Jika HTTP_REFERER tidak kosong (sumbernya adalah situs lain, tidak terhubung langsung) dan jika HTTP_REFERER tidak dimulai dengan (www.)domainku.com (abaikan huruf besar/kecil [NC]) (sumbernya bukan situs ini)
Memberikan 403 Forbidden error [F] untuk semua file yang diakhiri dengan .gif/.jpg/.js/.css
Anda juga dapat menentukan respons, seperti contoh berikut memperlihatkan gambar pengganti
Aturan Penulisan Ulang .(gif|jpg)$ [R,L]
[R] - Pengalihan
[K] - Tautan
13 Mencegah Daftar Direktori Mencegah daftar direktori ditampilkan
IndeksAbaikan*
IndeksAbaikan *.jpg *.gif
Kiat:
Izinkan tampilan daftar direktori: Opsi + Indeks
Nonaktifkan tampilan daftar pendeta: Opsi -Indeks
Tampilkan informasi cepat: file header HEADER, file footer README