本文目录导读:

在 Laravel 中配置 URL 验证非常简单,主要通过验证规则来实现,以下是几种常见的配置方式:
基础 URL 验证
使用 url 验证规则
use Illuminate\Support\Facades\Validator;
$validator = Validator::make($request->all(), [
'website' => 'required|url',
]);
if ($validator->fails()) {
// 处理验证失败
}
在控制器中使用
public function store(Request $request)
{
$validated = $request->validate([
'url' => 'required|url',
]);
// 继续处理...
}
在 Form Request 中使用
public function rules()
{
return [
'website' => ['required', 'url'],
];
}
高级 URL 验证选项
验证 URL 格式和协议
'url' => 'url:http,https' // 只允许 http 和 https 'url:http,https,ftp' // 允许多种协议
自定义错误消息
$messages = [
'url.url' => '请输入有效的 URL 地址(需包含 http:// 或 https://)',
];
$validator = Validator::make($request->all(), [
'website' => 'required|url',
], $messages);
使用正则表达式验证
更严格的 URL 验证
'url' => [
'required',
'regex:/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/'
]
只验证域名格式
'domain' => [
'required',
'regex:/^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$/'
]
自定义验证规则
创建自定义验证规则
// 在 AppServiceProvider 的 boot 方法中
use Illuminate\Support\Facades\Validator;
Validator::extend('custom_url', function ($attribute, $value, $parameters, $validator) {
// 检查 URL 是否可访问
$headers = @get_headers($value);
return $headers && strpos($headers[0], '200');
}, 'URL 地址无效或无法访问');
使用自定义规则
'url' => 'required|custom_url'
完整的验证示例
public function storeUrl(Request $request)
{
$rules = [
'url' => [
'required',
'url',
'max:2048',
function ($attribute, $value, $fail) {
// 验证 URL 是否是安全链接 (https)
if (!str_starts_with($value, 'https://')) {
$fail('只允许使用 HTTPS 链接');
}
},
],
'backup_url' => 'nullable|url'
];
$messages = [
'url.required' => '请输入 URL 地址',
'url.url' => '请输入有效的 URL 格式',
'url.max' => 'URL 地址长度不能超过 2048 个字符',
];
$validated = $request->validate($rules, $messages);
// 验证通过后的处理
}
数据库存储时的验证
// 在模型中
public static function rules()
{
return [
'url' => 'required|url|unique:urls,url|max:2048'
];
}
// 在迁移中
Schema::create('urls', function (Blueprint $table) {
$table->id();
$table->string('url', 2048);
// ...
});
注意事项
- URL 长度限制:建议设置
max:2048限制 - 协议要求:默认可选,建议明确要求 http/https
- 安全性:避免直接存储用户输入的 URL 而不作处理
- 国际化 URL:支持 IDN 域名的 URL 需要使用
filter_var或正则验证
推荐的验证规则组合
'url' => [
'required',
'url:http,https', // 只允许 http/https
'max:2048', // 长度限制
// 可选:增加自定义验证
function ($attribute, $value, $fail) {
// 可以添加额外的业务逻辑验证
},
]
这样配置后,Laravel 会自动验证输入的 URL 是否符合标准格式,并提供友好的错误提示。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播