Regex 使用正则表达式作为路由名称应用Laravel筛选器

Regex 使用正则表达式作为路由名称应用Laravel筛选器,regex,laravel,routing,Regex,Laravel,Routing,我正在尝试将路由筛选器应用于除主页之外的所有路由。我是这样做的: Route::whenRegex('/^\/[\S]+/', 'myFilter'); 所以,基本上,我是说:匹配所有以/,后跟任何非空白字符的路由。但是,过滤器不工作 过滤器本身: Route::filter('myFilter', function() { if (Session::has('userRegState')) { return Redirect::action('DefaultContr

我正在尝试将路由筛选器应用于除主页之外的所有路由。我是这样做的:

Route::whenRegex('/^\/[\S]+/', 'myFilter');
所以,基本上,我是说:匹配所有以/,后跟任何非空白字符的路由。但是,过滤器不工作

过滤器本身:

Route::filter('myFilter', function() {
    if (Session::has('userRegState')) {
        return Redirect::action('DefaultController@home');
    }
});

我检查了它-设置了userRegState会话变量,但没有执行重定向。过滤器中使用的正则表达式是否错误?

好的,似乎在Laravel的路由逻辑中有某种正斜杠剥离,这使得我的模式与它应该的模式不匹配。为了解决这个问题,我省略了正斜杠

与此相反:

Route::whenRegex('/^\/[\S]+/', 'myFilter');
我这样做:

Route::whenRegex('/^\S{2}/', 'myFilter');

最后一个正则表达式匹配以至少2个非空白字符开头的任何内容。在我的例子中,正斜杠后跟任何非空白字符,如/a、/page2等。

使用不同的分隔符。我尝试了。。。和%…%已经。没有成功。@Lessugar这条路线的目的是什么?用户在URL中输入空格字符的频率是多少?这与空格无关。关键是要在路由有效时应用路由,因此/page1或/page2,而不是在有人将/page3放入栏中时应用路由。如果设置了session变量,我需要强制用户执行某些操作,因此会出现筛选器。@lessugar应用程序的构建方式不是让用户使用链接导航吗?即,用户在地址栏中输入空格字符的可能性有多大?然后让它重定向到404?