删除Symfony2中的web / app.php

时间:2014-03-12 22:58:20

标签: php apache .htaccess symfony mod-rewrite

我的服务器具有以下目录结构

/srv
   /www
      /site.com
         /symfonysite
         /Other Drupal hosted site files

当我转到site.com我的drupal网站打开时,我希望能够访问site.com/symfonysite上的symfony网站,而不是site.com/symfonysite/web/app.php

我在/symfonysite内创建了 .htaccess 文件,如下所示

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /billing/web
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ app.php [QSA,L] 
</IfModule>

但这只是摆脱app.php部分,即site.com/symfonysite/web打开我的symfony网站,site.com/symfonysite给出No route found for "GET /symfonysite/"错误。

我做错了什么?

3 个答案:

答案 0 :(得分:6)

它的高度可配置的symfony之美。 您可以按照简单的4个步骤实现您的目标:

  1. 创建一个目录(比如项目)并将 symfonysite 的所有内容放在那里。您可以将此目录放在任何您喜欢的位置。为简单起见,我们将在 symfonysite 目录中创建目录。

  2. symfonysite / web 的所有内容移至 symfonysite

  3. 编辑 app.php app_dev.php 修改两行,如下所示:

      

    $ loader = require_once __DIR __。'/ .. / app / bootstrap.php.cache';
      require_once __DIR __。'/ .. / app / AppKernel.php';

      

    $ loader = require_once __DIR __。'/ project / app / bootstrap.php.cache';
      require_once __DIR __。'/ project / app / AppKernel.php';

  4. 编辑 composer.json 文件以更新“symfony-web-dir”:“web”的值并将其更改为

      

    “symfony-web-dir”:“.. /”,

  5. 您修改的目录结构可能如下所示:

    /srv
       /www
          /site.com
             /symfonysite
                  /project
             /Other Drupal hosted site files
    

    注意:出于安全原因,symfony建议仅将Web目录公开给Web可访问路径。您可以将项目目录放在任何您喜欢的位置。只需根据您的位置更新路径。 为了使这个设置更加安全,您可以将.htaccess文件放在项目目录中

    的.htaccess

      

    拒绝所有

    享受!!

答案 1 :(得分:3)

您需要将/srv/www/site.com/symfonysite/web作为项目的文档根目录。 使用.htaccess无法完成此操作,因此您需要更改apache虚拟主机配置。 这通常存在于/etc/apache2/sites-enabled/yourserver.com.conf

<VirtualHost *:80>
    ServerName yourserver.com
    DocumentRoot /srv/www/site.com/symfonysite/web
</VirtualHost>

我不确定机架空间网站是如何工作的,如果您无法更改这些设置,最好与他们一起打开支持服务单。我领导他们有狂热的支持:P

答案 2 :(得分:1)

恕我直言的最佳方法是使用符号链接。在site.com/web/content目录中,您需要运行ln -s symfonysite/web sitesymfony。它将在您的web-root中创建指向sitesymfony文件夹的符号链接/site.com/web/content/symfonysite/web。然后您的site.com/sitesymfony将从site.com/symfonysite/web调用app.php