Solusi 1:
Opsi Anda 1:
return 301 $scheme://$host$request_uri;
Persis seperti yang Anda inginkan.
Tidak yakin mengapa rewrite ^ http://$host$request_uri? permanent;
baris akan menghasilkan 302, bukan 301. Itu sintaks yang tepat untuk memaksanya mengembalikan 301.
Solusi 2:
Secara teknis, Anda dapat menggunakan kedua opsi tersebut. Mereka bisa bekerja.
Menurut dokumentasi NGINX, gunakan return
jika Anda bisa . Ini lebih sederhana dan lebih cepat karena NGINX berhenti memproses permintaan (dan tidak harus memproses regex). Lebih dari itu, Anda dapat menentukan kode di 3xx seri:
return (301 | 302 | 303 | 307) url;
Jika Anda memiliki skenario di mana Anda perlu memvalidasi URL dengan regex atau perlu menangkap elemen di URL asli (yang jelas tidak ada dalam variabel NGINX yang sesuai), maka Anda harus menggunakan rewrite
. Anda harus tahu bahwa rewrite
hanya mengembalikan kode 301 atau 302.
rewrite regex URL [flag];
Anda dapat membaca selengkapnya tentang pengembalian dan penulisan ulang di situs web NGINX.