首页 > 解决方案 > 使用 '?' 在旧 URL 的路由中

问题描述

/order/step1.php?service=999我们在互联网上有很多这样的 URL 。

当您迁移到 Laravel 时,您是否必须放弃所有在 Internet 上发布的旧链接?

我们尝试使用mod_rewrite简单地将 URL 重写为,/order/step1/999但由于 Laravel 的 .htaccess 不起作用。

RewriteRule ^/order/step1\.php\?service=([0-9]+)$ /order/step1/$1 [L,QSA]

我们还尝试将路由添加到 web.php 中,如下所示:

Route::get('/step-1.php?service={slug}', 'PageController@step1');

这也不起作用。

我们希望能够不丢失所有旧 URL。

标签: phplaravellaravel-5

解决方案


鉴于网址是这样的:

/order/step1.php?service=999

?service=999段可以作为查询参数。所以我认为这应该可以解决问题:

Route::get('order/step-1.php', 'PageController@step1');

然后在你的控制器中:

# PageController.php

public function step1(Request $request)
{
    $slug = $request->query('service');
    dd($slug) // '999'
}

检查文档的“检索输入”>“从查询字符串中检索输入”部分。


推荐阅读