Untuk mengkonfigurasi Apache untuk melayani kandungan yang berbeza berdasarkan ejen pengguna, anda boleh menggunakan modul mod_rewrite
bersama -sama dengan Arahan RewriteCond
untuk menyemak ejen pengguna dan kemudian memohon arahan RewriteRule
untuk melayani kandungan yang berbeza. Berikut adalah panduan langkah demi langkah untuk melakukan ini:
Dayakan Modul mod_rewrite
: Pastikan bahawa mod_rewrite
diaktifkan dalam konfigurasi Apache anda. Anda boleh melakukan ini dengan menjalankan:
<code>sudo a2enmod rewrite</code>
Kemudian, mulakan semula Apache untuk memohon perubahan.
httpd.conf
atau apache2.conf
) atau fail .htaccess
anda, bergantung pada persediaan anda.Sediakan RewriteEngine : Pada permulaan bahagian konfigurasi anda, aktifkan enjin penulisan semula:
<code>RewriteEngine On</code>
Tentukan RewriteCond dan Rewriterule : Gunakan RewriteCond
untuk menyemak ejen pengguna dan RewriteRule
untuk menentukan kandungan untuk berkhidmat. Sebagai contoh, untuk melayani halaman yang berbeza untuk pengguna mudah alih dan desktop:
<code>RewriteCond %{HTTP_USER_AGENT} "Android|iPhone|iPad" [NC] RewriteRule ^/$ /mobile/index.html [L] RewriteCond %{HTTP_USER_AGENT} "!Android|iPhone|iPad" [NC] RewriteRule ^/$ /desktop/index.html [L]</code>
Contoh ini memeriksa jika rentetan ejen pengguna mengandungi "android", "iPhone", atau "iPad" dan mengalihkannya ke /mobile/index.html
, sementara pengguna lain diarahkan ke /desktop/index.html
.
Apabila menggunakan pengesanan ejen pengguna dengan Apache, penting untuk mengikuti amalan terbaik untuk memastikan konfigurasi yang cekap, boleh dipercayai, dan dikekalkan:
RewriteCond
boleh menjadi kuat tetapi juga rawan kesilapan. Uji regex anda dengan teliti.Untuk menguji jika konfigurasi ejen pengguna Apache anda berfungsi dengan betul, ikuti langkah -langkah berikut:
Perintah Curl : Anda boleh menggunakan curl
dari baris arahan untuk menguji ejen pengguna yang berbeza:
<code>curl -A "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1" http://yourserver.com</code>
Gantikan rentetan ejen pengguna dan URL seperti yang diperlukan.
Ya, anda boleh menggunakan fail .htaccess
Apache untuk melaksanakan kandungan kandungan berasaskan ejen pengguna. Fail .htaccess
digunakan untuk membuat perubahan konfigurasi pada dasar per-direktori dan sangat berguna jika anda tidak mempunyai akses ke fail konfigurasi Apache utama.
Berikut adalah cara anda boleh melaksanakan kandungan berasaskan ejen pengguna yang menggunakan .htaccess
:
Dayakan .htaccess : Pastikan arahan AllowOverride
dalam fail konfigurasi Apache utama anda ditetapkan kepada All
untuk direktori di mana .htaccess
terletak. Ini membolehkan fail .htaccess
untuk mengatasi tetapan:
<code><directory> AllowOverride All </directory></code>
.htaccess
dalam direktori di mana anda mahu peraturan memohon. Tambahkan Peraturan Tulis semula : Tambahkan peraturan berikut ke fail .htaccess
anda:
<code>RewriteEngine On RewriteCond %{HTTP_USER_AGENT} "Android|iPhone|iPad" [NC] RewriteRule ^/$ /mobile/index.html [L] RewriteCond %{HTTP_USER_AGENT} "!Android|iPhone|iPad" [NC] RewriteRule ^/$ /desktop/index.html [L]</code>
.htaccess
dan uji konfigurasi anda seperti yang diterangkan dalam bahagian sebelumnya. Menggunakan .htaccess
untuk pengesanan ejen pengguna adalah mudah tetapi boleh memberi kesan kepada prestasi, terutamanya jika anda mempunyai banyak peraturan. Untuk aplikasi berskala besar, selalunya lebih baik menggunakan fail konfigurasi Apache utama.
Atas ialah kandungan terperinci Bagaimanakah saya mengkonfigurasi Apache untuk melayani kandungan yang berbeza berdasarkan ejen pengguna?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!