Hi dev, maaf baru saja situs ini down selama beberapa menit karena sedang saya maintenance. Kira-kira apa alasan saya melakukan ini?
Oke jujur, sudah 3 hari belakangan ini saya sangat sibuk sekali di dunia nyata, hingga tak sempat menyentuh situs ini sebentarpun. Tidak terasa akhir pekanpun tiba, dan beruntung saya ada waktu luang untuk menengok forum tercinta ini.
Jadi begini, seperti biasa saya cek keyword di google seputar forum ini, dan ternyata posisi index domain root saya berubah menjadi ada www-nya. Lalu coba saya buka, ternyata situs tidak berjalan properly yang disebabkan default base_url
forum ini adalah tanpa www
.
Oke, seketika saya GERCEP mengeluarkan jurus google-fu untuk mengatasi masalah ini. Sempat trial and error, tapi pada akhirnya setelah membaca lebih dari 3 referensi akhirnya saya baru paham.
Kesimpulan
Untuk melakukan permanent redirect (301) via Nginx config, kita tidak boleh meletakkan baris kode dalam blok server ini kedalam blok server lain yang sudah ada, itu nanti akan menyebabkan error;
ERR_TOO_MANY_REDIRECTS
Maka, agar terhindar dari error tersebut, letakkan saja satu blok kode ini ke baris paling bawah file config nginx Anda, caranya;
Arahkan terminal anda ke lokasi ini /etc/nginx/sites-available
dan buka konfigurasi virtual host situs terkait menggunakan nano.
COPAS, blok kode di bawah ini dan taruh ke baris paling bawah di luar blok server yang sudah ada. Jangan lupa ganti example
dengan nama domain kamu.
server {
listen 80;
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}
Atau sedikit modifikasi blok server hasil instalasi certbot.
server {
if ($host = www.bundet.com) {
return 301 https://bundet.com$request_uri; #<== modif bagian ini!
} # managed by Certbot
if ($host = bundet.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name bundet.com www.bundet.com;
return 404; # managed by Certbot
}
Blok server diatas hanya berlaku untuk protokol http, akan tetapi letsencrypt saya sudah meng-generate konfigurasi yang sekaligus meredirect http ke https, itulah kenapa kita cukup membuat blok server redirect untuk port 80 saja (jalur protokol http).
Ok, langsung simpan, restart service nginx, beres!
Konfigurasi Ekstra
Untuk mengoptimalkan tujuan utama, yaitu saya tidak ingin www saya terindex oleh google, maka saya perlu memberitahu spider google agar tidak sembarangan merayapi situs saya, maka saya tambahkan jalur sitemap di file robots.txt.
User-agent: Googlebot
Disallow:
User-agent: MJ12bot
Disallow:
User-agent: msnbot
Disallow:
User-agent: Bingbot
Disallow:
User-agent: Yahoo-slurp
Disallow:
User-agent: Slurp
Disallow:
User-agent: Mediapartners-Google
Disallow:
User-agent: Googlebot-Mobile
Disallow:
User-agent: AdsBot-Google
Disallow:
User-agent: Yahoo-MMCrawler
Disallow:
User-agent: Twitterbot
Disallow:
User-agent: Facebot
Disallow:
User-agent: *
Disallow: /
Sitemap: https://bundet.com/sitemap.xml
Selain itu, saya juga melakukannya untuk konfigurasi file .htaccess
# Redirect Pages www to root
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
Peringatan!
Jika Anda sudah melakukan dengan benar, sesuai dengan tutorial ini, tapi ketika Anda uji di browser apapun masih belum bekerja, maka JANGAN PANIK!, sebab itu hanya masalah cache & history browser Anda. Jadi silakan netralkan dulu browser Anda sebelum mengujinya. Jika Anda tidak yakin dengan tindakan itu, silakan gunakan browser HP Anda, atau download Tor Browser untuk mengujinya!
Redirect Subdomain ke Domain Root via htaccess
Katakanlah saya punya domain bundet.com & punya subdomain sig.bundet.com
Katakanlah subdomain saya sudah punya jam terbang tinggi di awan sejak 2001, sehingga banyak sekali link-link bertebaran diluar sana.
Suatu ketika saya berniat ingin menutup subdomain tersebut karena alasan tertentu, tanpa ingin kehilangan traffic dari link-link yang telah tersebar di berbagai pelosok jagat maya ini. Jadi saya perlu me-redirect subdomain tersebut ke domain bundet.com
Lalu adakah cara terbaik untuk meng-handle ide saya tersebut?
Penyelesaian
Tentu saja bisa, jika pada kasus ini kamu tidak menghapus semua halaman yang dimiliki subdomain, maka kamu dapat melakukannya dengan javascript dengan meletakan kode ini di setiap halaman yang dimiliki subdomain, atau jadi satu dengan konten, atau bisa juga diletakan di header / footer. Cara ini akan kami ulas lebih detail di halaman lain.
Kembali ke topik utama, jadi ada cara terbaik untuk melakukannya, yaitu menggunakan .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} subdomain.domain.com
RewriteRule /(.*) http://domain.com [R=301,L]
</IfModule>
Good luck!