如何在共享主机上部署Symfony2?

问题描述:

我想从此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

在您的配置,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

在大多数共享主机,你不能覆盖的Apache设置,在这种情况下,可能需要忍受重定向规则。htaccess文件

Options +FollowSymLinks +ExecCGI 

RewriteEngine On 

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

这是我在我的项目中使用的规则。 您可能需要为您的资产提供其他方式的完整路径,这些方式不会被加载。