为什么当我在 url (Flask) 末尾添加“/”时网站会出现 404?

Why does the website 404 when I add a "/" at the end of the url (Flask)?

当我访问我的(想象中的网站)时,它有效:

mywebsite.com/flowers

但是如果我在末尾添加一个“/”,我会得到一个“找不到”的错误:

mywebsite.com/flowers/

假设我的路线是:

@app.route('/flowers', methods=['GET'])
def xyz():..

我应该将“/flowers/”重定向到/“flowers”还是应该添加多条路线?如果不为每个(原始路由 +“/”)复制粘贴我的整个函数,我不确定它应该如何工作。

在 Flask 中,带和不带尾随 / 的 URL 重定向工作方式不同。

@app.route('/works/')
def works():
    return 'This works'

@app.route('/sorry')
def sorry():
    return 'sorry'

works 端点的 URL 有尾部斜杠。它类似于文件系统中的文件夹。如果您访问 URL 时没有尾部斜杠 (/works),Flask 会将您重定向到带有尾部斜杠 /works/.

的 URL

sorry 端点的 URL 没有尾部斜杠。它类似于文件的路径名。使用尾部斜杠 /sorry/ 访问 URL 会产生 404“未找到” 错误。

或者,要使其在应用程序级别运行,您可以使用

app.url_map.strict_slashes = False

strict_slashes 设置为 False 将按预期使用 /sorry/ 路由。

URL 以斜线结尾的路线是 branches,其他路线是 leaves。如果启用 strict_slashes(默认),访问没有尾部斜杠的分支 URL 将重定向到附加斜杠的 URL。

参考:Flask doc , Werkzeug Docs