Cara melakukan pengalihan internal dengan mod_rewrite di Apache

Cara melakukan pengalihan internal dengan mod_rewrite di Apache

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 baru   

Bawaan.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:

URL pemetaan ke halaman lain di domain

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:

URL pemetaan ke halaman indeks aktual

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!