zenstruck / redirect-bundle
存储您的网站的重定向,并记录重定向和404错误的统计数据
v3.10.1
2024-05-15 19:59 UTC
Requires
- php: >=8.0
- doctrine/doctrine-bundle: ^2.6
- doctrine/orm: ^2.6|^3.0
- symfony/framework-bundle: ^5.4|^6.0|^7.0
Requires (Dev)
- matthiasnoback/symfony-dependency-injection-test: ^4.3 || ^5.0
- phpunit/phpunit: 9.6.13
- symfony/browser-kit: ^5.4|^6.0|^7.0
- symfony/form: ^5.4|^6.0|^7.0
- symfony/phpunit-bridge: ^6.0|^7.0
- symfony/translation: ^5.4|^6.0|^7.0
- symfony/validator: ^5.4|^6.0|^7.0
- zenstruck/browser: ^1.6
- zenstruck/foundry: ^1.36
README
此包添加了重定向和404错误的实体。
对于重定向,拦截404错误并查找请求的路径。如果找到匹配项,则重定向到找到的重定向的目标。同时更新计数和最后访问日期。还提供了重定向表单类型和验证。
404错误也可以记录。每个404错误在数据库中都是一条独立的记录。存储路径、完整URL、时间戳和引用者。将每个错误作为单独的记录存储允许查看随时间变化的统计数据,并查看所有引用者URL。当创建或更新重定向时,匹配其路径的404记录将被删除。
安装
- 使用composer安装
composer require zenstruck/redirect-bundle
-
启用包:如果您没有使用 Symfony Flex,则需要此步骤。
// config/bundles.php return [ // ... Zenstruck\RedirectBundle\ZenstruckRedirectBundle::class => ['all' => true], ];
配置
注意:必须配置NotFound
或Redirect
或两者。
重定向
-
创建继承此包提供的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; }
-
在您的
zenstruck_redirect.yml
中设置此类zenstruck_redirect: redirect_class: App\Entity\Redirect
-
更新您的模式(或使用迁移)
bin/console doctrine:schema:update --force
NotFound
-
创建继承此包提供的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; }
-
在您的
zenstruck_redirect.yml
中设置此类zenstruck_redirect: not_found_class: App\Entity\NotFound
-
更新您的模式(或使用迁移)
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