Categorie
Fatti privati in blog pubblico

How-to: migrare PrestaShop da una sottocartella alla root

Hai migrato Prestashop come faresti con altri CMS ma non funziona più niente nel BackOffice? Forse non viene puntato qualche script…

Esattamente in questo periodo, lo scorso anno ero alle prese con la mia prima esperienza su una piattaforma CMS per un e-commerce. La piattaforma in questione è Prestashop, open source con una discreta community di sviluppatori che ruota attorno al CMS, molto disponibili e collaborativi: ho frequentato abbastanza spesso il forum alla ricerca di tips e devo dirmi soddisfatta degli aiuti virtuali ricevuti. Mi è anche capitato di darne, di aiuti. E di segnalare un bug, tutt’ora non fissato per la versione 1.5, ma risolto (o forse raggirato) nella versione 1.6 (che trovo molto ma molto potente).

Come faccio spessissimo, ho installato e lavorato installando il CMS in una sottocartella, piuttosto che in root. Non sono abituata a lavorare in locale e poi migrare, piuttosto lavoro sempre on-line: il cliente può controllare l’avanzamento dei lavori e dare pareri su layout o appuntare correzioni di contenuto mentre stai lavorando, io lo trovo comodo. Quindi, al momento della pubblicazione, diciamo che ho fatto un po’ come faccio sempre, con Joomla! o WordPress: ovvero, si sposta l’index.pxp, si cambiano alcuni parametri di URL e si modifica il file .htacces. E fine. Si ricarica il sito e tutto è in ordine, come quando il sito se ne stava tranquillo nella sottocartella.

Con Prestashop diciamo che non è filato tutto liscio al primo colpo… il sito era apparentemente in ordine nel FrontOffice, ma nel BackOffice non funzionava quasi nulla… in particolare, ricordo che non si riusciva a caricare nessun prodotto, proprio perché non comparivano i pulsanti di navigazione “salva” o “annulla”… vi lascio immaginare il panico…

Il mio problema deriva dal fatto che tutte le funzioni del BackOffice richiedono delle routine in javascript e con la migrazione, nonostante l’.htacces, non venivano puntati gli script.

Come fare, dunque?

Dopo molta disperazione, e ricerche nel forum (sembrava fossi l’unica e la sola ad aver avuto l’idea di lavorare in una subfolder!) sono approdata in un topic di non so più quale forum americano, in cui uno sviluppatore raccontava di averci perso parecchio tempo (anche lui?! consolante!) e di aver trovato che la ricetta per far funzionare il tutto, sia quella che riporto di seguito:

  1. riscrivere l’.htaccess in questo modo e caricarlo nella root:
    # Non modificare questa riga - RewriteEngine on
    RewriteEngine on
    # Cambia miosito.com con il tuo dominio principale.
    RewriteCond %{HTTP_HOST} ^(www.)?miosito.com$
    # Cambia 'sottocartella' con il nome della sottocartella che usi per Prestashop.
    RewriteCond %{REQUEST_URI} !^/sottocartella/
    # Non cambiare le due righe che seguono.
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # Cambia 'sottocartella' con il nome della sottocartella che usi per Prestashop.
    RewriteRule ^(.*)$ /sottocartella/$1
    # Cambia miosito.com con il tuo dominio principale, ancora.
    # Cambia 'sottocartella' con il nome della sottocartella che usi per Prestashop
    # seguita da / quindi il file principale del tuo sito, index.php, index.html, etc.
    RewriteCond %{HTTP_HOST} ^(www.)?miosito.com$ 
    RewriteRule ^(/)?$ sottocartella/index.php [L]
  2. impostare nel BackOffice in Preferenze -> URL e SEO -> IMPOSTA L’URL DEL TUO NEGOZIO -> URL principale :”/
  3. accedere allo spazio FTP e modificare il file ‘/classes/Media.php‘, in corrispondenza dei metodi getCSSPath e getJSPath, commentando le seguenti righe di codice:
    if (Context::getContext()->controller->controller_type == 'admin')
      {
       $js_uri = preg_replace('/^'.preg_quote(__PS_BASE_URI__, '/').'/', '/', $js_uri);
       $js_uri = dirname(preg_replace('/?.+$/', '', $_SERVER['REQUEST_URI']).'a').'/..'.$js_uri;
      }
  4. salvare e ricaricare il file: TUTTO FUNZIONA PERFETTAMENTE!
Attenzione:

prima di fare qualsiasi modifica si consiglia sempre di fare il backup di tutto il sito (i files con un client FTP e il database via mySQL). Se segui questo tutorial, lo fai a tuo rischio e pericolo: anche se il sistema descritto è funzionante, perché testato da me, non mi assumo nessuna responsabilità per eventuali malfunzionamenti! 😀

Ultimo aggiornamento:

Share the love

Di Margherita Pelonara

WordPress FrontEnd Designer.
Co-founder e Organizer di WordPress Meetup Ancona.
Make-up addicted.

1 risposta su “How-to: migrare PrestaShop da una sottocartella alla root”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.