我最近在Symfony 4中完成了一个API,我想将其部署在AWS的Elastic Beanstalk上进行生产测试。但是,除了能够访问index.php Symfony default page
中的默认Symfony 4问候外,我无法路由到任何其他逻辑。例如,当尝试使用在本地环境note/view on local
上有效的/ note / view时我在EB环境中遇到“未定义的索引/ note / view不存在”的问题。几乎没有我的routes.yaml加载。
任何建议将不胜感激!预先感谢!
答案 0 :(得分:1)
确保您的.htaccess
目录中有public
文件(至少在您的EC2实例(EB创建的实例)上)
您的本地可能不需要它(如nginx),但是EB PHP附带了现成的Apache。您需要确保您的代码也可以在apache上运行。
只是为了验证这一理论,请访问由EB创建的EC2实例(如果您不知道如何,请参见下文);
cd /var/app/current/public
~ nano .htaccess
将下面的内容粘贴到文件中
`
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
RedirectMatch 302 ^/$ /index.php/
</IfModule>
</IfModule>
请注意,这只是对Apache进行此理论测试的基本重写。您可以根据项目的需要向此文件添加更多内容。
sudo service httpd restart
或者,您可以执行cd /var/app/current/public
而不是cd /var/www/html/public
,因为它是/var/app/current/public
的符号链接
如何访问EB生成的EC2实例
需要一段时间才能登录。
PS 当然,EBS背后的主要思想之一是您不需要通过SSH进入实例。但是,这只是为了检验理论,有时使用AWS时,您需要采用跟踪和错误样式。我不知道此应用程序的设置,也不知道EBS的整个设置及其工作流程。如果这可以解决您的问题,则只需将.htaccess
包含到您的项目中就可以了。