With Flask, how can I serve robots.txt and sitemap.xml as static files?

flask, python, static-files

Solution

Put `robots.txt` and `sitemap.xml` into your app's `static` directory and define this view:

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:])

Problem

I've read on quiet a few places that serving static files should be left to the server, for example in a couple of the answers on this SO question. But I use the OpenShift PaaS, and can't figure out how to modify the .htaccess file there. I came across this piece of code that serves the sitemap from a template. I did that on my app for both the sitemap, and robots.txt, like so - ``` @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") ``` Is there any harm in this, or is my approach okay?

Original source

Related problems