2013-02-15 27 views
14

Chcę uzyskać dostęp do mojej aplikacji symfony w pliku env produkcji (http://www.sample.com/amateur1/web/app.php) z tego adresu URL: http://www.sample.com/amateur1.Jak wdrożyć Symfony2 na współdzielonym hostingu?

Aby to zrobić przeniosłem plik .htacces do http://www.sample.com/amateur1/.htaccess z tej treści:

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteBase /web/ 

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

Ale kiedy idę do http://www.sample.com/amateur1 pokazuje błąd 404, a prod.log nie jest napisane.

użyłem również RewriteBase /amateur1/web/ bo nie wiem, czy RewriteBase ścieżka jest w stosunku do DocumentRoot serwera lub z katalogu, w którym plik .htaccessznajduje. Próbowałem też /amateur1 i /amateur1/ jako RewriteBase powodu tej odpowiedzi Symfony2: How to deploy in subdirectory (Apache)

z trzema spróbować, tym strona Wyjątki pojawia pierwotnych ustawień, a nie ładowanie dowolnego obrazu. Ale pojawia się następujący błąd w pliku 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 [] [] 

Co robię źle?

+0

Czy sprawdziłeś plik config.php? Pokazuje brakujące wymagania –

Odpowiedz

23

W konfiguracji Apache używa public_html jako głównego dokumentu

Jeśli Symfony2 jest zainstalowany w katalogu /home/u105859802/public_html/amateur1, katalog publiczny Symfony służyć ma /home/u105859802/public_html/amateur1/web/

Należy użyć

RewriteBase /amateur1/web/ 

Ale uwaga, to nie jest bezpieczne
Masz aby chronić swoje katalogi z symfony! (konfiguracja jest dostępna)

Dlaczego nie spróbujesz przenieść swoich plików symfony w swoim prywatnym obszarze?
Można zmienić nazwę katalogu stron Symfony do public_html

Zobacz how to do that in documentation cookbook

Więc moja struktura zalecenie wygląda jak poniżej:

  • /home/u105859802/
    • sprzedawca
    • src
    • app
    • bin
    • public_html (web domyślnie w Symfony2) < - jedyny katalog publiczny
+0

Czy chcesz przenieść mój katalog sf do */home/u105859802/amatorski1/* będąc rodzeństwem (bratem) */home/u105859802/public_html/* I wprowadzając do */public_html/* dir zawartość mojego */web/* directoy. Następnie plik * public_html/.htaccess * powinien przekierować wszystko do aplikacji bez * RewriteBase * lub po prostu * RewriteBase/* w prawo? w ten sposób 'RewriteRule^(. *) $ app.php [QSA, L]'. – Jeflopo

+0

Nie mogę teraz tego wypróbować, pozwól, że spróbuję, zanim przyjmiesz odpowiedź. Dziękuję za te przydatne informacje! – Jeflopo

+0

Pracował jak urok !!! TY – Jeflopo

0

W większości dzielonego hostingu, nie można zastąpić ustawienia Apache w tym przypadku może potrzebować zawrzeć regułę przekierowania.Plik htaccess

Options +FollowSymLinks +ExecCGI 

RewriteEngine On 

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

to zasada, której użyłem w moim projekcie. Może być konieczne podanie pełnych ścieżek do zasobów w inny sposób, w jaki nie zostaną one załadowane.