gpt4 book ai didi

python - Flask中的路径路由

转载 作者:太空狗 更新时间:2023-10-29 19:28:44 25 4
gpt4 key购买 nike

我想在共享主机环境中运行 Python CGI。我按照 Flask 的例子想出了一个如下所示的小应用程序:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
return "Hello World!"

@app.route("/pi")
def pi():
return "3.1416"

if __name__ == "__main__":
app.run()

我的 .htaccess 包含:

Options +ExecCGI 
AddHandler cgi-script .cgi .py .rb
DirectoryIndex index.cgi index.htm

而我的index.cgi

#!/usr/bin/env python
from wsgiref.handlers import CGIHandler
from firstflask import app

CGIHandler().run(app)

它成功地将路径 / 映射到 index(),但是它无法将路径 /pi 映射到 pi( ),而不是返回 404 错误。我想我错过了一些明显的东西。谢谢您的帮助。

最佳答案

关于 cgi 与 wsgi 的评论是有效的,但如果您真的想使用 cgi 设置,则需要一些重写规则以便使用 index.cgi 捕获“/”以外的 URL。通过您的设置,您基本上可以说索引文件是 index.cgi,但如果路径中有其他内容,index.cgi 将不会被执行。这就是为什么您收到 404 Not Found for/pi 请求的原因。

您可以通过请求 url/index.cgi/pi 来访问 pi() 函数,它会成功地为您呈现 3.1416,但显然这不是一个很好的 URL。这给出了关于重写需要配置什么的提示:将所有请求重写为/到/index.cgi/。这提供了非常简单的重写规则以及您的原始配置:

Options +ExecCGI
AddHandler cgi-script .cgi .py .rb
DirectoryIndex index.cgi index.htm

RewriteEngine On
RewriteRule ^index.cgi/(.*)$ - [S=1]
RewriteRule ^(.*)$ index.cgi/$1 [QSA,L]

关于python - Flask中的路径路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9982120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com