如何将app.php和app_dev.php放入子文件夹
由于我们在同一个站点上有多个应用程序(以及与大项目相关的所有应用程序),因此我将多个应用程序放置在Web文件夹内,如下所示:如何将app.php和app_dev.php放入子文件夹
网/
| - 前端
| - 后端
| - API
每个人都应该有自己的app.php和app_dev.php。可以将前端的app.php和app_dev.php放在根目录下,但是这样可以打破我们试图保留的好结构。
我想在我的.htaccess中使用这些规则
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^app_dev\.php.*$ frontend/app_dev.php [QSA,L]
RewriteRule ^(.*)$ frontend/app_dev.php [QSA,L]
看起来工作得很好,只是现在产生的各个环节都有前缀“前端”这样的事实:abc.com/frontend /通常路由
无论如何告诉Symfony忽略前端部分在这种情况下?
您需要覆盖路由器的请求上下文基础url。
添加到您的app/config/paramters.yml
:
parameters:
router.request_context.base_url:/
参见文档章节Configuring the Request Context Globally。
请注意,您需要使用此功能的symfony版本> = 2.2.0。
非常感谢,这工作。一旦你知道如何,这很简单。顺便说一句,我想知道你是否有使用htaccess规则的经验?在我上面的问题中,如果我注释掉“RewriteRule^app_dev \ .php。* $ frontend/app_dev.php [QSA,L]”这一行,那么一切正常,但否则前端/中的样式表将无法正确加载。我在那里插入那一行,希望能够通过链接访问app_dev.php mysite.com/app_dev.php – mr1031011
我建议你不要在可公开访问的域中使用app_dev.php页面,因为你会很容易地暴露合理的信息,如容器参数。更好地使用环境变量在'app.php'中的环境之间切换。在使用Apache时,有'SetEnvIf' ...因此,如果找到请求头中的某个键/值对,则可以让Apache设置环境变量(即'SYMFONY__DEV_MODE = true')。在您的开发环境中,您可以使用'SetEnv'将symfony始终显示在某个本地域下的开发环境中。 – nifr
谢谢你的建议nifr。其实应用开发将只用于本地环境,因为每个人都已经习惯了在我们的本地环境中拥有该app_dev.php前缀,我只是想知道如果我可以在离开真正的文件在子文件夹中做同样的事情。 – mr1031011
为什么不根据您的应用程序简单地使用指向不同控制器的路由?我的意思是,这就是他们在这里。 – nietonfir