Mod_rewrite Pengenalan dan Lembaran Menipu – Rujukan Pantas

Pendedahan: Sokongan anda membantu mengekalkan laman web ini! Kami memperoleh bayaran rujukan untuk beberapa perkhidmatan yang kami cadangkan di halaman ini.


mod_rewrite adalah sebahagian daripada perisian pelayan web Apache yang berjalan di komputer host web anda. Ini membolehkan URL diubah secara dinamik, atau “ditulis semula.”

Anda akan melihat mod_rewrite beraksi jika anda menggunakan WordPress dengan permalinks “cantik” dihidupkan. Secara lalai, semua halaman WordPress dimuat menggunakan URL yang mengandungi nombor ID, dan mungkin pemboleh ubah lain yang memberitahu WordPress apa yang hendak dimuat. Tetapi apabila permalink yang cantik diaktifkan, peraturan mod_rewrite mengubah pemboleh ubah jelek itu menjadi kata-kata. Kami kadang-kadang memanggil URL yang dihasilkan “bersih.”

Menulis semula dengan mod_rewrite pada dasarnya adalah proses menterjemahkan URL dari yang kotor ke yang bersih dengan cepat. Pelawat tidak pernah melihat perubahan URL di bar alamat, kerana pemprosesan dikendalikan oleh Apache sebelum apa-apa dihantar ke penyemak imbas pelawat.

Sangat mungkin menjalankan laman web tanpa menggunakan mod_rewrite, atau membersihkan URL. Tetapi inilah sebab mengapa kebanyakan orang menggunakannya:

  • Untuk menjadikan URL lebih mudah dibaca oleh manusia. URL “Cantik” lebih mudah diingat, lebih mudah ditaip, dan lebih mudah dibaca dengan kuat.
  • Untuk menjadikan URL lebih mudah untuk ditafsirkan oleh enjin carian. URL yang cantik memberitahu mesin carian tentang halaman, tetapi sebilangan kecil ID dan pemboleh ubah tidak. Enjin carian menyukai semantik, jadi menulis semula URL membantu memastikan halaman dikategorikan dan diindeks dengan betul.
  • Untuk membuat pengalihan sementara dari satu fail atau jalan ke fail lain.

Mengarang Peraturan Mod_rewrite

Sekiranya anda menggunakan Apache, anda harus meminta host web anda untuk mengaktifkan mod_rewrite dalam fail http.conf pada akaun anda. Dalam banyak kes, mod_rewrite diaktifkan secara lalai.

Seterusnya, anda perlu membuat fail .htaccess di direktori root akaun hosting anda. Fail .htaccess mengawal direktori root dan semua fail di bawahnya, melainkan jika anda menimpanya dengan fail .htaccess yang lain di bawah pohon folder. Sekiranya anda sudah mempunyai fail .htaccess, buat salinan sandaran sebelum meneruskan.

Peraturan menulis semula mempunyai dua bahagian. Baris pertama mengaktifkan arahan menulis semula mesin di Apache. (Garis yang diawali dengan # adalah komentar, yang tidak dihiraukan.) Bahagian kedua dari pernyataan mod_rewrite memberitahu mesin menulis semula bagaimana URL harus diubah. Oleh itu, kami menyatakan keadaannya, dan kemudian kami memberitahu Apache apa yang harus dilakukan. Berikut adalah contoh peraturan yang mengalihkan pengunjung dari satu fail ke fail lain.

# Hidupkan Penulisan Semula
Tulis semulaEngine dihidupkan
# Ubah nama lama.html menjadi nama baru.html
Tulis semula Peraturan ^ oldname.html $ newname.html

Peraturan ini memeriksa fail bernama oldname.html (syaratnya). Sekiranya ia menemui padanan, ia akan menggantikannya secara dinamik dengan nama baru.html. Pengguna akhir melihat kandungan nama lama.html, tetapi melihat nama baru.html di bar URL penyemak imbas mereka. Sekiranya mod_rewrite tidak sepadan dengan nama lama.html, peraturan itu akan diabaikan.

Mencari Corak

Membuat satu peraturan untuk setiap URL memerlukan banyak masa, jadi kita perlu menggunakan ungkapan biasa. Ungkapan biasa mencari corak dan menggantikan satu bahagian rentetan dengan rentetan yang lain. Ambil contoh ini:

# Hidupkan Penulisan Semula
Tulis semulaEngine dihidupkan
# Tukarkan pengarang / NAMA / menjadi author.php? Id = NAMA
Tulis semula Peraturan ^ pengarang / ([a-z] +) /? $ Author.php? Id = $ 1 [L]

Memecahkannya, inilah cara syarat ^ author / ([a-z] +) /? $ Berfungsi:

  • ^ adalah permulaan peraturan
  • pengarang / adalah rentetan yang kami cari dalam URL asal
  • ([a-z] +) adalah wildcard – ia mencari perkataan yang muncul selepas pengarang /
  • /? menambah garis miring di hujung URL
  • $ menandakan berakhirnya keadaan.

Dan inilah cara tindakan author.php? Id = $ 1 berfungsi:

  • author.php? id = ialah rentetan yang ingin kita tulis
  • $ 1 adalah placeholder untuk perkataan yang kami dapati dalam keadaan di atas.

Pada akhir peraturan, [L] adalah bendera yang menyuruh Apache berhenti menerapkan peraturan lagi jika ini diproses.

Ini hanyalah contoh asas mengenai mod_rewrite yang dapat dilakukan. Daripada menulis [a-z], kita dapat menggunakan [xyz] untuk mencari huruf x, y atau z, atau (y | n) untuk mencari y atau n. Anda boleh mendapatkan rujukan yang lebih lengkap mengenai sintaks ungkapan biasa dalam sumber di bawah.

Tulis semula Bendera

Dalam contoh di atas, kami menambahkan bendera, [L], di akhir peraturan. Bendera adalah pilihan. Mereka mesti disertakan dalam satu set tanda kurung persegi di hujung baris, dan jika anda ingin menggunakan beberapa bendera, anda mesti meletakkan tanda koma di antara mereka.

Bendera boleh ditulis dengan lengkap, atau sebagai versi yang dipendekkan. Walaupun kawasan bendera pendek lebih mudah ditaip, menggunakan bendera panjang adalah idea yang baik jika anda ingin membuat kod anda mudah dibaca.

  • B: melarikan diri daripada watak bukan alfanumerik; mungkin memerlukan AllowEncodedSlashes ditetapkan ke Hidup.
  • C atau rantai: mengikat peraturan ke peraturan seterusnya dalam fail .htaccess anda; yang kedua hanya dilaksanakan jika yang pertama menghasilkan perlawanan.
  • CO atau kuki: buat kuki apabila peraturan sepadan; memerlukan atribut tambahan.
  • DPI atau discardpath: membuang PATH_INFO dalam URL yang ditulis semula.
  • E atau env: menetapkan pemboleh ubah persekitaran.
  • TAMAT: sama dengan L, ini menghentikan pemprosesan penulisan semula.
  • F atau dilarang: mengembalikan status Larangan 403 dengan tindak balas terhadap peraturan.
  • G atau hilang: mengembalikan status 410 Gone dengan tindak balas terhadap peraturan.
  • H atau pengendali: memaksa peraturan untuk menggunakan pengendali tertentu, yang ditentukan sebagai pemboleh ubah.
  • L atau terakhir: menghentikan pemprosesan peraturan.
  • N atau seterusnya: memulakan set peraturan semasa lagi, menggunakan hasil peraturan sebagai input.
  • NC atau nocase: mematikan kepekaan kes untuk peraturan.
  • NE atau noescape: menukar watak khas menjadi kod heks sama mereka.
  • NS atau nosubreq: menghentikan penulisan semula daripada diterapkan pada sub-permintaan.
  • P atau proksi: mendorong hasil peraturan ke mod_proxy, dan mengabaikan peraturan yang tinggal.
  • PT atau jalan masuk: menukar laluan fail menjadi URL.
  • QSA atau qsappend: menggabungkan rentetan pertanyaan dengan yang baru.
  • QSD atau qsdiscard: membuang rentetan pertanyaan lama dan menggantikannya.
  • QSL atau qslast: memisahkan rentetan pertanyaan pada tanda tanya terakhir dalam rentetan.
  • R atau pengalihan: keluarkan pengalihan HTTP.
  • S atau langkau: melangkau beberapa peraturan; mesti didefinisikan sebagai [S = n], di mana n adalah bilangan peraturan untuk dilangkau.
  • T atau jenis: Menetapkan jenis MIME tindak balas peraturan.

kupon hosting web

Mencari tawaran hebat untuk hosting mod_rewrite?
A2 Hosting menjaringkan # 1 dalam ujian kepantasan kami baru-baru ini. Anda kini dapat menjimatkan sehingga 50% untuk rancangan mesra pemaju mereka. Gunakan pautan diskaun ini
untuk mendapatkan perjanjian.

Pemboleh ubah Pelayan

Senarai di bawah mengandungi banyak pemboleh ubah pelayan, yang sebahagiannya dapat anda gunakan dengan mod_rewrite. Tidak semua pemboleh ubah disokong oleh semua pelayan, dan sama, anda mungkin dapat menggunakan pemboleh ubah pelayan yang tidak disenaraikan di sini.

Sekiranya anda sudah mengetahui tentang tajuk HTTP, banyak pemboleh ubah pelayan dalam senarai ini akan anda ketahui, tetapi ada beberapa yang disediakan khusus untuk digunakan dengan mod_rewrite.

  • API_VERSION: tarikh versi API.
  • AUTH_TYPE: authtype; mengembalikan TIADA, ASAS, DIGEST atau BENTUK.
  • CONN_REMOTE_ADDR: alamat IP rakan sebaya.
  • CONTEXT_DOCUMENT_ROOT: maklumat mengenai pemetaan direktori di Apache.
  • CONTEXT_PREFIX: maklumat mengenai pemetaan direktori di Apache.
  • DOCUMENT_ROOT: jalan mutlak untuk dokumen.
  • HANDLER: nama pengendali.
  • HTTP_ACCEPT: tajuk HTTP terima, jika ada di tajuk permintaan HTTP.
  • HTTP_COOKIE: kuki, jika ada dalam tajuk permintaan HTTP.
  • HTTP_FORWARDED: jalan sebenarnya, jika ada dalam tajuk permintaan HTTP.
  • HTTP_HOST: pelayan semasa, jika ada di tajuk permintaan HTTP.
  • HTTP_PROXY_CONNECTION: jalur proksi HTTP, jika ada di tajuk permintaan HTTP.
  • HTTP_REFERER: URL halaman rujukan.
  • HTTP_USER_AGENT: ejen pengguna yang digunakan untuk mengakses halaman.
  • HTTP2: adakah sambungan menggunakan HTTP2; kembali AKTIF atau MATI.
  • HTTPS: sama ada sambungan menggunakan HTTPS; kembali AKTIF atau MATI.
  • IPV6: sama ada sambungan menggunakan IPVS; kembali AKTIF atau MATI.
  • IS_SUBREQ: sama ada permintaan itu adalah sub-permintaan; betul atau salah.
  • PATH_INFO: data laluan yang mengikuti nama fail.
  • QUERY_STRING: watak dalam URL, selepas tanda tanya.
  • REMOTE_ADDR: IP pengguna.
  • REMOTE_HOST: nama domain pengguna yang layak sepenuhnya.
  • REMOTE_USER: nama pengguna pengguna yang disahkan.
  • REMOTE_IDENT: nama pengguna pengguna yang disahkan, dikembalikan dengan identd.
  • REQUEST_FILENAME: jalan tempatan ke fail atau skrip dalam permintaan.
  • REQUEST_METHOD: kaedah permintaan; KEPALA, PUT, DAPATKAN atau POST.
  • REQUEST_SCHEME: skema dalam URI permintaan.
  • REQUEST_URI: URI permintaan, sebagai jalan.
  • SCRIPT_FILENAME: jalan mutlak untuk skrip.
  • SCRIPT_GROUP: nama kumpulan skrip.
  • SCRIPT_USER: pengguna yang memiliki skrip.
  • SERVER_ADDR: IP pelayan tempat fail .htaccess disimpan.
  • SERVER_ADMIN: pentadbir pelayan, seperti yang dikonfigurasi dalam Apache.
  • SERVER_NAME: nama pelayan, seperti yang dikonfigurasi dalam Apache.
  • SERVER_PORT: nombor port tempat permintaan dihantar.
  • SERVER_PROTOCOL: protokol dan semakan permintaan.
  • SERVER_SIGNATURE: versi pelayan dan nama host.
  • SERVER_SOFTWARE: rentetan ID untuk pelayan.
  • THE_REQUEST: permintaan secara keseluruhan.
  • MASA: tarikh dan masa dalam format YYYYMMDDHHMMSS.
  • TIME_DAY: hari semasa.
  • TIME_HOUR: jam semasa.
  • TIME_MIN: minit semasa.
  • TIME_MON: bulan semasa.
  • TIME_SEC: detik semasa.
  • TIME_WDAY: hari ini, dikembalikan sebagai nombor (bermula dengan 0 untuk hari Ahad).
  • TIME_YEAR: tahun semasa.

Sumber

  • Panduan Pemula untuk Mod_rewrite: panduan ini berasal dari tahun 2004, tetapi memberikan landasan yang baik dalam prinsip mod_rewrite.
  • Penulisan Semula URL untuk Pemula: panduan komprehensif untuk pemula dan pengguna perantaraan.
  • Cheatsheet Apache Rewrite: versi HTML dari cheat sheet yang mula-mula diterbitkan di iLoveJackDaniels.com.
  • Pengenalan kepada Ungkapan Biasa Lanjutan: kembangkan pengetahuan anda tentang ungkapan biasa dengan panduan ini.
  • RegEx Pal: periksa sintaks ungkapan biasa anda sebelum menyebarkannya di laman web anda.

Ringkasan

mod_rewrite adalah kaedah yang berguna dan kuat untuk mengawal tingkah laku Apache. Anda boleh melakukan banyak perkara dengan mod_rewrite yang belum kami bahas di sini. Ini termasuk pengalihan, mencegah pautan panas gambar, melarang pengunjung tertentu dari laman web anda, dan banyak lagi. Cara terbaik untuk memanfaatkan mod_rewrite adalah belajar tentang ungkapan biasa.

Bacaan dan Sumber Lanjut

Kami mempunyai lebih banyak panduan, tutorial, dan infografik yang berkaitan dengan pembangunan web:

  • Pengenalan dan Sumber PHP: pelajari semua mengenai bahasa backend yang paling popular digunakan di web.
  • Pengaturcaraan Rangkaian dengan Soket Internet: pelajari semua mengenai rangkaian di internet.
  • Pengenalan dan Sumber MySQL: MySQL adalah salah satu pangkalan data yang paling popular di internet.

Cara Memilih CMS yang Betul

Tidak pasti CMS apa yang anda mahu gunakan? Lihat artikel kami, Cara Memilih CMS yang Tepat.

Senarai Utama Alat Webmaster A-Z
Cara Memilih CMS yang Betul

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me