Cara melakukan pengalihan internal dengan mod_rewrite di Apache
- 1073
- 112
- Dr. Travis Bahringer
Dalam artikel ini dan di selanjutnya kami akan menjelaskan cara menggunakan mod_rewrite, untuk memetakan permintaan HTTP tertentu ke halaman lain di situs web, atau ke URL eksternal.
Dengan kata lain, modul Apache yang terkenal ini akan memungkinkan Anda mengarahkan URL ke yang lain, yang akan kami ilustrasikan melalui contoh-contoh praktis.
Disarankan Baca: 5 tips untuk meningkatkan kinerja server web Apache Anda
CATATAN: Contoh di bawah ini menganggap Anda setidaknya agak akrab Perl Ekspresi Reguler yang Kompatibel (PCRE). Karena topik itu di luar ruang lingkup artikel ini, lihat Perl 5 Versi 24.0 dokumen untuk detail lebih lanjut tentang PCRE.
Sebelum melanjutkan, pastikan modul Penulisan ulang dimuat. Meskipun ini adalah perilaku default di Centos dan distribusi serupa, dalam Debian dan turunan Anda perlu memuatnya secara manual sebagai berikut:
# A2Enmod menulis ulang
Mengkonfigurasi Apache untuk menggunakan modul mod_rewrite
Untuk kesederhanaan, mari kita gunakan situs default di a Centos 7 kotak (IP 192.168.0.100) untuk menjelaskan cara menggunakan mod_rewrite (Root document: /var/www/html, File Konfigurasi: /etc/httpd/conf/httpd.conf).
Agar Apache menggunakan modul ini, tambahkan baris berikut ke file konfigurasi:
Menulis ulang
Penting untuk dicatat bahwa konfigurasi ini tidak akan diwarisi oleh host virtual di kotak yang sama.
Dengan demikian, Anda perlu menambahkan Penulisan ulang Aktif untuk setiap host virtual tempat Anda ingin menggunakan aturan penulisan ulang.
Pengalihan internal: Memetakan URL ke yang lain di host virtual yang sama
Pengalihan internal adalah contoh paling sederhana mod_rewrite. Jika Anda ingin mengarahkan kembali semua permintaan bawaan.aspx ke indeks.html, Tambahkan baris berikut (juga dikenal sebagai aturan penulisan ulang) di bawah Penulisan ulang pada:
Penulisan ulang "^/default \.aspx $ ""/index.html "
dan jangan lupa untuk memulai kembali Apache agar perubahan dapat berlaku.
Ini mungkin berguna jika situs Anda awalnya dirancang menggunakan Asp dan kemudian berubah menjadi polos Html5. Mesin pencari akan memiliki .aspx
file diindeks tetapi file itu tidak ada lagi.
Dalam hal ini, Anda perlu menemukan cara untuk mengarahkan kembali permintaan sehingga calon pengunjung Anda tidak mengalami halaman kesalahan. Untuk menguji, mari kita buat file html sederhana bernama indeks.html
di dalam /var/www/html dengan konten berikut:
Situs baruBawaan.ASPX ada di sini, tapi sekarang indeks.html
Itu tanda sisipan Dan dolar Tanda akan menyebabkan ekspresi reguler mencocokkan string yang dimulai dengan /bawaan
dan berakhir dengan .aspx
, masing -masing.
Disarankan Baca: Instal mod_pagespeed untuk mempercepat kinerja apache hingga 10x
Sekarang luncurkan browser Anda dan arahkan ke 192.168.0.100/default.aspx. Jika semuanya berjalan seperti yang diharapkan, Apache harus melayani indeks.html
alih-alih.
Namun, pengguna akhir masih akan melihat bawaan.aspx
Di bilah alamat yang menyebabkan perubahan benar -benar transparan:
Jika Anda ingin URL di bilah alamat menunjukkan bahwa server itu benar -benar melayani indeks.html
bukan halaman bernama bawaan.aspx
, menambahkan [R, L]
Di akhir aturan penulisan ulang sebagai berikut:
Penulisan ulang "^/default \.aspx $ ""/index.html "[r, l]
Di Sini [R, L]
adalah dua bendera opsional yang menunjukkan bahwa pengalihan http lengkap harus dikeluarkan ke browser (R)
dan bahwa tidak ada aturan lebih lanjut yang harus diproses:
Perhatikan bagaimana bilah alamat sekarang indeks.html
, seperti yang diharapkan, bukannya bawaan.aspx
seperti yang sebelumnya.
Ringkasan
Dalam artikel ini kami menjelaskan cara menggunakan mod_rewrite untuk melakukan pengalihan internal. Nantikan posting berikutnya di mana kita akan belajar cara mengarahkan kembali ke sumber daya yang telah dipindahkan ke server yang berbeda, dan cara menampilkan konten khusus berdasarkan browser pengguna. Sampai saat itu, lihat Apache 2.4 dokumen untuk daftar lengkap bendera penulisan ulang yang tersedia.
Seperti biasa, jangan ragu untuk menggunakan formulir komentar di bawah ini jika Anda memiliki pertanyaan atau umpan balik tentang artikel ini. Kami menantikan kabar dari Anda!
- « Redirect Situs web permintaan berdasarkan browser yang digunakan (Chrome, Firefox atau IE)
- 5 cara untuk mengosongkan atau menghapus konten file besar di Linux »