Mengaktifkan dukungan Permalink WordPress di Nginx

Sudah banyak orang yang beralih menggunakan Nginx sebagai software web servernya dari Apache, ini dikarenakan Nginx memiliki performa lebih baik dengan tingkat penggunaan resourcenya juga lebih rendah dalam melayani jumlah pengunjung yang setara. Secara singkat dan umumnya sih begitu, anda sebaiknya membuktikanya sendiri.

Begitu juga dengan WordPress si CMS (Content Management System) yang populer sebagai platform ngeblog dari pemula sampai yang mahir karena kemudahan dan banyak fitur yang bisa ditambahkan dengan plugin – pluginnya.

Permasalahan pertama bagi kita yang membuat situs baru menggunakan WordPress di Nginx atau telah melakukan migrasi adalah mengenai Permalink atau kadang disebut Friendly URL. Dijamin kalau memakai setting default akan muncul kode HTTP 404 Error Not Found pada semua halaman website anda kalau tidak dipersiapkan sebelumnya.

Permalink sendiri fungsi adalah mengubah link yang tidak ramah seperti servernesia.com/?p=123 menjadi servernesia.com/halo-dunia/, jadi lebih mudah dihapalkan manusia dan memiliki pengaruh terhadap SEO. Misal anda langsung mengaktifkan permalink WordPress tanpa melakukan pengaturan konfigurasi di Nginx maka dijamin setiap url blog anda akan muncul error 404 - Not Found. Runyam kan?

Kembali ke fokus pembicaraan kita mengenai bagaimana caranya mengaktifkan dukungan permalink ini dalam Nginx. Anda perlu membuka file konfigurasi virtual host Nginx untuk nama domain atau website anda terlebih dahulu (saya sarankan menggunakan nano text editor):

  • Webuzo: /usr/local/apps/nginx/etc/conf.d/common
  • Install manual: /etc/nginx/sites-enabled/[nama-domain-anda]
  • Install manual 2: /etc/nginx/sites-available/[nama-domain-anda]
  • VestaCP: /home/nama_user/conf/web/nginx.conf

Tentu saja abaikan yang ada di dalam kurung, gantikan dengan alamat website anda. Oh ya, biasanya lokasinya ada di salah satu direktori diatas. Jadi tidak perlu semuanya dicek dan ada.

Kemudian cari atau tambahkan kode berikut didalamnya:

  • Bila anda menggunakan domain utama (servernesia.com) maka kodenya adalah:
    location / { 
      try_files $uri $uri/ /index.php?q=$request_uri; 
    }
  • Alternatifnya bila menggunakan direktori (servernesia.com/blog/) maka:
    location /blog {
      try_files $uri $uri/ /blog/index.php?q=$request_uri;
    }

Dimana kata blog bisa digantikan dengan nama lokasi WordPress anda diinstall.

Bila sudah ada bagian location maka tinggal isikan kode try_files seluruhnya didalamnya, bila tidak maka silahkan copy-pastekan saja. Ingat, harap pilih salah satu jenis kode diatas karena fungsinya memang berbeda tergantung bagaimana struktur url website anda. Semisal dalam default location sudah ada /index.html maka hapus saja karena sudah tidak dibutuhkan.

Simpan perubahan konfigurasi vHost anda dan setelah itus restart Nginx, kalau di CentOS anda bisa mengetikkan perintah berikut:

service nginx restart

Selesai. 🙂

Silahkan anda cek kembali blog WordPress anda yang sudah diaktifkan fitur permalinknya dan semuanya akan berfungsi dengan normal.

18 pemikiran pada “Mengaktifkan dukungan Permalink WordPress di Nginx

  1. Halo mas Candra,
    kebetulan di vestacp saya pasang SSL, saya ubah nya snginx.conf ?
    tapi masih error juga, malah ketika buka halaman lain malah auto download file.

    • Halo mas Sigit, boleh tahu mas alur pemasangan SSLnya di VestaCP bagaimana? Pakai sertifikat SSL darimana juga? Soalnya di panel websitenya sendiri sudah ada setting untuk SSL, jadi agak bingung juga kok edit konfigurasi Nginx.

      Kalau halaman yang dibuka itu bukannya dimuat malah didownload itu rasanya tidak ada hubungan dengan HTTPS mas. Lain soalnya tapi memang bisa disetting dari Nginx.

  2. Bang Chandra, ane mau tanya
    ane mau pindahin website wordpress ke vps easyengine. Waktu tahap /etc/nginx/sites-enabled/[nama-domain-anda], hasilnya begini :
    -bash: /etc/nginx/sites-enabled/domainane.com: Permission denied

    Ada solusinya kah ?

    Terima kasih

      • Bang Chandra, ane boleh dikasih tahu perintah sederhana buat masalah hak akses direktori ini ? soalnya ane bingung banget. Terimakasih

      • Ini yang saya ikut bingung mas. mestinya ga terjadi masalah ini kalau sudah ikut persis dari awal.

        Ini domain atau subdomain mas? Sudah install stacknya kah? HTTPS tidak?

        Kalau mas masih ingat urutan perintah yang dieksekusi bisa dicopas disini.

        Bisa tekan tombol panah atas pas SSH kalau lupa.

      • Sore om

        punya saya juga error 404 kaya gitu
        Mau nanya, kalo domainnya pake ssl apa jadi masalah?
        Saya bingung, saya coba juga ada kata2 permission denied seperti di atas

        trus kalo domainnya udah pake cloudflare, apa juga bermasalah?

        akhirnya saya tidak jadi pake nginx hehehe
        daripada pusing 7 keliling senut-senut massss hehehe

      • Seharusnya tidak ada masalah mas. Di VPS saya yang lain ada yang mirip strukturnya.

        Kalau permission denied ya saya tebak mas ini pakai Ubuntu. Coba eksekusi pakai sudo mas.

  3. bro,
    bagaimana kalau permalink nya .php ( /%postname%.php )
    udah search tapi blum nemu juga.. bisa ga yah?

    karna masih error jadi permalink custome nya /%postname% aja deh 😀

    Thanks

  4. kenapa ya setelah saya cari tidak ada file nginx.conf
    yg ada cuman namaweb.com.nginx.conf
    pas saya ubah setting namaweb.com.nginx.conf masih tetap error 404. kecuali permalink settingnya dikembalikan ke default

  5. @hendra: di saya nginx ada di root folder usr/local/etc/nginx/nginx.conf tapi saya setting di situ dengan memasukan script seperti di atas tetep belom jalan. Padahal nginx sudha di restart. Adakah yang senasib?

Tinggalkan komentar