Cara melakukan pengalihan dalaman dengan mod_rewrite di Apache
- 2727
- 740
- Daryl Wilderman
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 baruLalai.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:
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:
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!
- « Permintaan laman web mengalihkan berdasarkan penyemak imbas yang digunakan (Chrome, Firefox atau IE)
- 5 cara untuk mengosongkan atau memadam kandungan fail besar di Linux »