Files
laralog/app/Models/Redirect.php
T
ak 8f1ff6e3f9 feat: 外链中转 /go——点击统计 + 拦截 + 隐藏真实链接
- redirects 表 + UrlRedirector:go_url() 站外链接改写为 /go/{hash}(确定性 hash、同 URL 复用、并发安全、缓存)
- /go/{hash} 302 跳转 + 点击计数 + 最后点击时间;停用状态 410(二次拦截);后台「外链中转」资源可查看点击量/启停/删除
- 接入点:正文外链(渲染器统一改写)、评论正文自动链接(comment_body)、评论作者网址、友链(侧边栏+友链页);站内/相对/mailto/tel/锚点不中转
- 测试 6 个(改写/计数/拦截/复用/渲染/评论正文);README 补充
2026-08-13 01:28:10 +08:00

30 lines
535 B
PHP

<?php
declare(strict_types=1);
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Redirect extends Model
{
protected $fillable = [
'hash', 'target_url', 'clicks', 'status', 'last_clicked_at',
];
protected $casts = [
'last_clicked_at' => 'datetime',
];
public function isActive(): bool
{
return $this->status === 'active';
}
public function hit(): void
{
$this->increment('clicks');
$this->update(['last_clicked_at' => now()]);
}
}