【问题标题】:Laravel 5 - Redirect previous route to a new routeLaravel 5 - 将以前的路线重定向到新路线
【发布时间】:2015-09-20 16:06:46
【问题描述】:

我的 Laravel 应用中有以下路由组。

Route::group(['prefix' => 'home'], function() {
  Route::controllers([
    'contents'  => 'site\ContentController',
  ]);
});

现在我想把前缀改成别的东西

Route::group(['prefix' => 'user'], function() {
  Route::controllers([
    'contents'  => 'site\ContentController',
  ]);
});

如何将旧的“前缀”路由重定向到新的路由,以便正确重定向任何旧 URL?

【问题讨论】:

  • 重定向是指使用 301 代码重定向,以便爬虫知道内容已移动?还是您只想通过homeuser 路由访问内容?
  • 我希望它类似于 Route::group['prefix'=>'home'], function() { Redirect::to('a/user/')... ... ?? (就像直接在 routes.php 中处理它一样?)
  • Apache 比在应用程序内部处理这个更快(参见 Jeemusu 的响应)。

标签: php laravel


【解决方案1】:

如果您需要使用 301 Moved Permanently 状态代码进行重定向(以通知爬取您网站的机器人内容已永久移动到新网址),那么您可以在您的网站.htaccess

RewriteRule ^home/(.*)$ /user/$1 [R=301,NC,L]

【讨论】:

    【解决方案2】:

    我不知道 /home/ 中的具体 URL 是什么,所以我假设您希望 /home/* 中任何内容的任何 URL 都重定向到 /user/ 中的相同 URL。

    因为这是一项永久性更改,您需要确保执行 301“永久”重定向。

    Route::any('home/{restOfURL}', function ($restOfURL) {
        return redirect("/user/$restOfURL", 301);
    })->where('restOfURL', '.*'); 
    

    顺便说一句,需要最后的 where() 部分来允许路径中的 '/' 并使它只是获取整个内容,以防万一你有更多斜杠的 URL(例如“/home/foo /bar")。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-02
      • 2021-12-17
      • 2023-01-03
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 2016-11-08
      • 2015-12-11
      相关资源
      最近更新 更多