如何在共享主机上部署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 [] []
我在做什么错了?
在您的配置,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) - 唯一的公共目录
你的意思是把我的特殊目的地转移到*/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
我现在无法尝试,请在接受答案之前尝试一下。感谢您的有用信息! – Jeflopo 2013-02-15 14:18:19
工作就像一个魅力! 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]
这是我在我的项目中使用的规则。 您可能需要为您的资产提供其他方式的完整路径,这些方式不会被加载。
你检查config.php吗?它显示你缺少的要求 – 2013-02-15 09:01:32