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

Jef*_*opo 14 .htaccess mod-rewrite shared-hosting symfony

我想从这个网址http://www.sample.com/amateur1访问生产环境中的symfony应用程序(http://www.sample.com/amateur1/web/app.php).

为此,我将.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>
Run Code Online (Sandbox Code Playgroud)

但是当我去http://www.sample.com/amateur1时显示404错误,并且没有写prod.log.

我也使用过,RewriteBase /amateur1/web/因为我不知道如果RewriteBase路径是相对于服务器的DocumentRoot,还是来自.htaccess文件所在的路径.也试过/amateur1/amateur1/RewriteBase因为这个答案Symfony2:如何在子目录中部署(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 [] []
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

Jul*_*lin 24

在您的配置中,apache public_html用作文档根目录

如果Symfony2安装在目录中/home/u105859802/public_html/amateur1,则要提供的Symfony公共目录是/home/u105859802/public_html/amateur1/web/

你应该用

RewriteBase /amateur1/web/
Run Code Online (Sandbox Code Playgroud)

但要注意,它不安全
你必须保护你的symfony目录!(配置可访问)

为什么不尝试在私有区域中移动symfony文件?
您可以将Symfony Web目录重命名为public_html

在文档菜谱中查看如何执行此操作

所以,我的推荐结构如下所示:

  • /家庭/ u105859802 /
    • 供应商
    • SRC
    • 应用
    • 箱子
    • public_html(symfony2中默认为web) < - 唯一的公共目录