【问题标题】:I've tried to add an web app I made using flask to my WordPress site, but only the root route works. Others return 404我尝试将使用烧瓶制作的 Web 应用程序添加到我的 WordPress 网站,但只有根路由有效。其他人返回404
【发布时间】:2025-12-13 07:10:01
【问题描述】:

我正在学习如何使用烧瓶在 Python 中创建 Web 应用程序,并且我想在我的 WordPress 网站上添加一个,但我已经在同一个问题上停留了 2 天。有人,请解释我做错了什么。 在我使用 cPanel 安装应用程序后,我能够在 Google Chrome 中访问它的索引页面(虽然在 Firefox 中它有时会返回“Web 应用程序无法由 Phusion Passenger 应用程序服务器启动。”),但所有其他页面都返回 404错误。起初,html 表单试图从网站的根目录开始访问页面,即example.com/page,而不是example.com/app_folder/page,但我通过写<form action="{{ url_for('page') }}" method="post">而不是<form action="/page" method="post">来修复它。

所以链接是正确的,但它仍然是 404。前 2 条路由的 application.py 代码是这样的:

app = Flask(__name__)

app.config["TEMPLATES_AUTO_RELOAD"] = True

app.config["DEBUG"] = True

# Configure CS50 Library to use SQLite database
db = SQL("sqlite:///companies.db")

@app.route("/")
def index():
    companies = db.execute("SELECT * FROM companies ORDER BY women DESC")
    return render_template("index.html", companies=companies)


@app.route("/company")
def company():
    company = request.args.get("company")
    return render_template("company.html", company=company)

index.html 中的 HTML 表单应该向“/company”发送请求:

<form id="company" action="{{ url_for('company') }}" method="get">
    <input type="hidden" name="company" value="{{company.company_name}}">
    <input type="submit" value="?">
</form>

company.html 与 index.html 位于同一“模板”文件夹中。

我已经安装并导入了所有必要的库。该应用程序在 IDE 上独立运行时运行良好。但现在它的“/公司”和任何其他非根路由返回 404。我试过搞乱passenger_wsgi.py,但无论我在其中写什么,结果似乎都是一样的,即使它是空的或具有相同的代码应用程序.py。

我试图明确告诉它在模板文件夹中查找 HTML(无效)。我已经尝试按照一个问题中的建议将带有路由名称的空文件夹添加到应用程序目录,但它只返回 404 或“Phusion Passenger 应用程序服务器无法启动 Web 应用程序。”

在 application.py 的最后添加 if __name__ == '__main__': app.run() 似乎也没有任何作用。

我没有想法。如果有人以前遇到过类似的问题,请告诉我您是如何解决的。

【问题讨论】:

    标签: python wordpress flask routes wsgi


    【解决方案1】:

    我遇到了同样的问题,我在这里找到了更接近解决方案的方法:

    Python flask app routing in cpanel: can only access root url

    按照这些说明操作后,我不再收到 404 错误,但现在不同的路线只会让我回到根目录。

    【讨论】:

    • 如果某个问题的答案是指向 Stack Overflow 上另一个答案的链接,请flag 将该问题作为副本而不是创建答案。
    最近更新 更多