2013-02-15 20 views
14

Desidero accedere alla mia app symfony in produzione env (http://www.sample.com/amateur1/web/app.php) da questo URL http://www.sample.com/amateur1.Come distribuire Symfony2 su un hosting condiviso?

per farlo ho trasferito il file Htacces per http://www.sample.com/amateur1/.htaccess con questo contenuto:

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteBase /web/ 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ app.php [QSA,L] 
</IfModule> 

Ma quando vado a http://www.sample.com/amateur1 mostra un errore 404, e prod.log non è scritto.

Ho anche usato RewriteBase /amateur1/web/ perché io non so se RewriteBase percorso è relativo alla DocumentRoot del server, o al percorso in cui si trova il file .htaccess . Abbiamo anche provato /amateur1 e /amateur1/ come RewriteBase a causa di questa risposta Symfony2: How to deploy in subdirectory (Apache)

con i tre prova del, la pagina Eccezioni appare senza stile, e non il caricamento di qualsiasi immagine. Ma poi ho il seguente errore nel file prod.log:

[2013-02-15 02:06:47] request.ERROR: Symfony\Component\HttpKernel\Exception\NotFoundHttpException: No route found for "GET /amateur1/" (uncaught exception) at /home/u105859802/public_html/amateur1/app/cache/prod/classes.php line 5121 [] [] 

Cosa sto facendo male?

+0

Hai controllato config.php? Ti mostra i requisiti mancanti –

risposta

23

Nella configurazione, Apache utilizza public_html come la radice del documento

Se Symfony2 è installato nella directory /home/u105859802/public_html/amateur1, la directory pubblica Symfony per servire è /home/u105859802/public_html/amateur1/web/

Si dovrebbe usare

RewriteBase /amateur1/web/ 

Ma attenzione, non è sicuro
Hai per proteggere le tue directory di symfony! (la configurazione è accessibile)

Perché non provi a spostare i tuoi file symfony nella tua area privata?
È possibile rinominare la directory web Symfony di public_html

Vedi how to do that in documentation cookbook

Quindi, la mia struttura raccomandazione si presenta come di seguito:

  • /home/u105859802/
    • fornitore
    • src
    • app
    • bin
    • public_html (web di default in Symfony2) < - l'unica directory pubblica
+0

Intendi spostare la mia cartella sf a */home/u105859802/amateur1/* essere un fratello (fratello) di */home/u105859802/public_html/* e inserire in */public_html/* dir il contenuto del mio */web/* indirizzo. Quindi il file * public_html/.htaccess * dovrebbe semplicemente reindirizzare tutto all'app senza * RewriteBase * o semplicemente * RewriteBase/* giusto? in questo modo 'RewriteRule^(. *) $ app.php [QSA, L]'. – Jeflopo

+0

Non posso provarlo ora, fammi provare prima di accettare la risposta. Grazie per queste utili informazioni! – Jeflopo

+0

Ha funzionato come un fascino !!! TY – Jeflopo

0

Nella maggior parte delle impostazioni di hosting condiviso, non si può ignorare Apache in quel caso potrebbe essere necessario correggere una regola di reindirizzamento inhtaccess file

Options +FollowSymLinks +ExecCGI 

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [NC] 
RewriteRule !^projectName/ /projectName/web/app.php/%{REQUEST_URI} [L,NC] 

questa è la regola che ho utilizzato nel mio progetto. Potrebbe essere necessario fornire percorsi completi alle risorse in altri modi in cui non verranno caricati.

Problemi correlati