Cara melakukan pengalihan dalaman dengan mod_rewrite di Apache

Cara melakukan pengalihan dalaman dengan mod_rewrite di Apache

Dalam artikel ini dan seterusnya kami akan menerangkan cara menggunakan mod_rewrite, untuk memetakan permintaan HTTP tertentu ke halaman lain di laman web, atau ke URL luaran.

Dalam erti kata lain, modul Apache yang terkenal ini akan membolehkan anda mengalihkan URL kepada yang lain, yang akan kami gambarkan melalui contoh praktikal.

Cadangan Baca: 5 petua untuk meningkatkan prestasi pelayan web Apache anda

CATATAN: Contoh di bawah menganggap anda sekurang -kurangnya agak biasa Ungkapan biasa yang serasi Perl (Pcre). Oleh kerana topik itu keluar dari skop artikel ini, rujuk Perl 5 versi 24.0 Dokumen untuk maklumat lanjut mengenai PCRE.

Sebelum meneruskan, pastikan modul penulisan semula dimuatkan. Walaupun ini adalah tingkah laku lalai di Centos dan pengagihan yang serupa, dalam Debian dan derivatif anda perlu memuatkannya secara manual seperti berikut:

# a2enmod menulis semula 

Mengkonfigurasi Apache untuk menggunakan modul mod_rewrite

Untuk kesederhanaan, mari gunakan tapak lalai di a Centos 7 kotak (IP 192.168.0.100) untuk menerangkan cara menggunakan mod_rewrite (Documentroot: /var/www/html, Fail Konfigurasi: /etc/httpd/conf/httpd.Conf).

Agar Apache menggunakan modul ini, tambahkan baris berikut ke fail konfigurasi:

Menulis semula 

Penting untuk diperhatikan bahawa konfigurasi ini tidak akan diwarisi oleh tuan rumah maya dalam kotak yang sama.

Oleh itu, anda perlu menambah RewriteEngine untuk setiap hos maya di mana anda ingin menggunakan peraturan menulis semula.

Pengalihan Dalaman: Pemetaan URL kepada yang lain di Hos Maya yang sama

Pengalihan dalaman adalah contoh paling mudah mod_rewrite. Sekiranya anda ingin mengalihkan semua permintaan untuk lalai.ASPX ke indeks.html, Tambahkan baris berikut (juga dikenali sebagai peraturan menulis semula) di bawah RewriteEngine pada:

Menulis semula "^/lalai \.ASPX $ ""/indeks.html " 

dan jangan lupa untuk memulakan semula Apache agar perubahan itu berkuat kuasa.

Ini mungkin berguna jika laman web anda pada asalnya direka menggunakan ASP dan kemudian berubah menjadi biasa Html5. Enjin carian akan mempunyai .ASPX fail diindeks tetapi fail itu tidak wujud lagi.

Dalam hal ini, anda perlu mencari jalan untuk mengalihkan permintaan supaya calon pelawat anda tidak masuk ke halaman ralat. Untuk menguji, mari buat fail HTML yang mudah dinamakan indeks.html dalam /var/www/html dengan kandungan berikut:

    Laman web baru   

Lalai.ASPX ada di sini, tetapi sekarang indeksnya.html

The CARET dan dolar Tanda -tanda akan menyebabkan ungkapan biasa sesuai dengan rentetan yang bermula dengan /lalai dan berakhir dengan .ASPX, masing -masing.

Cadangan Baca: Pasang mod_pagespeed untuk mempercepat prestasi Apache sehingga 10x

Sekarang lancarkan penyemak imbas anda dan tunjukkannya 192.168.0.100/lalai.ASPX. Sekiranya keadaan berjalan seperti yang diharapkan, Apache harus berkhidmat indeks.html sebaliknya.
Walau bagaimanapun, pengguna akhir masih akan melihat lalai.ASPX Di bar alamat menyebabkan perubahan itu benar -benar telus:

Pemetaan URL ke halaman lain di Domain

Sekiranya anda mahukan URL di bar alamat untuk menunjukkan bahawa pelayan itu sebenarnya berkhidmat indeks.html bukan halaman yang dinamakan lalai.ASPX, Tambah [R, l] hingga akhir peraturan penulisan semula seperti berikut:

Menulis semula "^/lalai \.ASPX $ ""/indeks.html "[r, l] 

Di sini [R, l] adalah dua bendera pilihan yang menunjukkan bahawa pengalihan http lengkap harus dikeluarkan kepada penyemak imbas (R) Dan tidak ada peraturan selanjutnya yang perlu diproses:

Pemetaan URL ke halaman indeks sebenar

Perhatikan bagaimana bar alamat sekarang ditunjukkan indeks.html, seperti yang dijangkakan, bukannya lalai.ASPX seperti yang berlaku sebelum ini.

Ringkasan

Dalam artikel ini, kami menerangkan cara menggunakan mod_rewrite untuk melakukan pengalihan dalaman. Tinggal untuk jawatan seterusnya di mana kami akan belajar bagaimana untuk mengarahkan ke sumber yang telah dipindahkan ke pelayan yang berbeza, dan cara memaparkan kandungan tersuai berdasarkan penyemak imbas pengguna. Sehingga itu, rujuk Apache 2.4 dokumen untuk senarai penuh bendera penulisan semula yang ada.

Seperti biasa, jangan ragu untuk menggunakan borang komen di bawah jika anda mempunyai sebarang pertanyaan atau maklum balas mengenai artikel ini. Kami berharap untuk mendengar daripada anda!