Cara Redirect URL non-www ke www di Nginx
Pengunjung website Anda mungkin mengakses domain Anda menggunakan format non-www (seperti nusa.id) atau format www (seperti www.nusa.id). Mengizinkan kedua format ini diakses tanpa redirect dapat menurunkan performa SEO karena mesin pencari mengidentifikasinya sebagai konten duplikat. Mengaktifkan redirect permanen (301) menggunakan server block Nginx memastikan seluruh traffic mengalir ke satu varian URL yang konsisten.
Prasyarat Cara Redirect non-www ke www Nginxโ
Sebelum memulai konfigurasi, pastikan Anda telah memenuhi beberapa persyaratan berikut:
- Server yang menjalankan Nginx. Anda dapat menggunakan Nusa Cloud VPS sebagai lingkungan server Anda.
- Akses administratif ke server (user dengan hak akses
sudo). - Nama domain yang sudah aktif dan terarah ke alamat IP public server Anda (A record untuk
domainanda.iddanwww.domainanda.id).
Lingkungan Pengujianโ
Langkah-langkah dalam panduan ini telah diuji pada spesifikasi lingkungan berikut:
- Sistem Operasi: Ubuntu 24.04 LTS (Noble Numbat)
- Versi Nginx: Nginx 1.24.0 (paket bawaan repositori Ubuntu)
- Domain Pengujian:
nusa.iddanwww.nusa.id - Alamat IP Server:
203.0.113.50
Konfigurasi Server Block Nginxโ
Untuk melakukan redirection dengan benar, Anda harus memisahkan server block untuk domain asal (yang akan di-redirect) dan domain tujuan (URL utama). Hindari melakukan redirect menggunakan blok kondisional if di dalam satu server block karena dapat memengaruhi performa pemrosesan Nginx.
Langkah 1: Redirect non-www ke wwwโ
Jika Anda ingin menjadikan www.nusa.id sebagai URL utama Anda, ikuti konfigurasi berikut. Buka atau edit file konfigurasi Nginx untuk domain Anda menggunakan text editor pilihan Anda.
# Menggunakan nano:
sudo nano /etc/nginx/sites-available/nusa.id.conf
# Menggunakan vim:
sudo vim /etc/nginx/sites-available/nusa.id.conf
Tambahkan konfigurasi berikut ke dalam file:
# Server block untuk redirect non-www ke www
server {
listen 80;
listen [::]:80;
server_name nusa.id;
return 301 http://www.nusa.id$request_uri;
}
# Server block utama untuk melayani konten www
server {
listen 80;
listen [::]:80;
server_name www.nusa.id;
root /var/www/nusa.id/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
Langkah 2: Redirect www ke non-wwwโ
Sebaliknya, jika Anda lebih memilih nusa.id sebagai URL utama tanpa www, gunakan konfigurasi server block berikut ini. Buka kembali file konfigurasi Anda:
# Menggunakan nano:
sudo nano /etc/nginx/sites-available/nusa.id.conf
# Menggunakan vim:
sudo vim /etc/nginx/sites-available/nusa.id.conf
Ganti isinya dengan konfigurasi di bawah ini:
# Server block untuk redirect www ke non-www
server {
listen 80;
listen [::]:80;
server_name www.nusa.id;
return 301 http://nusa.id$request_uri;
}
# Server block utama untuk melayani konten non-www
server {
listen 80;
listen [::]:80;
server_name nusa.id;
root /var/www/nusa.id/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
Langkah 3: Mengaktifkan Konfigurasi dan Restart Nginxโ
Setelah menyimpan konfigurasi, buat symbolic link file tersebut ke direktori sites-enabled jika belum dilakukan:
sudo ln -sf /etc/nginx/sites-available/nusa.id.conf /etc/nginx/sites-enabled/
Selalu lakukan pengujian sintaks konfigurasi Nginx sebelum memuat ulang service untuk menghindari website down akibat kesalahan penulisan:
sudo nginx -t
Jika sintaks sudah benar, output berikut akan ditampilkan:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Restart service Nginx untuk menerapkan perubahan:
sudo systemctl restart nginx
Pengujian Fungsionalโ
Untuk memastikan proses redirect berjalan sesuai rencana secara end-to-end, lakukan pengujian request HTTP menggunakan perintah curl dari komputer lokal atau server lain. Perintah ini mengecek header respon HTTP tanpa mengunduh seluruh isi halaman.
curl -I http://nusa.id
Output yang menunjukkan redirect sukses (HTTP 301 Moved Permanently) akan terlihat seperti ini:
HTTP/1.1 301 Moved Permanently
Server: nginx/1.24.0 (Ubuntu)
Date: Sat, 13 Jun 2026 03:00:00 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: http://www.nusa.id/
Perhatikan baris Location: http://www.nusa.id/ yang menegaskan bahwa server mengarahkan client ke domain tujuan dengan benar.
Troubleshootingโ
Berikut adalah beberapa kendala umum yang sering terjadi saat mengonfigurasi redirect domain di Nginx beserta solusinya:
1. ERR_TOO_MANY_REDIRECTS (Infinite Redirect Loop)โ
- Gejala: Browser menampilkan pesan error "Page isn't redirecting properly" atau "ERR_TOO_MANY_REDIRECTS".
- Penyebab: Kedua server block dikonfigurasi untuk saling mengarahkan satu sama lain. Misalnya, blok non-www mengarah ke www, dan blok www mengarah ke non-www, atau ada konfigurasi bentrok di aplikasi web (seperti WordPress).
- Diagnostik: Periksa file
/etc/nginx/sites-available/nusa.id.confdan pastikan instruksireturn 301hanya ada di satu server block. - Perbaikan: Koreksi salah satu blok agar melayani konten secara langsung (menggunakan direktif
rootdanindex) bukannya melakukan redirect balik.
2. Konfigurasi Tidak Berefek (Domain Tetap Diakses Tanpa Redirect)โ
- Gejala: Pengunjung dapat membuka domain asal dan tujuan tanpa ada pengalihan halaman.
- Penyebab: File konfigurasi belum di-link ke direktori
sites-enabled, atau service Nginx belum di-restart dengan benar. - Diagnostik: Jalankan
ls -l /etc/nginx/sites-enabled/untuk memastikan symbolic link file konfigurasi Anda mengarah dengan benar ke file disites-available. - Perbaikan: Jalankan kembali perintah
sudo ln -sf /etc/nginx/sites-available/nusa.id.conf /etc/nginx/sites-enabled/lalu muat ulang Nginx dengansudo systemctl reload nginx.
3. Error Koneksi SSL Mismatch Saat HTTPSโ
- Gejala: Pengunjung mendapatkan peringatan keamanan SSL saat mencoba mengakses domain asal lewat protokol HTTPS sebelum redirect terjadi.
- Penyebab: Server block redirect Anda belum mendengarkan port 443 (HTTPS) atau tidak memiliki sertifikat SSL terinstal untuk domain asal. Nginx harus menyelesaikan SSL handshake terlebih dahulu sebelum dapat mengirimkan respons redirect 301.
- Diagnostik: Periksa apakah domain asal (
nusa.id) sudah terdaftar di sertifikat SSL Anda. - Perbaikan: Gunakan Let's Encrypt Certbot untuk membuat sertifikat SSL multi-domain (SAN) yang mencakup
nusa.iddanwww.nusa.id, lalu tambahkan sertifikat tersebut ke kedua server block.
Verifikasiโ
Langkah verifikasi akhir dilakukan dengan memvalidasi redirect pada jalur path dan query string spesifik untuk menjamin parameter URL tidak hilang saat pengalihan terjadi:
curl -I http://nusa.id/blog/artikel-baru?page=2
Respon verifikasi yang sukses harus meneruskan request path secara lengkap ke domain utama:
HTTP/1.1 301 Moved Permanently
Server: nginx/1.24.0 (Ubuntu)
Date: Sat, 13 Jun 2026 03:05:00 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: http://www.nusa.id/blog/artikel-baru?page=2
Pastikan baris Location mencakup /blog/artikel-baru?page=2. Hal ini membuktikan penulisan $request_uri pada direktif return 301 berfungsi mempertahankan struktur URL secara dinamis.
