Skip to main content
๐Ÿš€ nusa.id cloud server linux indonesialihat paket

Cara Redirect URL non-www ke www di Nginx

ยท 5 min read
Aidil Putra
Maintainer

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.id dan www.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.id dan www.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.conf dan pastikan instruksi return 301 hanya ada di satu server block.
  • Perbaikan: Koreksi salah satu blok agar melayani konten secara langsung (menggunakan direktif root dan index) 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 di sites-available.
  • Perbaikan: Jalankan kembali perintah sudo ln -sf /etc/nginx/sites-available/nusa.id.conf /etc/nginx/sites-enabled/ lalu muat ulang Nginx dengan sudo 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.id dan www.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.