在生产中找不到symfony 2路线

men*_*nov 7 routing symfony

我有路由,如:/,/ login,/ register等在开发环境中工作正常.

一开始我尝试通过app.php而不是app_dev.php访问我的网站时遇到404错误

然后我按照这个建议清理了我的缓存.

但现在我得到一个空白屏幕,试图访问任何注册路线,如app.php /或app.php/login.

我在prod.log中找到了这条消息:

[2012-02-24 11:27:05] request.ERROR: Symfony\Component\HttpKernel\Exception\NotFoundHttpException: No route found for "GET /login" (uncaught exception) at /home/renat/www/ptracker/app/cache/prod/classes.php line 4564 [] []
Run Code Online (Sandbox Code Playgroud)

这是我的routing.yml:

PtrackerTasksBundle:
resource: "@PtrackerTasksBundle/Resources/config/routing.yml"
prefix:   /

PtrackerAuthBundle:
resource: "@PtrackerAuthBundle/Resources/config/routing.yml"
prefix:   /
Run Code Online (Sandbox Code Playgroud)

AuthBundle中的routing.yml:

homepage:
pattern:  /
defaults: { _controller: PtrackerAuthBundle:Default:index }

register:
pattern:  /register
defaults: { _controller: PtrackerAuthBundle:Default:register }

login:
pattern:  /login
defaults: { _controller: PtrackerAuthBundle:Default:login }

activate:
pattern:  /activate/{username}/{salt}
defaults: { _controller: PtrackerAuthBundle:Default:activate }

login_check:
pattern:  /login_check
Run Code Online (Sandbox Code Playgroud)

在TasksBundle中的routing.yml:

tasks:
pattern:  /tasks
defaults: { _controller: PtrackerTasksBundle:Default:index }

tasks_add:
pattern:  /tasks/add
defaults: { _controller: PtrackerTasksBundle:Default:add }  

tasks_view:
pattern:  /tasks/view/{id}
defaults: { _controller: PtrackerTasksBundle:Default:view, id : null }  

tasks_change_responsible:
pattern:  /tasks/change_responsible/{id}/{responsible}
defaults: { _controller: PtrackerTasksBundle:Default:change_responsible, _format: json }  

tasks_change_status:
pattern:  /tasks/change_status/{id}/{status}
defaults: { _controller: PtrackerTasksBundle:Default:change_status, _format: json }    

tasks_edit:
pattern:  /tasks/edit/{id}
defaults: { _controller: PtrackerTasksBundle:Default:edit } 
Run Code Online (Sandbox Code Playgroud)

我错过了什么或我做错了什么?

小智 12

首先,在路由器(命令router:debug)的控制台列表中查看.如果你找到你的路由器,那么在我的情况下清除缓存的一些麻烦我app/cache手动删除文件夹,它的工作原理.

用于设置没有缓存的PROD环境,在文件app.php更改为

$kernel = new AppKernel('prod', true);
Run Code Online (Sandbox Code Playgroud)


小智 9

尝试清除prod环境中的缓存.

php app/console cache:clear --env=prod --no-debug
Run Code Online (Sandbox Code Playgroud)