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 <b>servernesia.com/?p=123</b>
menjadi <b>servernesia.com/halo-dunia/</b>
, 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.
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.
Terima kasih, artikel sangat membantu, problem saya terselesaikan
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
Mas pakai perintah ini jadinya?
ee site create nama_domain.com
Ini mas usernya pakai root bukan?
iya bener bang
Itu masalahnya di hak akses direktorinya mas. Mestinya tidak jadi masalah kalau pakai root.
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.
nice info gan, sangat membantu
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
Hmm… mungkin konflik dengan proses file PHP mas, kan memang ekstensinya pakai .php untuk penamaannya.
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
Boleh tahu mas ini pakai Nginxnya darimana? Install sendiri manual? Lewat script? Atau panel web?
@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?
Solved: ternyata di arahkan settinganya di file php-fpm. Thanks ya