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/$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. 😀

7 Comments

    1. Halo mas Syarif, gimana mas maksudnya? Di Nginx ga ada htaccess soalnya. Jadi kode diatas diletakkan dalam konfigurasi virtual host untuk website Prestashopnya.

  1. Saya blm nemu kalau konfigurasi buat joomla mas. Saya pakai nginx php-fpm, salah satu website joomla saya tdk bisa friendly url karena pakai nginx. Terpaksa setingan friendly url saya disable, supaya tetep bisa diakses. Hehe

    1. Pakai kode ini gagal mas?

      location / {
            try_files $uri $uri/ /index.php?$args;
         }

      Pakai Joomla versi berapa ya? Bisa dicopaskan isi lengkap kode virtual hostnya?

    1. Sudah coba dimasukkan kedelam blok server{} mas? Yang blok kode location{} berserta isinya maksud saya.

Tinggalkan Balasan ke khan Batalkan balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *