Python cpanel 中的 flask app 路由:只能访问 root url

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

我在 cPanel 中设置了一个 python 应用程序。我已将应用 URL 设置为 backend,当我查询 mydomain.com/backend/ 时,它会返回应用的根视图(这只是一个 html “你好”)。

其余端点是我需要的端点,但我每隔一个返回 404 URL

@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 没有答案

我们团队的一名成员通过添加一个新的子域并在那里设置 url 解决了这个问题。

所以应用程序 运行 而不是 mydomain.com/backend 现在 backend.mydomain.com/backend 并且工作正常。

干杯

您需要修改 .htaccess 文件来实现此目的。 由于您的应用程序在 mydomain.com/backend/ 中,当 apache 找不到时它会给出 404。为避免这种情况,您需要像下面这样使用,它将所有请求重定向到您的应用程序。 Flask 会处理剩下的事情。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /backend/ [L]

将以下规则添加到应用程序目录中的 .htaccess url

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

为我解决了这个问题

我的 Flask 应用程序中的所有路由(“/”除外)都遇到了同样的问题,返回 500 错误:内部服务器错误。

就我而言,.htaccess 文件包含早期我在 cpanel 上使用网站构建器应用程序时留下的代码。删除网站构建器项目并没有删除 .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/ [L,QSA]

禁用此代码解决了我的问题。