2013-02-15 129 views
14

我想從此url http://www.sample.com/amateur1訪問我的symfony應用程序的生產env(http://www.sample.com/amateur1/web/app.php)。如何在共享主機上部署Symfony2?

爲了做到這一點,我搬到了.htacces文件http://www.sample.com/amateur1/.htaccess與此內容:

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteBase /web/ 

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

但是,當我去http://www.sample.com/amateur1顯示404錯誤和prod.log不寫。

我也用RewriteBase /amateur1/web/,因爲我不知道如果RewriteBase路徑是相對於服務器的的DocumentRoot,或者從哪裏的.htaccess文件所在的路徑。也試過/amateur1/amateur1/作爲RewriteBase由於這個答案Symfony2: How to deploy in subdirectory (Apache)

隨着三個嘗試,例外頁面出現無風格,並沒有加載任何圖像。但後來我在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 [] [] 

我在做什麼錯了?

+0

你檢查config.php嗎?它顯示你缺少的要求 – 2013-02-15 09:01:32

回答

23

在您的配置,Apache使用public_html作爲文檔根

如果安裝目錄/home/u105859802/public_html/amateur1的Symfony2中,Symfony的公共目錄服務是/home/u105859802/public_html/amateur1/web/

您應該使用

RewriteBase /amateur1/web/ 

但要小心,這是不安全的
你有保護你的symfony目錄! (配置可訪問)

爲什麼不嘗試在你的私人區域移動你的symfony文件?
您可以重命名的Symfony web目錄到public_html

how to do that in documentation cookbook

所以,我的建議結構看起來象下面這樣:

  • /家庭/ u105859802/
    • 廠商
    • SRC
    • app
    • 的public_html<(在Symfony2中默認的Web) - 唯一的公共目錄
+0

你的意思是把我的特殊目的地轉移到*/home/u105859802/amateur1/*作爲*/home/u105859802/public_html/*的兄弟(兄弟)並放入*/public_html/* dir我的*/web/* directoy的內容。然後* public_html/.htaccess *文件應該只重定向到應用程序沒有* RewriteBase *或只是* RewriteBase/*權利?這樣'重寫規則^(。*)$ app.php [QSA,L]'。 – Jeflopo 2013-02-15 14:09:05

+0

我現在無法嘗試,請在接受答案之前嘗試一下。感謝您的有用信息! – Jeflopo 2013-02-15 14:18:19

+0

工作就像一個魅力! TY – Jeflopo 2013-02-15 14:56:41

0

在大多數共享主機,你不能覆蓋的Apache設置,在這種情況下,可能需要忍受重定向規則。htaccess文件

Options +FollowSymLinks +ExecCGI 

RewriteEngine On 

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

這是我在我的項目中使用的規則。 您可能需要爲您的資產提供其他方式的完整路徑,這些方式不會被加載。