这个问题已经在这里有一个答案:
- 在瓶静态文件-的robot.txt,sitemap.xml的(mod_wsgi的) 9个回答
我读过,在安静的几个地方是提供静态文件应该留给服务器,例如在一对夫妇的答案在这太问题 。 但是我用的是OpenShift PaaS和无法弄清楚如何修改.htaccess文件存在。
我碰到这一段代码 ,从模板提供的地图。 我这样做,我的应用程序同时为地图,和robots.txt的,像这样 -
@app.route("/sitemap.xml")
def sitemap_xml():
response= make_response(render_template("sitemap.xml"))
response.headers['Content-Type'] = 'application/xml'
return response
@app.route("/robots.txt")
def robots_txt():
return render_template("robots.txt")
这种情况有任何伤害,或者是我的方法好吗?
放robots.txt
和sitemap.xml
为您的应用程序的static
目录,并确定这样的观点:
from flask import Flask, request, send_from_directory
@app.route('/robots.txt')
@app.route('/sitemap.xml')
def static_from_root():
return send_from_directory(app.static_folder, request.path[1:])
瓶有建于提供静态文件的支持。
做一个/static
目录,并把你的文件存在。 然后,当你实例化Flask
,指定static_url_path
参数:
app = Flask(__name__, static_url_path='/')
默认值是从静态文件/static/
路径,但希望他们担任/
所以他们是在预期的位置。
见瓶API文档获取更多信息。
除了开销和不必要的代码,用你的方法的问题是,如果/当你要服务于一个文件中包含的东西,看起来像一个模板标签render_template
-你可能会导致渲染错误。 如果你读文件到内存中(一次,方法不是内),然后使用该字符串作为响应的正文,而不调用render_template
,你至少会避免这样的问题。
最好的办法是到static_url_path设置为根URL
from flask import Flask
app = Flask(__name__, static_folder='static', static_url_path='')
文章来源: With Flask, how can I serve robots.txt and sitemap.xml as static files? [duplicate]