Ini adalah nginx conf saya saat ini:
server {
listen 90;
server_name www.domain.com www.domain2.com;
root /root/app;
location / {
try_files $uri =404;
}
location ~ /([-\w]+)/(\w+)/ {
proxy_pass bla bla
}
}
berfungsi dengan baik, keduanya www.domain.com
dan www.domain2.com
melayani konten yang sama.
sekarang saya ingin menambahkan
jika pengguna mengunjungi www.domain.com dan agen pengguna adalah xxx lalu redirect ke www.domain2.com
Saya sudah mencari dan mencoba banyak metode tetapi tidak satupun yang berhasil.
Jawaban:
Ada dua cara untuk memperbaiki masalah ini.
Memiliki dua blok "server" yang terpisah untuk www.domain.com & www.domain2.com dan tambahkan baris aturan berikut ke blok "server" www.domain.com. Ini adalah cara yang disarankan untuk mengatasi masalah ini.
Jika Anda ingin mengelola pengalihan dengan satu blok "server" untuk kedua domain, Coba aturan di bawah ini
sumber
Langkah 1: Memiliki dua blok server, masing-masing satu untuk domain.com dan domain2.com.
Langkah 2: Gunakan jika benar karena jahat jika digunakan secara tidak benar.
Inilah solusi lengkapnya ...
sumber
Cara yang disarankan mungkin akan menggunakan
map
, juga karena variabel-variabel ini dievaluasi hanya ketika mereka digunakan.Juga penggunaan
return 301 ...
lebih disukai daripada penulisan ulang, karena tidak ada ekspresi reguler yang harus dikompilasi.Di sini contoh di mana host dan agen-pengguna sebagai string gabungan dibandingkan dengan regex tunggal:
Dan ini bisa menjadi lebih fleksibel, misalnya jika tidak ada 2 tetapi lebih banyak domain yang terlibat.
Di sini kami memetakan
www.domain.com
dengan agen-pengguna yang dimulai denganAgent
kehttp://www.domain2.com
danwww.domain2.com
dengan agen-pengguna yang tepatOther Agent
untukhttp://www.domain3.com
:NB, Anda membutuhkan nginx 0.9.0 atau lebih tinggi agar string bersambung di peta berfungsi.
sumber