sirodiaz / laravel-redirection
Laravel 扩展包,允许将重定向 URL 存储到数据库(或其他来源),用于 SEO 目的
Requires
- php: ^8.0
- illuminate/contracts: ^9.0|^10.0
- illuminate/database: ^9.0|^10.0
- illuminate/support: ^9.0|^10.0
- spatie/laravel-package-tools: ^1.9.2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.2
- nunomaduro/collision: ^5.3|^6.0
- orchestra/testbench: ^7.0|^8.0
- vimeo/psalm: ^4.8
This package is auto-updated.
Last update: 2024-09-10 14:15:59 UTC
README
要求
您需要 PHP 8.0 或更高版本。该包经过测试,专为 Laravel 9 和 10 设计。此包将接收未来 Laravel 版本的更新。之前的 Laravel 版本不予考虑,因此请使用 Neurony/laravel-redirects 包为旧版本的 Laravel。
安装
您可以通过 composer 安装此包
composer require SiroDiaz/laravel-redirection
您可以使用以下命令发布和运行迁移
php artisan vendor:publish --provider="SiroDiaz\Redirection\RedirectionServiceProvider" --tag="redirection-migrations" php artisan migrate
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="SiroDiaz\Redirection\RedirectionServiceProvider" --tag="redirection-config"
这是发布配置文件的内容
<?php return [ /* |-------------------------------------------------------------------------- | Status codes valid for redirections |-------------------------------------------------------------------------- | | The redirect statuses that you will use in your application. | By default, the "301", "302" and "307" are defined. | */ 'statuses' => [ 301 => 'Permanent (301)', 302 => 'Normal (302)', 307 => 'Temporary (307)', ], /* |-------------------------------------------------------------------------- | Default Redirect status code (in case of not defined) |-------------------------------------------------------------------------- | | Status code used by default to redirect from an old URL to a new mapped | URL. | */ 'default_status_code' => (int)env('REDIRECT_DEFAULT_STATUS', 301), /* |-------------------------------------------------------------------------- | Case sensitivity |-------------------------------------------------------------------------- | | Whether to match URLs case sensitively or not. | Default to false because most URLs are not case sensitive. | */ 'case-sensitive' => (bool) env('REDIRECT_CASE_SENSITIVE', false), /* |-------------------------------------------------------------------------- | Redirect Driver |-------------------------------------------------------------------------- | | Here you may specify the default redirect driver that you want to use. | The "config" driver is used by default when you want to code faster. | Consider database driver better for admin panel configuration backed by | a relational DB. | */ 'driver' => env('REDIRECT_DRIVER', 'config'), /* |-------------------------------------------------------------------------- | Array containing all available drivers and its implementations and source |-------------------------------------------------------------------------- | | Concrete implementation for the "redirection model". | To extend or replace this functionality, change the value below with | your full "redirection model" FQN. | | Your class will have to (first option is recommended): | - extend the "SiroDiaz\Redirection\Models\Redirection" class | - or at least implement the "SiroDiaz\Redirection\Contracts\RedirectionModelContract" interface. | | Regardless of the concrete implementation below, you can still use it like: | - app('redirection.') OR app('\SiroDiaz\Redirection\Contracts\RedirectionModelContract') | - or you could even use your own class as a direct implementation. For this | case you must extend from "SiroDiaz\Redirection\Models\Redirection" model class and | replace in the published config file 'drivers.database.source'. | | */ 'drivers' => [ 'config' => [ 'driver' => SiroDiaz\Redirection\Drivers\FileRedirector::class, 'source' => 'redirection.urls', ], 'database' => [ 'driver' => SiroDiaz\Redirection\Drivers\DatabaseRedirector::class, 'source' => SiroDiaz\Redirection\Models\Redirection::class, ], ], /* |-------------------------------------------------------------------------- | Url list with redirections used for config driver |-------------------------------------------------------------------------- | | You can use urls array of two different ways. The simple one uses the | default redirect status code ('redirection.default_status_code'). | Example: | 'urls' => [ | '/old/url' => '/new/url', | '/another/old/url' => '/another/new/url', | '/url/with?id=123' => '/url/with/123', | ], | | The second way to write redirect urls in your config/redirection.php | is using associative arrays. You can combine this method with the previous one. | Look at this example: | 'urls' => [ | '/old/url' => ['new_url' => '/new/url', 'status_code' => 302], | '/another/old/url' => '/another/new/url', | '/url/with?id=123' => ['new_url' => '/url/with/123'], | ], | */ 'urls' => [], ];
您可以更改和扩展默认的 SiroDiaz\Redirection\Models\Redirection
模型类。假设您想添加一些方法或字段。您需要创建一个新的模型类,例如 App\Models\Redirect
。
以下是如何扩展默认 Redirection 模型功能的基本示例。我们想包括对 Laravel BackPack 管理面板的支持,可以
<?php namespace App\Models; use SiroDiaz\Redirection\Models\Redirection as RedirectionBaseModel; use Backpack\CRUD\app\Models\Traits\CrudTrait; class Redirect extends Redirection { use CrudTrait; }
最后,您必须使用 vendor:publish
命令发布 sirodiaz/laravel-redirection
配置文件以更改现在使用的模型类。
如果您想为另一种重定向目的添加更多状态码,请将它们添加到您的 config/redirection.php 配置文件中。默认情况下,您拥有最常见的重定向代码:301、302 和 307。
注意!不要忘记 将中间件 SiroDiaz\Redirection\RedirectRequests
添加到您的 app/Http/Kernel.php
文件中
// app/Http/Kernel.php protected $middleware = [ ... \SiroDiaz\Redirection\RedirectRequests::class, ],
扩展和创建新的重定向驱动
待办事项
测试此包以供贡献
composer test
变更日志
请参阅 CHANGELOG 了解最近更改的更多信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
鸣谢
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。