从 Laravel 中的链接中删除未使用的路径

问题描述 投票:0回答:2

我正在做的项目中默认的链接结构如下;

https://abcsite.com/abcsite/about-us

但是中间的路径没有被使用,如何删除它?

再举个例子,解决方案页面的链接结构如下;

https://abcsite.com/abcsite/solutions-1/what-is-abscsite-6

/abcsite、/solutions-1,此路径未使用。

我想删除这些路径和末尾的id号。

我查看了路由和中间件结构,但无法得出结论

php linux laravel url routes
2个回答
0
投票

要实现所需的干净 URL 结构并删除未使用的路径和 ID 号,您可以考虑以下步骤:

更新路线: 检查您的路由并确保它们与所需的 URL 结构匹配。您可能想简化结构并删除不必要的部分。

示例:

Route::get('/about-us', 'AboutUsController@index')->name('about-us');
Route::get('/solutions', 'SolutionsController@index')->name('solutions');
Route::get('/solutions/what-is-abcsite', 'SolutionsController@whatIsAbcSite')->name('solutions.what-is-abcsite');

控制器操作: 更新您的控制器操作以反映简化的 URL。删除不必要的路径段和 ID。

示例:

class AboutUsController extends Controller
{
    public function index()
    {
        return view('about-us');
    }
}

class SolutionsController extends Controller
{
    public function index()
    {
        return view('solutions.index');
    }

    public function whatIsAbcSite()
    {
        return view('solutions.what-is-abcsite');
    }
}

更新视图中的链接: 更新刀片视图中的链接以匹配简化的结构。

示例:

<!-- Link to About Us -->
<a href="{{ route('about-us') }}">About Us</a>

<!-- Link to Solutions -->
<a href="{{ route('solutions') }}">Solutions</a>

<!-- Link to What Is ABCSite in Solutions -->
<a href="{{ route('solutions.what-is-abcsite') }}">What Is ABCSite</a>

清除路由缓存: 更改路由后,清除路由缓存以应用更新:

php artisan route:clear

检查重定向: 如果旧 URL 仍然导致 404 错误,请检查是否存在任何可能与新结构冲突的重定向。

检查 .htaccess 或服务器配置: 如果您使用的是 Apache,请确保您的 .htaccess 文件配置正确。如果您使用 Nginx 或其他服务器,请确保服务器配置允许所需的 URL 结构。

进行这些更改后,您应该拥有更清晰的 URL 结构,没有未使用的路径段和 ID 号。请记住彻底测试以确保所有链接和路由都按预期工作。


0
投票

这个方法在我的项目中不起作用,项目中有路由结构;

Route::get(Session::get('locale').'/'.trans('site.abc').'/{link}/{link2}', [SitePageController::class, 'subDetail']);

类结构也如下;

public function subDetail(Request $request, $toplink, $link)
{
    $page           = Pagedescription::whereLink($link)->first();
    $record         = Pages::whereId($page->page_id)->first();

    $topPage        = Pagedescription::whereLink($toplink)->first();
    $topRecord      = Pages::whereId($topPage->page_id)->first();

    if ($record->parent_id == 1) {
        if ($record->id == 39) {
            return View('site.pages.forwho', compact('record'));
        } else {
            return View('site.pages.discover', compact('record'));
        }
    } elseif ($topRecord->id == 2) {
        $customerComments = Pages::whereId(29)->first();
        return View('site.pages.solutions', compact('record', 'customerComments'));
    } elseif ($topRecord->id == 3) {
        return View('site.pages.features', compact('record'));
    } elseif ($topRecord->id == 33) {
        return View('site.pages.blogDetail', compact('record'));
    } elseif ($record->id == 86) {
        return View('site.pages.helpCenter', compact('record'));
    } elseif ($record->parent_id == 206) {
        return View('site.pages.expert', compact('record'));
    } else {
        $otherPages = Pages::whereParentId($record->parent_id)->orderBy('ordernum', 'ASC')->get();
        return View('site.pages.blankPage', compact('record', 'otherPages'));
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.