支持 Laravel.io 的持续发展 →

如何在 Laravel 中创建短 URL

8 Jun, 2022 9 min read

简介

短网址 是一个开源的 Laravel 扩展包,您可以使用它为您的Web应用创建短网址。它提供了跟踪用户点击短网址的不同选项,并且将短网址添加到Laravel项目中只需几分钟。

本文将介绍如何在您的Laravel项目中安装 Short URL (ashallendesign/short-url) 扩展包,并探讨一些可用的自定义选项。如果您想查看该包的代码及其提供的其他功能,可以在 GitHub 仓库 中查看。

为了更好地了解该包的功能,我们可以快速看一下一个基本示例。假设您有一个托管的 Laravel 应用程序在 https://my-web-app.com 上,您希望创建一个指向 https://ashallendesign.co.uk 的短网址。为此,您的代码可能如下所示

use AshAllenDesign\ShortURL\Facades\ShortURL;

$shortUrl = ShortURL::destinationUrl('https://ashallendesign.co.uk')->make();

然后,您可以想象这个代码将创建一个类似于以下的短网址:http://my-web-app.com/short/abc123。现在,如果您导航到这个网址,您将被重定向到 https://ashallendesign.co.uk,并且您的访问(如果在启用跟踪功能的情况下)会被记录在数据库中。

安装包

开始使用 Short URL 包,请确保您的 Laravel 应用程序正在使用至少 Laravel 8.0 和 PHP 8.0。

您可以使用以下命令通过 Composer 安装包:

composer require ashallendesign/short-url

安装包后,您可以使用以下命令发布包的配置文件和数据库迁移

php artisan vendor:publish --provider="AshAllenDesign\ShortURL\Providers\ShortURLProvider"

本包包含若干迁移,这些迁移会将两个新表添加到数据库中:short_urlsshort_url_visits。要运行这些迁移,只需执行以下命令

php artisan migrate

恭喜,Short URL 现已安装到您的 Laravel 应用中并准备好使用!

创建短 URL

现在我们已经安装了 Short URL,让我们看看如何创建自己的短 URL。

最简单的方法是使用类似以下片段的工具。我们只需选择要重定向访客的目标 URL,然后使用 make 方法将短 URL 存储到数据库中。

use AshAllenDesign\ShortURL\Facades\ShortURL;

$shortURLObject = ShortURL::destinationUrl('https://destination.com')->make();

$shortURL = $shortURLObject->default_short_url;

make 方法返回一个扩展 Laravel 默认 Illuminate\Database\Eloquent\Model 类的 AshAllenDesign\ShortURL\Models\ShortURL 模型。因此,您通常在 Laravel 模型上调用的大多数方法也可以在这里使用。

使用自定义短 URL 键

默认情况下,生成的缩短 URL 将包含随机键(键是放在短 URL 末尾的唯一标识符)。例如,如果一个短 URL 是 https://webapp.com/short/abc123,则键将是 abc123

有时,您可能希望为该 URL 自定义一个键,这个键对您的访客来说比随机生成的键更有意义。这对于使用缩短 URL 进行营销或广告活动等情况是完美的。

要定义自定义短 URL 键,请使用如以下示例中的 urlKey() 方法。

use AshAllenDesign\ShortURL\Facades\ShortURL;

$shortUrl = ShortURL::destinationUrl('https://destination.com')
->urlKey('custom-key')
->make()
->default_short_url;

// $shortUrl will be equal to: "https://webapp.com/short/custom-key"

跟踪访客

根据您使用短 URL 的目的,您可能希望跟踪一些关于使用短 URL 的访客的数据。这对于分析来说尤其实用。

默认情况下,跟踪已启用,所有可用的跟踪字段也已启用。您可以在安装包时发布的包的 short-url.php 配置文件中切换跟踪的不同部分的默认选项。

如果您希望在创建缩短 URL 时覆盖配置文件中设置的下默认跟踪选项(是否启用跟踪),则可以使用 trackVisits() 方法。

例如,如果我们想强制为 URL 启用跟踪,我们的代码可能如下所示

$shortURLObject = ShortURL::destinationUrl('https://destination.com')
    ->trackVisits()
    ->make();

同样,如果我们想强制为 URL 禁用跟踪,我们的代码可能如下所示

$shortURLObject = ShortURL::destinationUrl('https://destination.com')
    ->trackVisits(false)
    ->make();

启用跟踪字段

如果为缩短 URL 启用跟踪,则每次点击链接时,将在数据库中创建一个新的 ShortURLVisit 行。默认情况下,包将记录以下访问者的字段

  • IP 地址
  • 浏览器名称
  • 浏览器版本
  • 操作系统名称
  • 操作系统版本
  • 来源 URL(访客最初到达的 URL)
  • 设备类型(可以是:desktop / mobile / tablet / robot

您可以在配置文件中将这些字段中的任何一个切换为记录所需字段。然而,如果您想在创建短 URL 时覆盖任何默认选项,您可以在创建短 URL 时这样做。

例如,如果我们想强制在创建我们的短 URL 时启用所有跟踪字段,我们的代码可能如下所示

ShortURL::destinationUrl('https://destination.com')
    ->trackVisits()
    ->trackIPAddress()
    ->trackBrowser()
    ->trackBrowserVersion()
    ->trackOperatingSystem()
    ->trackOperatingSystemVersion()
    ->trackDeviceType()
    ->trackRefererURL()
    ->make();

值得注意的是,每个跟踪方法都允许您将 false 作为参数传递,以强制特定字段不被跟踪。例如,如果我们想强制不跟踪 IP 地址,我们的代码可能如下所示

ShortURL::destinationUrl('https://destination.com')
    ->trackVisits()
    ->trackIPAddress(false)
    ->make();

创建单次使用的短 URL

默认情况下,您创建的所有短网址都可以无限期地访问,前提是您在数据库中留它们可用。然而,根据您在应用程序中使用的方式,您可能只想允许一次访问短网址。这意味着任何之后浏览该网址的访问者将收到HTTP 404响应。

要创建一次性使用的短网址,您可以使用->singleUse()方法。

以下示例展示了如何创建一次性使用的短网址。

ShortURL::destinationUrl('https://destination.com')->singleUse()->make();

设置激活和停用时间

默认情况下,您创建的所有短网址都是激活的,可以在您将其从数据库中删除之前随时访问。但是,该软件包提供了在创建网址时为网址设置激活和停用时间的功能。

这对于营销或广告活动等有用。例如,您可能希望在某一天发布营销活动的新的网址,然后在活动结束自动停用该网址。

以下示例展示了如何创建一个从明天开始及以后激活的短网址。

ShortURL::activateAt(now()->addDay())->make();

以下示例展示了如何创建一个从明天开始激活然后停用的短网址。

ShortURL::activateAt(now()->addDay())
    ->deactivateAt(now()->addDays(2))
    ->make();

如果用户在激活之前或停用之后访问短网址,他们将收到HTTP 404响应。

自定义短网址前缀

短网址软件包附带了一条您可以使用的路由,用于您的短网址,无需任何进一步设置。默认情况下,此路由为/short/{shortURLKey}

您可以选择继续使用此默认路由,但将/short/前缀更改为其他内容。为此,您可以在配置中更改prefix字段。

例如,如果我们想将默认短网址更改为/s,我们可以像这样更改配置值。

return [

    // ...
  
    'prefix' => 's',

    // ...

];

同样,您也可以完全从默认路由中移除前缀。例如,如果您希望短网址可通过/{shortUrlKey}访问,则可以将prefix配置值更新为null,像这样。

return [

    // ...
  
    'prefix' => null,

    // ...

];

使用短网址

现在我们知道了如何创建短网址,让我们看看如何在应用程序中访问它们。

由于这个软件包自带路由和控制器,无需设置即可使用,因此使用短网址变得非常简单。

除非您更改了short-url.php配置文件中的prefix字段,否则软件包的路由可在short/{urlKey}处找到。此路由使用为您找到的单次使用控制器,位于\AshAllenDesign\ShortURL\Controllers\ShortURLController

就这么多,如果没有其他要求,您就可以开始共享您的短网址,它们可以被访问者立即访问。

使用自定义路由

有时您可能希望为短网址使用自己的路由或控制器,而不是默认创建的网址。

如果您想要使用不同的路由但使用相同的控制器,您只需将新路由添加到web.php字段并指向控制器即可,如下所示。

Route::get('/custom/{shortURLKey}', '\AshAllenDesign\ShortURL\Controllers\ShortURLController');

重要的是要记住,您的路由必须包含{shortURLKey}字段。

如果您选择使用自己的路由或控制器,您可能想要禁用应用程序提供的默认路由。通过这样做,任何试图使用软件包默认路由的访问者(如果不想让他们这么做)将收到HTTP 404响应。要禁用路由,您可以将short-url.php配置文件中的disable_default_route字段设置为true,如下所示。

return [

    // ...
  
    'disable_default_route' => true,

    // ...

];

结论

希望这篇文章能向您展示如何在您的Laravel应用中使用短链接包来创建短链接。如果您想查看短链接包的代码,您可以在GitHub仓库中查看它

如果您喜欢阅读这篇文章,我很乐意听到您的反馈。同样,如果您有任何改进未来文章的建议,我也很想听听。

如果您希望每次我发表新文章时都得到更新,请随时订阅我的通讯

继续打造令人惊叹的事物!🚀

上次更新 1 年前。

driesvints, waelkhalifa, alecgarcia, ash-jc-allen, felixramowda, zaki 点赞了这篇文章

6
喜欢这篇文章?让作者知道并为他们鼓掌!
ash-jc-allen (Ash Allen) 我是一位来自英国普雷斯顿的自由职业Laravel网页开发者。我维护Ash Allen设计博客,参与了许多酷炫和激动人心的项目 🚀

你可能还喜欢以下文章

2024年3月11日

如何使用Larastan将您的Laravel应用从0到9进行升级

由于Larastan,您可以在Laravel应用执行之前就找出错误,这是可能的...

阅读文章
2024年7月19日

无需使用 traits 标准化API响应

我发现大多数用于API响应的库都是使用 traits 实现的,并且...

阅读文章
2024年7月17日

通过Discord通知在您的Laravel项目中收集反馈

如何在Laravel项目中创建反馈模块,并在收到Discord通知时...

阅读文章

感谢这些 令人惊叹的公司 对我们的支持

您的标志在这里?

Laravel.io

用于解决问题、知识共享和社区建设的Laravel门户。

© 2024 Laravel.io - 版权所有。