Akhir minggu diminta teman yang baru saja pindahan hosting websitenya dari shared hosting ke VPS, tapi yang jadi masalah ini jelas ada sedikit perbedaan yang sebelumnya cPanel (Apache/LiteSpeed) menjadi Nginx. Yang paling terasa sih masalah Friendly URL yang kalau tidak disetel lagi akan otomatis semua link menjadi 404 Not Found
. Jangan sampai terjadi kan? Apalagi ini online shop, bisa runyam kalau pengunjung tidak bisa belanja.
Kalau untuk mengaktifkannya saya yakin anda sudah tahu, tinggal akses Preferences > SEO and URLs dan ubah opsi Friendly URL jadi Yes. Selesai. Ini dari sisi PrestaShop, dan akan otomatis berfungsi kalau menggunakan Apache karena masih mendukung .htaccess
. Lha kalau di Nginx jelas tidak didukung.
Nah… untuk Nginx maka kita perlu menambahkan dukungan konversi URLnya dengan memanfaatkan fitur Rewrite
, silahkan tambahkan kode berikut dalam konfigurasi virtual hostnya. Ini saya coba diterapkan pada PrestaShop 1.6.1.5.
location /lokasi_prestashop/ {
index /lokasi_prestashop/index.php;
rewrite ^/lokasi_prestashop/api/?(.*)$ /lokasi_prestashop/webservice/dispatcher.php?url=$1 last;
rewrite ^/lokasi_prestashop/([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /lokasi_prestashop/img/p/$1/$1$2.jpg last;
rewrite ^/lokasi_prestashop/([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /lokasi_prestashop/img/p/$1/$2/$1$2$3.jpg last;
rewrite ^/lokasi_prestashop/([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /lokasi_prestashop/img/p/$1/$2/$3/$1$2$3$4.jpg last;
rewrite ^/lokasi_prestashop/([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /lokasi_prestashop/img/p/$1/$2/$3/$4/$1$2$3$4$5.jpg last;
rewrite ^/lokasi_prestashop/([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /lokasi_prestashop/img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6.jpg last;
rewrite ^/lokasi_prestashop/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /lokasi_prestashop/img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7.jpg last;
rewrite ^/lokasi_prestashop/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /lokasi_prestashop/img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8.jpg last;
rewrite ^/lokasi_prestashop/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /lokasi_prestashop/img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9.jpg last;
rewrite ^/lokasi_prestashop/c/([0-9]+)(-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*.jpg$ /lokasi_prestashop/img/c/$1$2.jpg last;
rewrite ^/lokasi_prestashop/c/([a-zA-Z-]+)/[a-zA-Z0-9-]+.jpg$ /lokasi_prestashop/img/c/$1.jpg last;
rewrite ^/lokasi_prestashop/([0-9]+)(-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*.jpg$ /lokasi_prestashop/img/c/$1$2.jpg last;
try_files $uri $uri/ /lokasi_prestashop/index.php?$args;
}
Jangan lupa gantikan lokasi_prestashop
dengan direktori tempat hostingnya dalam server anda.
Langkah terakhir silahkan muat ulang konfigurasi Nginx setelahnya:
service nginx reload
Selesai. 🙂
*OOT saja, ini saya lihat kok rewrite rulesnya PrestaShop sungguh rumit sekali. Haha. 😀