【问题标题】:Adding prefix to existing URLs in Laravel 5在 Laravel 5 中为现有 URL 添加前缀
【发布时间】:2026-02-20 05:25:01
【问题描述】:

问题:我正在我的 Web 应用程序中实现本地化功能,但该应用程序处于开发中期,因此为了不重写 <form action=""><a href=""> 中的所有链接,我需要一个解决方案,只需添加一个在 /en/ 或 /es/ 等所有其他路由之前为 tu URL 添加前缀,但该应用程序会将 /localhost/en/ 视为 localhost/。

要清除 <a href="/admin"> 之类的链接,就像宣传的 http://localhost/admin 一样工作,我需要它像 http://localhost/en/admin 一样工作

我不知道哪些代码有帮助,所以我会根据要求添加代码。

route.php 看起来像这样

<?php

Route::get('/', 'HomeController@index');
Route::get('admin/blocks/{size}', "AdminController@getBlocks");
Route::get('admin/del-block/{id}', "AdminController@getDelBlock");


Route::controllers([
    'admin' => 'AdminController',
    'auth' => 'Auth\AuthController',
    'password' => 'Auth\PasswordController',
    'products' => 'ProductsController'
]);
Route::get('/{slug}', "HomeController@getPage");
Route::get('/{slug}/{subslug}', "HomeController@getPage");

在视图中我手动生成 URL

<a href="/admin/blocks{{$block->size}}">Link</a>
<form action="/products/new" > </form>

【问题讨论】:

  • 这是一个添加本地化的好例子laracasts.com/discuss/channels/tips/…
  • @KamranAdil 做了所有这些,但没有帮助,所有路线仍然中断
  • 您必须提供更多信息。你试过什么?向我们展示您的路线文件以及您如何在视图中生成 URL。

标签: php laravel laravel-5


【解决方案1】:

如果您希望http://localhost/adminhttp://localhost/en/admin 由相同的控制器处理,那么您需要在routes.php 中编写2 组路由。

这种方式有 2 个入口点指向完全相同的应用程序逻辑。

非本地化网址的第一个入口点:/admin。第二个将带一个参数:{lang}/admin

【讨论】:

  • 但是 /en/ 可以是任何 ISO 2 字符国家代码,这是不合逻辑的,我需要 X 组路线???如果动态添加语言,那么它甚至不可能