zenstruck/redirect-bundle

存储您的网站的重定向,并记录重定向和404错误的统计数据

资助包维护!
kbond

安装数: 53,168

依赖关系: 1

建议者: 0

安全性: 0

星星: 24

关注者: 3

分支: 8

开放问题: 2

类型:symfony-bundle

v3.10.1 2024-05-15 19:59 UTC

README

CI Latest Version Total Downloads

此包添加了重定向和404错误的实体。

对于重定向,拦截404错误并查找请求的路径。如果找到匹配项,则重定向到找到的重定向的目标。同时更新计数和最后访问日期。还提供了重定向表单类型和验证。

404错误也可以记录。每个404错误在数据库中都是一条独立的记录。存储路径、完整URL、时间戳和引用者。将每个错误作为单独的记录存储允许查看随时间变化的统计数据,并查看所有引用者URL。当创建或更新重定向时,匹配其路径的404记录将被删除。

安装

  1. 使用composer安装
composer require zenstruck/redirect-bundle
  1. 启用包:如果您没有使用 Symfony Flex,则需要此步骤。

    // config/bundles.php
    
    return [
            // ...
            Zenstruck\RedirectBundle\ZenstruckRedirectBundle::class => ['all' => true],
        ];

配置

注意:必须配置NotFoundRedirect或两者。

重定向

  1. 创建继承此包提供的MappedSuperClass的重定向类

    namespace App\Entity;
    
    use Zenstruck\RedirectBundle\Model\Redirect as BaseRedirect;
    use Doctrine\ORM\Mapping as ORM;
    
    /**
     * @ORM\Entity
     * @ORM\Table(name="redirects")
     */
    class Redirect extends BaseRedirect
    {
        /**
         * @ORM\Id
         * @ORM\Column(type="integer")
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;
    }
  2. 在您的zenstruck_redirect.yml中设置此类

    zenstruck_redirect:
        redirect_class: App\Entity\Redirect
  3. 更新您的模式(或使用迁移)

bin/console doctrine:schema:update --force

NotFound

  1. 创建继承此包提供的MappedSuperClass的找不到类

    namespace App\Entity;
    
    use Zenstruck\RedirectBundle\Model\NotFound as BaseNotFound;
    use Doctrine\ORM\Mapping as ORM;
    
    /**
     * @ORM\Entity
     * @ORM\Table(name="not_founds")
     */
    class NotFound extends BaseNotFound
    {
        /**
         * @ORM\Id
         * @ORM\Column(type="integer")
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;
    }
  2. 在您的zenstruck_redirect.yml中设置此类

    zenstruck_redirect:
        not_found_class: App\Entity\NotFound
  3. 更新您的模式(或使用迁移)

bin/console doctrine:schema:update --force

表单类型

此包提供了一种用于创建/编辑重定向的表单类型(zenstruck_redirect)。

$redirect = // ...
$form = $this->createForm('zenstruck_redirect', $redirect);

您可能想要禁用已创建的重定向的source字段

// new action
$redirect = new Redirect();
$form = $this->createForm('zenstruck_redirect', $redirect);

// edit action
$redirect = // get from database
$form = $this->createForm('zenstruck_redirect', $redirect, array('disable_source' => true));

完整默认配置

zenstruck_redirect:
    redirect_class:     ~ # Required if not_found_class is not set
    not_found_class:    ~ # Required if redirect_class is not set
    model_manager_name: ~

    # When enabled, when a redirect is updated or created, the NotFound entities with a matching path are removed.
    remove_not_founds: true