【发布时间】:2014-07-02 02:09:02
【问题描述】:
我正在使用 symfony2 注释,想知道这种格式的级联是如何工作的。
假设我有:
/**
* @Route("/reviews/{slug}", name="reviewDetail")
* @Template()
*/
首先,然后我检查是否提取了任何数据。如果没有,我使用以下重定向重定向到以下控制器:
return $this->redirect($this->generateUrl('reviewsDate', array('date' => $slug)), 301);
应该去:
/**
* @Route("/reviews/{date}", name="reviewsDate", defaults={"date" = null})
* @Template()
*/
然后检查是否拉取任何数据,如果没有,则使用重定向创建一个回退:
/**
* @Route("/reviews", name="reviews")
* @Template()
*/
当我运行重定向时:
if ($ctx->getReview($slug)) {
$review = $ctx->getReview($slug);
} else {
return $this->redirect($this->generateUrl('reviewsDate', array('date' => $slug)), 301);
}
我收到此错误:
This webpage has a redirect loop
动作都是按接受的顺序排列的,所以我会先检查蛞蝓,然后是日期,如果没有结果,就把它踢到主评论页面。
我可以将路线更改为更具体,这会起作用,但它似乎对用户不友好。例如,如果我想拥有这些多条路线:
reviews/my-review:显示具体评论 reviews/2014:显示 2014 年的所有评论
这是执行此功能的错误方式吗?
【问题讨论】:
标签: php .htaccess symfony redirect