php - 使用 '?' 在旧 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。
解决方案
鉴于网址是这样的:
/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'
}
检查文档的“检索输入”>“从查询字符串中检索输入”部分。
推荐阅读
- ios - UITableView 里面的 UICollecionView。如何处理选择?
- asp.net-mvc - 谁在asp.net中重定向html
- java - Autowired bean 为空,但它在 Spring 容器中被赋值
- java - SNMP 侦听器无法从作为表中条目的 OID 读取陷阱
- git - 用于处理开发分支中的多个项目的 Git 工作流标准
- react-native - 如何修复nativebase toast错误未定义不是对象(评估'this.toastInstance._root')
- awk - awk 中的分隔值
- docker - docker容器之间的执行
- css - CSS > 尝试设置按钮样式 - 必须有更简单的方法
- facebook - 更新到 https 后无法验证 facebook og meta