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

Laravel Blade中修正AdminLTE v3侧边栏搜索结果URL路由问题

解决AdminLTE v3侧边栏搜索URL重复域名导致404的问题

问题原因

AdminLTE的sidebar-search组件默认会将菜单链接视为相对路径,自动拼接当前站点域名。但Laravel的route()方法默认生成的是绝对URL(包含完整域名),组件会把这个绝对URL当成相对路径再次拼接,就出现了http://abcx.com/http%3A//abcx.com/posting这种重复域名的错误URL。

解决方案

方案1:让菜单链接生成相对路径

直接修改菜单中的route()调用,添加第三个参数false来生成相对路径:

<li class="nav-item">
    <a href="{{ route('notifikasi.index', [], false) }}"
        class="nav-link <?= request()->routeIs('notifikasi.*') ? 'active text-primary' : '' ?>">
        <i class="nav-icon far fa-circle"></i>
        <p>
            Notifikasi
        </p>
    </a>
</li>

<li class="nav-item">
    <a href="{{ route('logs', [], false) }}" class="nav-link <?= request()->routeIs('logs*') ? 'active text-primary' : '' ?>">
        <i class="nav-icon far fa-circle"></i>
        <p>
            Aktivitas
        </p>
    </a>
</li>

route()的第三个参数控制是否生成绝对URL,设为false后,输出的链接会是/notifikasi这种相对路径,组件就能正确拼接成完整URL。

方案2:转换已有绝对URL为相对路径

如果不想修改route()的调用方式,可以用str_replace去掉域名部分,保留相对路径:

<li class="nav-item">
    <a href="{{ str_replace(url('/'), '', route('notifikasi.index')) }}"
        class="nav-link <?= request()->routeIs('notifikasi.*') ? 'active text-primary' : '' ?>">
        <i class="nav-icon far fa-circle"></i>
        <p>
            Notifikasi
        </p>
    </a>
</li>

url('/')会获取当前站点的根域名,替换后得到的就是相对路径。

方案3:自定义组件的URL处理逻辑

如果不想修改菜单代码,可以在页面初始化时,重写sidebar-search组件的URL处理逻辑。在页面的JS脚本中添加:

$(function() {
    // 初始化sidebar-search后修正链接
    $('.sidebar-search').on('searchCompleted', function() {
        $(this).find('.search-results a').each(function() {
            let href = $(this).attr('href');
            // 移除重复的域名部分
            if (href.startsWith(window.location.origin)) {
                $(this).attr('href', href.replace(window.location.origin, ''));
            } else if (href.includes(window.location.origin.replace('http://', ''))) {
                // 处理转义后的域名(比如http%3A//abcx.com)
                let escapedOrigin = encodeURIComponent(window.location.origin);
                $(this).attr('href', href.replace(escapedOrigin, ''));
            }
        });
    });
});

这段代码会在搜索完成后,自动修正结果中的链接,去掉重复的域名部分。

内容的提问来源于stack exchange,提问作者Alie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:26:23