Menggunakan Friendly URL PrestaShop pada Nginx
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/\/\$2.jpg last;
rewrite ^/lokasi_prestashop/([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /lokasi_prestashop/img/p/\/\/\$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/\/\/\/\$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/\/\/\/\/\$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/\/\/\/\/\/\$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/\/\/\/\/\/\/\$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/\/\/\/\/\/\/\/\$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/\/\/\/\/\/\/\/\/\$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/\$2.jpg last;
rewrite ^/lokasi_prestashop/c/([a-zA-Z-]+)/[a-zA-Z0-9-]+.jpg$ /lokasi_prestashop/img/c/\.jpg last;
rewrite ^/lokasi_prestashop/([0-9]+)(-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*.jpg$ /lokasi_prestashop/img/c/\$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. 😀