You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel如何配置URL验证规则同时支持带/不带https的网址输入

解决方案

Laravel 自带的 url 校验规则强制要求输入内容包含合法协议头(如http://、https://),因此不带前缀的www.example.com会触发校验失败,以下是两种可直接落地的实现方案:


方案1:自定义正则校验规则(兼容带/不带协议头的输入)

直接替换Fortify中原有的url校验规则,用正则同时匹配两种格式的域名:

'website' => [
    'nullable',
    'regex:/^((https?:\/\/)?[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z]{2,}(\/[^\s]*)?$/i',
],

正则可根据业务需要调整,比如是否允许携带端口、路径、查询参数等场景。


方案2:自动补全协议头(更推荐,数据格式统一)

不修改原有校验规则,提前处理用户输入的内容,自动为不带协议头的域名补全https://前缀,既满足用户输入习惯,也能保证存入数据库的网址格式统一,后续使用时不会出现跳转异常。

你使用的是Livewire组件,可以直接在组件中添加字段更新钩子处理输入:

// 在对应的Livewire组件中添加以下方法
public function updatedWebsite($value)
{
    // 输入非空且没有http开头时自动补全https前缀
    if (filled($value) && !str_starts_with($value, 'http')) {
        $this->website = 'https://' . $value;
    }
}

处理完成后原有Fortify的'website' => ['nullable', 'url']校验规则可以直接正常使用。


内容的提问来源于stack exchange,提问作者Laravel Liwevire Question

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:57:03