我有一个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配置。
有没有解决方案?
答案 0 :(得分:0)
有什么解决方案吗? 无法解决您的要求:
您必须有权配置Apache以将文档根目录调整为:
将整个代码放在/ var / www / html目录中的代码中,并通过Web(Apache)进行免费远程访问对于生产环境来说是非常危险的。