laravel 路由如何写,才能实现 /post 和 /post/ 指向一个位置?

发布于 2022-09-01 06:01:46 字数 883 浏览 12 评论 0

现在,/post/总会跳到别的页面,而不是跳到/post的位置。

我的laravel版本是4.2,下面是测试代码。

phpRoute::get('post', function() { return 'w/out slash'; });
Route::get('post/', function() { return 'with slash'; });
phpRoute::get('post/', function() { return 'with slash'; });
Route::get('post', function() { return 'w/out slash'; });

以上两种配置,结果都如下,都是/post/ 301 跳到别的页面,/post页面正常。

curl http://localhost/gitcafe/public/post
with slash
curl http://localhost/gitcafe/public/post/
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://localhost/post">here</a>.</p>
</body></html>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

可是我不能没有你 2022-09-08 06:01:46

会吗?L5 Route组件的行为我记得是:

  1. 无论带结尾斜线与否,均视为同一个路由;
  2. 带斜线的301跳转到不带斜线的(至少对GET如此);
  3. 同一个路由指定两次时,后边的覆盖前边的。

以下是测试用例与结果:

Case 1

$ diff my_l5_app/app/Http/routes.php l5_fresh/app/Http/routes.php
22,24d21
<
< Route::get('post/', function() { return 'with slash'; });
< Route::get('post', function() { return 'w/out slash'; });

$ curl http://test1.l5.invalid/post/
这里Web server提示了301跳转到 http://test1.l5.invalid/post
SF的前台渲染有误,结果见 http://pastebin.com/ZMh0smvq

$ curl http://test1.l5.invalid/post
w/out slash

Case 2

$ diff my_l5_app/app/Http/routes.php l5_fresh/app/Http/routes.php
22,24d21
<
< Route::get('post', function() { return 'w/out slash'; });
< Route::get('post/', function() { return 'with slash'; });

$ curl http://test1.l5.invalid/post/
这里Web server提示了301跳转到 http://test1.l5.invalid/post
SF的前台渲染有误,结果见 http://pastebin.com/ZMh0smvq

$ curl http://test1.l5.invalid/post
with slash
浪荡不羁 2022-09-08 06:01:46

因为 /post/和/post 是两个路由路径, 要让他俩指向一个位置,分配配置他俩,都指向同一个位置。

述情 2022-09-08 06:01:46

Laravel不知道,不过其他路由我都是后边加?的
/post/?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文