十月CMS - 如何正确路由
我一直在审查十月CMS路由文档(https://octobercms.com/docs/plugin/registration#routing-initialization),但我认为我错过了一些东西。我有一个名为'deals'的页面,它提供了一些基本信息以及一个插件(称为'deals')组件。因此,如果有人访问网址十月CMS - 如何正确路由
http://www.example.com/deals
不过,我想创建一个路由:页面通常出现在URL
http://www.example.com/deals2
它会自动将他们带回
http://www.example.com/deals
我知道我应该在我的插件目录中创建一个routes.php文件。但是,当我尝试使用
Route::get('/deals2', function()
{
return View::make('deals');
});
它抱怨说它无法找到'交易'视图。我究竟做错了什么?
此外,我怎么能航线它使我的主页
http://www.example.com
将路线
http://www.example.com/deals
在OctoberCMS和Laravel它是基于,一个路由重定向到另一个,你可以这样做:
// Redirect /deals2, /deals3, ... to /deals
Route::get('{dealSlug}', function($dealSlug) {
return redirect('deals');
})->where('dealSlug', '^deals[0-9]+');
// Redirect homepage to /deals
Route::get('/', function() {
return redirect('deals');
}
第一路由使用的路由参数与regex constraint并重定向任何请求从/deals
开始,并以您的/deals
路线的号码结尾。这意味着它会将/deals1
,/deals2
,/deals3
等路由到/deals
。
第二条路线将您的主页重定向到/deals
。
当然,重定向会花费额外的请求。如果你不想这样做,那么你可以在Apache或Nginx中进行重定向。
根据您的意见,如果您想将/deals[any-number]/[anything]
重定向到/deals/[that-same-anything]
那么您应该在第一条路线上添加optional route parameter。这将是这样的:
// The new first route
Route::get('{dealSlug}/{extra?}', function($dealSlug, $extra = '') {
return redirect('deals/' . $extra);
})->where('dealSlug', '^deals[0-9]+');
当然,如果/deals/[anything]
路由不存在,那么你会得到一个404
这很好,谢谢。一个问题,你将如何调整第一个重定向,以便它可以处理额外的url段(例如/ deals2/ca-toronto会去/ deal/ca-toronto)? – user2694306
尝试 Route::get('/deals2', function(){return Redirect::to('/deals')});
这将重定向需额外要求的成本浏览器。
如果有帮助,我使用的“脏”的解决方法为家页面在我创建的网站上重定向。把这个添加到你的.htaccess文件中:'RewriteRule^/?$ http://www.example.com/deals [R = 301,NC,L]' 你可以对你想重定向的其他url做同样的处理,但再一次,这只是我使用的一种解决方法,因为我不知道该怎么做才能正确执行....所以不是真正的答案。 – merodeador
这是一个很好的黑客攻击,但我希望有一个内置的方法。感谢您的评论。 – user2694306
您是否正在尝试重定向'/ deals2',或者像'/ deals [some-number]'这样的任何路线? – BrokenBinary