• Newsticker

    Senin, 21 Mei 2018

    Cara Mengatur mod_rewrite untuk Apache pada Ubuntu 14.04

    pengantar

    Dalam tutorial ini, kami akan mengaktifkan dan mempelajari cara mengelola penulisan ulang URL menggunakan mod_rewritemodul Apache2 Alat ini memungkinkan kami untuk menulis ulang URL dengan cara yang lebih bersih, menerjemahkan jalur yang dapat dibaca manusia menjadi string kueri ramah-kode.
    Panduan ini dibagi menjadi dua bagian: yang pertama menyiapkan contoh aplikasi web dan yang kedua menjelaskan aturan penulisan ulang yang umum digunakan.

    Prasyarat

    Untuk mengikuti tutorial ini, Anda akan membutuhkan:
    • Satu Ubuntu 14.04 Droplet segar
    • Seorang pengguna non-root sudo, yang dapat Anda atur dengan mengikuti langkah 2 dan 3 dari tutorial ini

    Langkah 1 - Memasang Apache

    Pada langkah ini, kita akan menggunakan penginstal paket bawaan yang dipanggil apt-getIni menyederhanakan manajemen secara drastis dan memfasilitasi instalasi yang bersih.
    Pertama, perbarui indeks paket sistem. Ini akan memastikan bahwa paket lama atau yang sudah usang tidak mengganggu pemasangan.
    • sudo apt-get update
    Apache2 adalah server HTTP yang disebutkan di atas dan yang paling umum digunakan di dunia. Untuk menginstalnya, jalankan yang berikut:
    • sudo apt-get install apache2
    Untuk informasi tentang perbedaan antara Nginx dan Apache2, dua server web open source paling populer, lihat artikel ini .

    Langkah 2 - Mengaktifkan mod_rewrite

    Sekarang, kita perlu mengaktifkan mod_rewrite.
    • sudo a2enmod rewrite
    Ini akan mengaktifkan modul atau memberi tahu Anda bahwa modul sudah berlaku. Untuk menerapkan perubahan ini, mulai ulang Apache.
    • sudo service apache2 restart

    Langkah 3 - Menyiapkan .htaccess

    Di bagian ini, kita akan mengatur .htaccessfile untuk manajemen aturan penulisan ulang yang lebih sederhana.
    Sebuah .htaccessfile yang memungkinkan kita untuk memodifikasi aturan penulisan ulang tanpa mengakses file konfigurasi server. Untuk alasan ini, .htaccesssangat penting untuk keamanan aplikasi web Anda. Periode yang mendahului nama file memastikan bahwa file tersebut disembunyikan.
    Kami perlu menyiapkan dan mengamankan beberapa pengaturan lagi sebelum kami dapat memulai.
    Pertama, izinkan perubahan dalam .htaccessfile. Buka file konfigurasi Apache standar menggunakan nanoatau editor teks favorit Anda.
    • sudo nano /etc/apache2/sites-enabled/000-default.conf
    Di dalam file itu, Anda akan menemukan <VirtualHost *:80>blok pada baris 1. Di dalam blok itu, tambahkan blok berikut:
    /etc/apache2/sites-available/default
    <Directory /var/www/html> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory>
    File Anda sekarang harus sesuai dengan yang berikut. Pastikan bahwa semua blok terpasang dengan benar.
    /etc/apache2/sites-available/default
    <VirtualHost *:80> <Directory /var/www/html> . . . </Directory> . . . </VirtualHost>
    Untuk menerapkan perubahan ini, mulai ulang Apache.
    • sudo service apache2 restart
    Sekarang, buat .htaccessfile.
    • sudo nano /var/www/html/.htaccess
    Tambahkan baris pertama ini di bagian atas file baru untuk mengaktifkan RewriteEngine.
    /var/www/html/.htaccess
    RewriteEngine on
    Simpan dan keluar dari file.
    Untuk memastikan bahwa pengguna lain hanya dapat membaca Anda .htaccess, jalankan perintah berikut untuk memperbarui izin.
    • sudo chmod 644 /var/www/html/.htaccess
    Anda sekarang memiliki .htaccessfile operasional , untuk mengatur aturan routing aplikasi web Anda.

    Langkah 4 - Mengatur File

    Di bagian ini, kami akan menyiapkan penulisan ulang URL dasar, yang mengubah URL cantik menjadi jalur sebenarnya ke kode. Secara khusus, kami akan mengizinkan pengguna untuk mengakses example.com/about.
    Kami akan mulai dengan membuat file bernama about.html.
    • sudo nano /var/www/html/about.html
    Salin kode berikut ke dalam halaman HTML.
    /var/www/html/about.html
    <html> <head> <title>About Us</title> </head> <body> <h1>About Us</h1> </body> </html>
    Anda dapat mengakses aplikasi web Anda di your_server_ip/about.htmlatau example.com/about.htmlSekarang perhatikan bahwa hanya about.htmldapat diakses; jika Anda mencoba mengakses your_server_ip/about, Anda akan mendapatkan kesalahan Tidak Ditemukan . Kami ingin pengguna mengakses aboutsebagai gantinya. Aturan penulisan ulang kami akan memungkinkan fungsi yang sangat ini.
    Buka .htaccessfile.
    • sudo nano /var/www/html/.htaccess
    Setelah baris pertama, tambahkan yang berikut.
    /var/www/html/.htaccess
    RewriteRule ^about$ about.html [NC]
    File Anda sekarang harus identik dengan yang berikut.
    /var/www/html/.htaccess
    RewriteEngine on RewriteRule ^about$ about.html [NC]
    Selamat. Sekarang Anda dapat mengakses example.com/aboutdi browser Anda!
    Ini adalah contoh sederhana yang baik yang menunjukkan sintaks umum yang diikuti semua Aturan Menulis Ulang.
    ^about$adalah string yang dicocokkan dari URL. Yaitu, itulah yang dilihat oleh para pemirsa di browsernya. Contoh kami menggunakan beberapa metakarakter .
    • ^menunjukkan awal dari URL, setelah example.com/dilucuti.
    • $ menunjukkan akhir dari URL
    • about cocok dengan string "tentang"
    about.htmladalah jalur sebenarnya yang diakses pengguna; artinya, Apache akan tetap melayani about.htmlfile.
    [NC]adalah bendera yang mengabaikan kapitalisasi di URL.
    Dengan aturan yang ditunjukkan di atas, URL berikut akan mengarah ke about.html:
    • example.com/about
    • example.com/About
    • example.com/about.html
    Hal-hal berikut tidak akan:
    • example.com/about/
    • example.com/contact

    Pola umum

    Di bagian ini, kami akan menunjukkan beberapa arahan yang biasa digunakan.
    Aplikasi web Anda sekarang berjalan dan diatur oleh .htaccessfile yang dilindungi Contoh paling sederhana dimasukkan di atas. Kami akan mengeksplorasi dua contoh tambahan di bagian ini.
    Anda dapat mengatur file contoh di jalur hasil jika Anda mau, tetapi tutorial ini tidak termasuk membuat file HTML dan PHP; hanya aturan untuk menulis ulang.

    Contoh 1: Menyederhanakan String Kueri dengan RewriteRule

    Semua orang RewriteRulemematuhi format berikut:
    RewriteRule pattern substitution [flags]
    
    • RewriteRule : menentukan arahanRewriteRule
    • pattern : ekspresi reguler yang cocok dengan string yang diinginkan
    • substitusi : jalur ke URL yang sebenarnya
    • bendera : parameter opsional yang dapat memodifikasi aturan
    Aplikasi web sering memanfaatkan string kueri , yang ditambahkan ke URL menggunakan ?tanda tanya dan dipisahkan menggunakan &ampersand. Ini diabaikan saat mencocokkan aturan penulisan ulang. Namun, terkadang string kueri mungkin diperlukan untuk melewatkan data di antara halaman. Sebagai contoh, halaman hasil pencarian yang ditulis dalam PHP dapat memanfaatkan sesuatu yang mirip dengan yang berikut:
    http://example.com/results.php?item=shirt&season=summer
    
    Dalam contoh ini, kami ingin menyederhanakan ini menjadi:
    http://example.com/shirt/summer
    
    Contoh 1A: Penggantian Sederhana
    Dengan menggunakan aturan penulisan ulang, kita bisa menggunakan yang berikut:
    /var/www/html/.htaccess
    RewriteRule ^shirt/summer$ results.php?item=shirt&season=summer
    Di atas adalah cukup jelas, karena sebenarnya memetakan shirt/summerke results.php?item=shirt&season=summerIni mencapai efek yang kami inginkan.
    Contoh 1B: Pilihan yang Cocok
    Namun, kami ingin menggeneralisasikan ini untuk memasukkan semua musim. Jadi, kami akan melakukan hal berikut:
    • Tentukan serangkaian opsi menggunakan |boolean, yang berarti "ATAU"
    • Kelompokkan pertandingan menggunakan (), lalu rujuk grup yang digunakan $1, dengan 1untuk grup yang cocok pertama
    Aturan Rewrite sekarang menjadi:
    /var/www/html/.htaccess
    RewriteRule ^shirt/(summer|winter|fall|spring) results.php?item=shirt&season=$1
    Aturan yang ditunjukkan di atas sesuai dengan URL yang shirt/diikuti oleh musim yang ditentukan. Musim itu dikelompokkan menggunakan ()dan kemudian direferensikan dengan $1di jalur berikutnya. Ini berarti bahwa, misalnya, bahwa:
    http://example.com/shirt/winter
    
    menjadi:
    http://example.com/results.php?item=shirt&season=winter
    
    Ini juga mencapai efek yang diinginkan.
    Contoh 1C: Mencocokkan Set Karakter
    Namun, kami juga ingin menentukan jenis barang apa pun, bukan hanya URL di /shirtJadi, kami akan melakukan hal berikut:
    • Tulis ekspresi reguler yang cocok dengan semua karakter alfanumerik. Ekspresi braket []cocok dengan karakter apa pun di dalamnya, dan +cocok dengan sejumlah karakter yang ditentukan dalam tanda kurung
    • Kelompokkan kecocokan, dan rujuk $2sebagai variabel kedua dalam file
    /var/www/html/.htaccess
    RewriteRule ^([A-Za-z0-9]+)/(summer|winter|fall|spring) results.php?item=$1&season=$2
    Di atas akan mengonversi, misalnya:
    http://example.com/pants/summer
    
    untuk:
    http://example.com/results.php?item=pants&season=summer
    
    Contoh 1D: Melewati String Kueri
    Bagian ini tidak memperkenalkan konsep baru tetapi membahas masalah yang mungkin muncul. Dengan menggunakan contoh di atas, katakan kami ingin mengalihkan http://example.com/pants/summertetapi akan meneruskan string kueri tambahan ?page=2Kami ingin yang berikut:
    http://example.com/pants/summer?page=2
    
    untuk memetakan ke:
    http://example.com/results.php?item=pants&season=summer&page=2
    
    Jika Anda mencoba mengakses URL di atas dengan pengaturan kami saat ini, Anda akan menemukan bahwa string kueri page=2hilang. Ini dengan mudah diperbaiki menggunakan QSAbendera tambahan Ubah aturan penulisan ulang agar cocok dengan yang berikut, dan perilaku yang diinginkan akan tercapai.
    /var/www/html/.htaccess
    RewriteRule ^([A-Za-z0-9]+)/(summer|winter|fall|spring) results.php?item=$1&season=$2 [QSA]

    Contoh 2: Menambahkan Ketentuan dengan Logika

    RewriteCondmari kita tambahkan ketentuan ke aturan penulisan ulang kami. Semua orang RewriteCondmematuhi format berikut:
    RewriteCond TestString Condition [Flags]
    
    • RewriteCond : menentukan RewriteCondarahan
    • TestString : string untuk menguji
    • Kondisi : pola yang cocok
    • Bendera : parameter opsional yang dapat mengubah kondisi
    Jika sebuah RewriteCondevaluasi untuk benar, RewriteRulesegera berikut akan dipertimbangkan.
    Contoh 2A: Halaman Default
    Dalam panel administrasi imajiner, kami mungkin ingin mengarahkan semua URL yang salah ke halaman beranda, alih-alih menyapa pengguna dengan 404. Dengan menggunakan ketentuan, kami dapat memeriksa untuk melihat apakah file yang diminta ada.
    /var/www/html/.htaccess
    RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^admin/(.*)$ /admin/home
    Hal ini akan mengarahkan sesuatu seperti /admin/blarghuntuk /admin/home.
    Dengan cara di atas:
    • %{REQUEST_FILENAME} adalah string yang harus diperiksa
    • !-fmenggunakan !bukan operator pada namafile
    • RewriteRule mengalihkan semua permintaan kembali ke /admin/home
    Perhatikan bahwa pendekatan yang lebih sintaksis dan tepat secara teknis adalah mendefinisikan 404 ErrorDocument.
    /var/www/html/.htaccess
    ErrorDocument 404 /error.html
    Contoh 2B: Pembatasan Akses IP
    Meskipun ini juga dapat dicapai dengan menggunakan metode lain, yang RewriteConddapat digunakan untuk membatasi akses ke satu IP atau kumpulan alamat IP.
    Contoh ini memblokir lalu lintas dari mana saja kecuali 12.34.56.789.
    /var/www/html/.htaccess
    RewriteCond %{REMOTE_ADDR} !^(12\.34\.56\.789)$ RewriteRule (.*) - [F,L]
    Contoh ini hanyalah negasi dari Contoh 3 dari artikel mod_rewrite lama . Seluruh pernyataan berbunyi "jika alamatnya tidak 12.34.56.789, jangan izinkan akses."
    Pendeknya:
    • %{REMOTE_ADDR} adalah string alamat
    • !^(12\.34\.56\.789)$keluar semua .periode dengan \backslash dan meniadakan alamat IP yang digunakan!
    • The Fbendera melarang akses, dan Lbendera menunjukkan bahwa ini adalah aturan terakhir untuk menjalankan, jika dijalankan
    Jika Anda lebih suka memblokir 12.34.56.789, gunakan ini sebagai gantinya:
    /var/www/html/.htaccess
    RewriteCond %{REMOTE_ADDR} ^(12\.34\.56\.789)$ RewriteRule (.*) - [F,L]
    Anda dapat menemukan lebih banyak aturan penulisan ulang, dan cara mencegah hot linking, di artikel asli bagian 1 dan bagian 2 .

    Kesimpulan

    mod_rewritedapat digunakan secara efektif untuk memastikan URL yang dapat dibaca manusia. The .htaccessfile itu sendiri memiliki lebih banyak kegunaan dari sekedar modul ini, bagaimanapun, dan perlu dicatat bahwa banyak modul Apache lainnya dapat diinstal untuk memperluas fungsi nya.
    Ada sumber daya lain yang merinci kemampuan mod_rewrite:
    mod_rewriteadalah modul penting untuk keamanan aplikasi web, tetapi kadang-kadang bisa berakhir dengan pengalihan loop atau di mana-mana, 500 forbiddenkesalahan ambigu Untuk tips tentang debugging .htaccess, lihat posting StackOverflow ini .
    Aturan penulisan ulang ditulis dengan ekspresi reguler. Untuk menjadi seorang pakar, rujuk tutorial ini semua tentang ekspresi reguler .
    Untuk analisis cepat dari pola ekspresi reguler Anda, berikut adalah debugger online yang dapat memberikan umpan balik langsung dan interpretasi langsung dari pola ekspresi reguler Anda.

    Tidak ada komentar:

    Posting Komentar

    Agama

    Jaringan

    Android

    Linux

    Catatan

    Mikrotik