【问题标题】:Symfony 301 redirect in the controller控制器中的 Symfony 301 重定向
【发布时间】:2018-04-12 20:26:32
【问题描述】:

我的 Symfony 应用程序中有一个实体 Event,参数为 idslug。 参数slug 可以为空并且不是必需的,因此,如果它缺失,则链接到使用id 构建的单个事件页面。但是,如果设置了slug,则使用此参数构建 url。

任务是为有 slug 的事件创建 301 重定向。我正在尝试使用 symfony 方法 redirect() 但我遇到了一个问题:当我第一次设置 slug 时,它工作正常并将我从 url event/3 替换为 event/my-event-slug。但是当我删除 slug 或更改它时,浏览器仍然会将我重定向到我提供的第一个 slug。

我正在 Chrome 控制台中检查它,它向我显示我的重定向 301 是从缓存中加载的。

如何防止将重定向保存到缓存或如何在控制器中以其他方式解决此问题?

【问题讨论】:

  • 301 是明确永久的,因此被缓存。如果您不想要这个,请使用 302

标签: php .htaccess symfony redirect


【解决方案1】:

试试这个:

return $this->redirect($url, 301);

【讨论】:

  • 是的,我尝试这种方式,在这种情况下,重定向被保存在缓存中。
【解决方案2】:

试试这个

$object = new Event();

        $router = $this->get('router');

        $url = $object->getSlug() ? $router->generate('my_route', $object->getSlug()) : $router->generate('my_route', $object->getId());

        $this->redirect($url,301);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    相关资源
    最近更新 更多