为什么当我在 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
当我访问我的(想象中的网站)时,它有效:
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/
.
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