带有斜杠的 Masonite 路由参数不起作用

Masonite Route Parameters with slash does not work

我的路线:

Get().route('/amp/@website', 'PageController@amp_info').name('amp_info'),
Get().route('/@website', 'PageController@info').name('info')

这个有效:https://websiteopedia.com/www.eventsnow.com 这不 https://websiteopedia.com/https://www.eventsnow.com/

我需要做哪些不同的事情? params 中的斜杠重定向到 404,因为它没有找到任何匹配的路由

是的,为了实现这一点,您有两个选择:使用输入或创建路由编译器

使用输入

你可以让 url 简单地转到 info 方法,在 url 中没有什么特别的:

Get().route('/', 'PageController@info').name('info')

然后你可以点击 https://websiteopedia.com/?website=https://www.eventsnow.com/

这样的路线

然后在 info 方法中,您将正常获得输入:

def info(self, request: Request):
    request.input('website') #== 'https://www.eventsnow.com/'

路由编译器

路由编译器只是一种在 URL 中编译正则表达式的方法。您可以在服务提供商的引导方法之一中创建一个新的编译器。

这个新的编译器看起来像这样:

def boot(self, view: View):
    view.compile('url', r'([^\s]+)')

那么你可以这样构造路由:

Get().route('/@website:url', 'PageController@info').name('info')

这会将其编译到您提供的正则表达式中,您现在可以像以前一样点击路由。