2014-07-18 1 views
0

EnvironmentГде разместить файл robots.txt в приложении Python 2.7/Bottle на OpenShift?

  • 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
  • или «корень» структуры приложения?

Edit:

Чтобы уточнить, приложение является приложением 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

Решение

Это было конкретное решение, которое, кажется, работал проинформировано ответ пользовательского ОООНР в.

Добавить маршрут бутылки в приложение Python:

@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 
2

Не имеет значения, где вы поместите файл robots.txt в свой сервер.
Это касается только того, где robots.txt доступен из Интернета.

Для каждого хост, файл должен быть доступен по адресу: /robots.txt. Поэтому он всегда должен находиться в корневом хосте, а не в подпапке.

Примеры:

Когда бот хочет ползать http://example.com/wsgi/static/file_1.txt, он должен искать в файле robots.txt на http://example.com/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