Laravel 丢失页面重定向包
发布于 作者: Diaa Fares
如果您将网站迁移到新域名,您可能希望用户和搜索引擎被重定向到新域名上的正确页面。一种方法是使用从旧页面位置到新页面位置的 301 永久重定向。在 Laravel 中,您可以在路由文件中定义此操作,例如:
Route::get('/old-page', function () { return redirect('/new-page', 301);});
如果您有大量的重定向,它们会很快填满您的路由文件,并且如果您使用的是动态页面,它可能会变得难以管理。Spatie 的全新 Laravel 丢失页面重定向包旨在通过将您的重定向添加到包配置文件或实现包含的 Redirector 接口来简化此过程。让我们看一下如何设置和使用此包。
安装
首先,通过 Composer 安装 **Laravel 丢失页面重定向**。
composer require spatie/laravel-missing-page-redirector
在 **config/app.php** 中添加其服务提供商。
'providers' => [ ... Spatie\MissingPageRedirector\MissingPageRedirectorServiceProvider::class,];
然后在 **app/Http/Kernel.php** 中注册 **Spatie\MissingPageRedirector\RedirectsMissingPages** 中间件。
protected $middleware = [ ... \Spatie\MissingPageRedirector\RedirectsMissingPages::class, ],
然后,您需要发布配置文件,在您的终端中运行以下命令:
php artisan vendor:publish --provider="Spatie\MissingPageRedirector\MissingPageRedirectorServiceProvider"
概述
如果您打开了 **config/laravel-missing-page-redirector.php** 配置文件,您将看到以下内容:
return [ /** * This is the class responsible for providing the URLs which must be redirected. * The only requirement for the redirector is that it needs to implement the * `Spatie\MissingPageRedirector\Redirector\Redirector`-interface */ 'redirector' => \Spatie\MissingPageRedirector\Redirector\ConfigurationRedirector::class, /** * When using the `ConfigurationRedirector` you can specify the redirects in this array. * You can use Laravel's route parameters here. */ 'redirects' => [// '/non-existing-page' => '/existing-page',// '/old-blog/{url}' => '/new-blog/{url}', ],];
- 首先,您可以通过创建自己的重定向器来更改重定向的来源(例如数据库),新的重定向器必须实现
Spatie\MissingPageRedirector\Redirector\Redirector
接口,并具有 getRedirectsFor 方法,该方法返回一个数组,将旧 URL 映射到新 URL。 - 第二个选项是为 **ConfigurationRedirector** 指定重定向数组,只需为每个重定向添加一个元素,使用旧 URL 作为键,使用新 URL 作为元素的值。
- 您可以使用路由参数,将它们括在花括号中,例如
'/old-blog/{url}' => '/new-blog/{url}'
,并且可以使用问号将它们设为可选,例如:'/old-blog/{url?}' => '/new-blog/{url}',
。 - 请注意,如果您想将旧 URL 重定向到不同域的新 URL,您必须在前面添加 *https://news.laravel.net.cn,例如:
'/old-page' => 'https://news.laravel.net.cn
。
如果您想使用简单的方法进行从旧 URL 到新 URL 的 301 永久重定向,请尝试使用 Laravel 丢失页面重定向。