我是Symfony的新手(使用3.4版)。我在macOS High Sierra上将它与XAMPP一起使用。我将我的虚拟主机设置为:
<VirtualHost *:80>
DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/project/web/app_dev.php"
ServerName project
</VirtualHost>
然后用“ 127.0.0.1 project”设置我的主机文件,一切正常。
但是在我的应用程序中,我创建了一个控制器:
<?php
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
class ProjectController extends Controller
{
/**
* @Route("/todo", name="todo_list")
*/
public function indexAction(Request $request)
{
die("TO DOS");
// replace this example code with whatever you need
return $this->render('default/index.html.twig', [
'base_dir' => realpath($this-
>getParameter('kernel.project_dir')).DIRECTORY_SEPARATOR,
]);
}
}
但是当我访问项目/待办事项时,它将重定向到项目/仪表板并显示XAMPP欢迎页面。我如何去项目/待办事项?
注意:尽管我使用的是Mac,但我正在做本教程https://www.youtube.com/watch?v=HchMW8EhWPU
答案 0 :(得分:2)
我在Apache + Symfony方面的经验有限,但是我相信您的DocumentRoot
是非法的。您应该指向web
目录,而不要指向prod
或dev
前端控制器。出于测试目的,只需从最后删除app_dev.php
。有帮助吗?
根据您的版本,请始终参考官方文档,例如: Configuring a Web Server
为了调试您的路线,建议您运行bin/console debug:router
,以便更好地了解您注册的路线。
希望这会有所帮助...
答案 1 :(得分:1)
您的文档根目录不正确。文档根目录必须始终是目录。因此,您的文档根目录应该是:
DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/project/web/"
下一步:您想要的是所有请求都通过app_dev.php
。这是通过重写规则完成的。重写规则将客户的请求映射到实际资源(在您的情况下为app_dev.php
前端控制器。
这是一组适用于您的重写规则。 (我目前未使用Apache,所以我从一个旧项目中挖掘了它们,希望它们对您有用。)
将其放入.htaccess
目录的web/
文件中:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app_dev.php [QSA,L]
</IfModule>
这是一组基本规则,基本上意味着网络服务器应将对不存在文件的所有请求重写为app_dev.php
。
您也可以将其添加到Web服务器配置中,但是每次修改配置时,都必须重新启动Web服务器。
也:如果由于某种原因在修改配置后出现5xx错误,请查看服务器日志以获取解释。