cPanel 中的 Flask 对 public 文件夹下的图像显示 404
Flask in cPanel showing 404 for images under public folder
我已经使用 CloudLinux 在 cPanel 服务器中设置了一个 Flask 应用程序。我使用了设置 Python 应用程序功能。
该应用位于文件夹 /home/user/app 中。应用 URL 是 https://www.example.com/app
cPanel 使用 Phusion Passenger 使应用程序与 Apache 一起工作。
当我创建应用程序时,创建了一个文件夹 /home/user/app/public,并且所有图像应该都放在那里。
该应用运行良好,但 public 文件夹中的所有 URL 图像都出现 404 错误。我试过不同的 urls ,比如 https://www.example.com/app/image.jpg, and https://www.example.com/app/public/image.jpg 。总是 404.
这是我第一次使用此设置 Python 应用程序功能。
有谁知道URL使用哪个是正确的,或者需要配置什么才能提供图像?
谢谢!
编辑:
图像 url 是使用 url_for 创建的:
return url_for('general.send_data_file', filename=key)
生成的 url 看起来是正确的
我添加了一个路径来提供文件:
@general_blueprint.route('/public/data_store/data/<filename>', methods=['GET'])
def send_data_file(filename):
return send_from_directory(app.config.get('DATA_FOLDER'), filename)
我收到 404 而不是文件。
生成的文件url例如是/app/public/data_store/data/test.jpg。
该应用程序在 /app 下运行,所有创建的路由都有效,并且在定义路由时不使用 /app。我在 send_data_file 中添加了一个 app.logger.info 调用,它正在被调用。
app.config.get['DATA_FOLDER'] 等于 ./public/data_store/data
send_from_directory 的日志中没有错误。
为了在您的应用程序中的主 static
文件夹之外提供静态文件,您需要在 Flask 配置中更改它,如下所示:
app = Flask(__name__, static_folder='/home/user/app/public')
然后,使用 url_for
作为相对路径,将 static
作为 HTML 文件中的第一个参数:
<img src="{{ url_for('static', filename='images/image.svg') }}" alt="svg image">
我已经使用 CloudLinux 在 cPanel 服务器中设置了一个 Flask 应用程序。我使用了设置 Python 应用程序功能。
该应用位于文件夹 /home/user/app 中。应用 URL 是 https://www.example.com/app
cPanel 使用 Phusion Passenger 使应用程序与 Apache 一起工作。
当我创建应用程序时,创建了一个文件夹 /home/user/app/public,并且所有图像应该都放在那里。
该应用运行良好,但 public 文件夹中的所有 URL 图像都出现 404 错误。我试过不同的 urls ,比如 https://www.example.com/app/image.jpg, and https://www.example.com/app/public/image.jpg 。总是 404.
这是我第一次使用此设置 Python 应用程序功能。
有谁知道URL使用哪个是正确的,或者需要配置什么才能提供图像?
谢谢!
编辑:
图像 url 是使用 url_for 创建的:
return url_for('general.send_data_file', filename=key)
生成的 url 看起来是正确的
我添加了一个路径来提供文件:
@general_blueprint.route('/public/data_store/data/<filename>', methods=['GET'])
def send_data_file(filename):
return send_from_directory(app.config.get('DATA_FOLDER'), filename)
我收到 404 而不是文件。
生成的文件url例如是/app/public/data_store/data/test.jpg。 该应用程序在 /app 下运行,所有创建的路由都有效,并且在定义路由时不使用 /app。我在 send_data_file 中添加了一个 app.logger.info 调用,它正在被调用。
app.config.get['DATA_FOLDER'] 等于 ./public/data_store/data
send_from_directory 的日志中没有错误。
为了在您的应用程序中的主 static
文件夹之外提供静态文件,您需要在 Flask 配置中更改它,如下所示:
app = Flask(__name__, static_folder='/home/user/app/public')
然后,使用 url_for
作为相对路径,将 static
作为 HTML 文件中的第一个参数:
<img src="{{ url_for('static', filename='images/image.svg') }}" alt="svg image">