【问题标题】:Can't Add Routes to Flask using Passenger WSGI on A2 shared hosting无法在 A2 共享主机上使用乘客 WSGI 将路由添加到 Flask
【发布时间】:2020-05-04 11:48:13
【问题描述】:

我将flask 与passenger_wsgi 一起使用,我只能让默认的“/”路线工作,所以我的app.py 看起来像:

import os

from flask import Flask, request, render_template, redirect, url_for

project_root = os.path.dirname(os.path.realpath('__file__'))
template_path = os.path.join(project_root, 'app/templates')
static_path = os.path.join(project_root, 'app/static')

app = Flask(__name__, template_folder=template_path, static_folder=static_path)

@app.route('/')
def index():
    return 'Hello, World'

@app.route('/inplay')
def getInPlay():
    return 'This is a test'

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

passenger_wsgi.py 看起来像

import os
import sys
import importlib.util

sys.path.insert(0, os.path.dirname(os.path.realpath('__file__')))
spec = importlib.util.spec_from_file_location("wsgi", "app.py")
wsgi = importlib.util.module_from_spec(spec)
spec.loader.exec_module(wsgi)

application = wsgi.app

如果我最后只使用 api/ 访问我的 url,它可以工作并显示 hello world,如果我执行 api/inplay it 404s,不确定我错过了什么? 谢谢

【问题讨论】:

  • 我有一个类似的问题,只有根 URL 可以工作,所有其他路由都返回 404。将以下内容添加到 .htaccess 文件的顶部:RewriteEngine on RewriteRule ^http://%{HTTP_HOST}%{REQUEST_URI} [END,NE] 从以下位置获取此信息: [stackoverflow.com/a/63971427/10122266]

标签: python flask passenger wsgi


【解决方案1】:

据我所知,/inplay 路由不是这样工作的。我也在努力寻找一种工作方式。网上所有的信息都只是简单的 hello world 示例,它是如此无用。 Phusion 乘客确实应该发布一些好的示例,这样人们就可以了解与使用 gunicorn nginx 等相比,在 Cpanel 上构建一个好的 python 示例是多么容易(这在访问受限的 Web 托管服务器上可能是不可能的)。如果您发现如何路由其他路径甚至在模板、静态结构上使用它,请分享。

【讨论】:

  • 我有一个类似的问题,只有根 URL 可以工作,所有其他路由都返回 404。将以下内容添加到 .htaccess 文件的顶部:RewriteEngine onRewriteRule ^http://%{HTTP_HOST}%{REQUEST_URI} [END,NE]。此信息来自:[stackoverflow.com/a/63971427/10122266].
【解决方案2】:

好的,这行得通 - RewriteRule ^http://%{HTTP_HOST}%{REQUEST_URI} [END,NE]

诀窍是找出要更新的 .htaccess。

转到您网站的根 public_html。您现在将在您的应用程序名称中找到一个新目录。转到该子目录并编辑该位置的 .htaccess 文件。这个文件已经有关于 python 配置的规则。只需在底部添加以下内容 -

RewriteEngine On
RewriteRule ^http://%{HTTP_HOST}%{REQUEST_URI} [END,NE]

将更新保存到 .htaccess 就可以了。

【讨论】:

猜你喜欢
  • 2012-05-10
  • 2017-11-08
  • 1970-01-01
  • 2012-06-11
  • 1970-01-01
  • 2015-01-06
  • 2018-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多