在RobShift上的Python 2.7 / Bottle应用程序中放置robots.txt文件的位置?

时间:2014-07-18 08:14:45

标签: python-2.7 openshift robots.txt bottle

环境

  • Python 2.7
  • OpenShift

申请结构:

.git
.openshift
data
libs
wsgi
 - static
 - views
 - application
 - my_bottle_app.py
README.md
setup.py
setup.pyc
setup.pyo

所需行为

我想为该位置的文件创建robots.txt规则:

wsgi/static/file_1.txt
wsgi/static/file_2.txt

例如:

User-agent: *
Disallow: /file_1.txt
Disallow: /file_2.txt

问题

robots.txt文件是否应放在

  • wsgi
  • wsgi/static
  • 或' root'应用程序结构?

修改

为了澄清,该应用程序是一个Bottle应用程序,因此有许多路径可以提供不同的内容。

此外,所有页面都通过https提供自定义功能:

def redirect_http_to_https(callback):
    '''Bottle plugin that redirects all http requests to https'''

    def wrapper(*args, **kwargs):
    scheme = request.urlparts[0]
    if scheme == 'http':
        # request is http; redirect to https
        redirect(request.url.replace('http', 'https', 1))
    else:
        # request is already https; okay to proceed
        return callback(*args, **kwargs)
    return wrapper

install(redirect_http_to_https)

所以我试图了解应该放置robots.txt的位置,以便正确使用它。

2 个答案:

答案 0 :(得分:2)

将robots.txt文件放在后端的位置无关紧要 只有从Web上可以访问robots.txt的地方才有用。

对于每个主机,该文件必须在/robots.txt处可用。所以它必须始终在主机的根目录中,而不是在子文件夹中。

示例:

当机器人想要抓取http://example.com/wsgi/static/file_1.txt时,它应该在http://example.com/robots.txt上寻找robots.txt。

如果是https://example.com/wsgi/static/file_1.txt(https而不是http),则位置必须为https://example.com/robots.txt
如果是http://www.example.com/wsgi/static/file_1.txt(包含子域),则位置必须为http://www.example.com/robots.txt

答案 1 :(得分:2)

<强>解决方案

这是具体的解决方案,似乎已经得到了用户的回答。

在Python app中添加Bottle路径:

@route('/robots.txt')
def serve_robots():
    return static_file('robots.txt', root='app-root/repo/wsgi/static/')

然后将robots.txt添加到wsgi/static/

然后可以访问robots.txt文件。

https://app-username.rhcloud.com/robots.tx