简介
短网址 是一个开源的 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_urls
和 short_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仓库中查看它。
如果您喜欢阅读这篇文章,我很乐意听到您的反馈。同样,如果您有任何改进未来文章的建议,我也很想听听。
如果您希望每次我发表新文章时都得到更新,请随时订阅我的通讯。
继续打造令人惊叹的事物!🚀
driesvints, waelkhalifa, alecgarcia, ash-jc-allen, felixramowda, zaki 点赞了这篇文章