我正在尝试将路由过滤器应用于除主页之外的所有路径。我是这样做的:
Route::whenRegex('/^\/[\S]+/', 'myFilter');
所以,基本上,我说:匹配所有以/
开头的路线,然后是任何非空白字符。但是,过滤器不起作用。
过滤器本身:
Route::filter('myFilter', function() {
if (Session::has('userRegState')) {
return Redirect::action('DefaultController@home');
}
});
我检查了它 - userRegState
会话变量已设置,但没有重定向。过滤器中使用的正则表达式是错误的吗?
答案 0 :(得分:0)
好吧,似乎在Laravel的路由逻辑中可能会出现某种正斜杠剥离,这使得我的模式与它应该的不匹配。为了解决这个问题,我省略了正斜杠。
而不是:
Route::whenRegex('/^\/[\S]+/', 'myFilter');
我这样做:
Route::whenRegex('/^\S{2}/', 'myFilter');
最终正则表达式匹配以至少2个非空白字符开头的任何内容。就我而言,它是正斜杠,后跟任何非空白字符,如/a
,/page2
等。