配置symfony不要将子文件夹视为路由

时间:2018-04-21 18:20:18

标签: php symfony symfony4 php-7.1

我有一个apache服务器,我的项目在/var/www/html/

在那里,我使用像composer create-project symfony/website-skeleton myproject这样的作曲家创建了一个新项目。

然后在我的项目中运行了composer require symfony/apache-pack命令,该命令在public文件夹中添加了一个.htaccess文件,其中包含symfony的默认.htaccess

当我像http://192.168.0.2/myproject那样访问我的服务器时,如果找不到index.php文件,我得到了apache服务的文件夹列表,因为它访问了/var/www/html/myproject中的默认symfony文件夹而没有公共文件夹。

因此,在作为symfony项目的文件夹/var/www/html/myproject内,我添加了以下.htaccess文件。

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /myproject/

    RewriteRule    ^$    public/    [L]
    RewriteRule    (.*) public/$1    [L]
</IfModule>

当我访问http://192.168.0.2/myproject时,我收到错误No route found for "GET /myproject/"这意味着symfony现在将/myproject视为路线的一部分。

是否有解决方案。我建议我从symfony slack获得的解决方案是让项目在另一个文件夹中,而符号链接只包含公共文件夹。

类似的东西:

lrwxrwxrwx 1 root root 59 gmponos 9 19:26 myproject -> /home/gmponos/Projects/myproject/public/

这是一个解决方案,但我确实需要将整个项目置于/var/www/html/下,而不是对公用文件夹进行符号链接。

根据官方文档的另一个解决方案是编辑apache配置并将文件根目录从/ var / www / html / myproject更改为/ var / www / html / myproject / public但我需要配置保留在项目而不是更改apache配置。

有没有解决方案?

1 个答案:

答案 0 :(得分:0)

  

有什么解决方案吗?   无法解决您的要求:

  1. 您必须有权配置Apache以将文档根目录调整为:

    • / var / www / html / myproject,
    • 或/ var / www / html / myproject / public 并根据apache配置文件中的访问权限进行设置
  2. 将整个代码放在/ var / www / html目录中的代码中,并通过Web(Apache)进行免费远程访问对于生产环境来说是非常危险的。