Rewrite dan redirect adalah fitur penting Nginx untuk memodifikasi URL, mengarahkan traffic, dan menjaga SEO.
Fitur ini digunakan untuk mengubah request URL, melakukan redirect permanen atau sementara, dan menangani URL dinamis menggunakan regex.
Contents
1. Rewrite URL dengan rewrite
Directive rewrite digunakan untuk mengubah URL request sebelum diproses lebih lanjut.
Contoh dasar:
location /old/ {
rewrite ^/old/(.*)$ /new/$1 permanent;
}
^/old/(.*)$→ regex untuk menangkap path setelah/old//new/$1→ path baru,$1adalah hasil capturepermanent→ menghasilkan HTTP 301 (redirect permanen)
Tips:
- Gunakan rewrite untuk struktur URL baru atau migrasi halaman
- Bisa digunakan di
serverblock ataulocationblock
2. Redirect 301 / 302
Nginx mendukung redirect permanen (301) dan sementara (302) menggunakan directive return.
Redirect permanen (301):
server {
listen 80;
server_name www.example.com;
return 301 https://example.com$request_uri;
}
Redirect sementara (302):
location /temp/ {
return 302 /new-location/;
}
$request_uri→ mempertahankan path dan query stringreturnlebih cepat daripadarewritejika hanya melakukan redirect
3. Regex di location
location di Nginx bisa menggunakan regex untuk match URL kompleks.
Contoh:
location ~* \.(jpg|jpeg|png|gif)$ {
expires 30d;
add_header Cache-Control "public";
}
~*→ regex case-insensitive- Berguna untuk mengatur cache atau redirect file tertentu
Contoh redirect regex:
location ~ ^/old-section/(.*)\.html$ {
return 301 /new-section/$1/;
}
- Menangkap file
.htmldi/old-section/dan redirect ke/new-section/
4. Penggunaan return dan try_files
4.1 return
- Lebih sederhana untuk redirect langsung atau mengembalikan kode status tertentu
Contoh:
location /maintenance.html {
return 503;
}
- Mengembalikan HTTP 503 saat maintenance
4.2 try_files
- Memeriksa keberadaan file/folder dan fallback jika tidak ditemukan
Contoh:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
$uri→ file yang diminta$uri/→ folder jika file tidak ada/index.php?$query_string→ fallback ke PHP jika file/folder tidak ditemukan
Manfaat:
- Digunakan untuk framework PHP/Node.js seperti Laravel, WordPress, atau React SPA
- Mengurangi kebutuhan rewrite kompleks
5. Contoh Kombinasi Rewrite dan Redirect
server {
listen 80;
server_name example.com www.example.com;
# Redirect www ke non-www
if ($host = 'www.example.com') {
return 301 https://example.com$request_uri;
}
root /var/www/html/example;
index index.html index.php;
# Rewrite old URLs
location /old-section/ {
rewrite ^/old-section/(.*)$ /new-section/$1 permanent;
}
# Handle SPA / fallback
location / {
try_files $uri $uri/ /index.html;
}
}
- Mengarahkan www ke non-www
- Redirect halaman lama ke struktur baru
- SPA fallback menggunakan
try_files
6. Kesimpulan
Dengan rewrite dan redirect di Nginx, kamu dapat:
- Mengubah URL lama ke URL baru menggunakan
rewrite - Mengarahkan traffic permanen atau sementara dengan
return301/302 - Menggunakan regex di
locationuntuk URL kompleks - Mengatur fallback file dengan
try_files - Menjaga SEO dan pengalaman pengguna tetap baik saat migrasi atau struktur URL berubah