cpanel中的Python烧瓶应用程序路由:只能访问root url
Posted
技术标签:
【中文标题】cpanel中的Python烧瓶应用程序路由:只能访问root url【英文标题】:Python flask app routing in cpanel: can only access root url 【发布时间】:2020-11-16 06:54:24 【问题描述】:我在 cPanel 中设置了一个 python 应用程序。我已将应用程序 URL 设置为 backend
,当我查询 mydomain.com/backend/
时,它会返回应用程序的根视图(这只是一个 html “你好”)。
其余端点是我需要的,但我在每个其他 URL 上都返回 404
@app.route('/')
def hello_world():
logger.debug("Hi there")
return "<h1 style='color:red'>Hi there</h1>"
@app.route('/test', methods=['POST','GET'])
def test():
logger.info("Got test request")
return 'ok' : 'success!'
mydomain.com/backend/ --> Hi there
mydomain.com/backend/test --> 404
mydomain.com/backend/<any_other> --> 404
我敢打赌,在到达脚本之前,还有其他一些服务会返回 404。我在public_html/.htaccess
中找不到对backend/
的任何引用。依赖关系没问题(没有包抱怨)。
我在服务器上的权限非常有限。任何指针将不胜感激。
谢谢!
Ps 发现a similar question 没有答案
【问题讨论】:
这能回答你的问题吗? Are a WSGI server and HTTP server required to serve a Flask app? 没有。我相信我的问题特别与映射应用程序的 cpanel 方式有关。 【参考方案1】:我的 Flask 应用程序中的所有路由(“/”除外)都有相同的问题,返回 500 错误:内部服务器错误。
在我的例子中,当我在 cpanel 上使用站点构建器应用程序时,.htaccess 文件有剩余代码。删除网站构建器项目并没有删除 .htaccess 文件中的代码,并且此旧代码会导致问题。
代码包括以下内容:
RewriteEngine On
RewriteBase /
DirectoryIndex index.php index.cgi index.html
RewriteCond %REQUEST_FILENAME !-f [OR]
RewriteCond %REQUEST_URI ^\/(js\/main\.js|css\/(\d+|common|site)\.css)$
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ ncsitebuilder/$1 [L,QSA]
禁用此代码为我解决了这个问题。
【讨论】:
【参考方案2】:将以下规则添加到应用程序 url 目录中的 .htaccess 中
RewriteEngine on
RewriteRule ^http://%HTTP_HOST%REQUEST_URI [END,NE]
为我解决了这个问题
【讨论】:
【参考方案3】:您需要修改 .htaccess 文件以实现此目的。 由于您的应用程序在 mydomain.com/backend/ 中,当 apache 没有找到它时它会给出 404。为避免这种情况,您需要使用如下方式将所有请求重定向到您的应用程序。 Flask 会处理剩下的事情。
RewriteEngine On
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . /backend/ [L]
【讨论】:
【参考方案4】:我们团队的一名成员通过添加一个新的子域并在那里设置 URL 来解决这个问题。
因此,应用程序现在在 backend.mydomain.com/backend
上运行,而不是 mydomain.com/backend
,并且运行良好。
干杯
【讨论】:
我很高兴知道为什么这行得通。对 cpanel 感到羞耻,对我们怜悯。以上是关于cpanel中的Python烧瓶应用程序路由:只能访问root url的主要内容,如果未能解决你的问题,请参考以下文章