Robot.txt, как разрешить страницу, которая заканчивается на /, но запретить все страницы после / [duplicate]

В целом точка SettingWithCopyWarning должна показывать пользователям (и другим пользователям), что они могут работать на копии, а не на оригинале, как они думают. Там есть ложные срабатывания (IOW вы знаете, что делаете, поэтому ok ). Одна из возможностей - просто отключить (по умолчанию предупреждение warn ), как предлагает @Garrett.

Ниже приведено значение для каждого параметра.

In [1]: df = DataFrame(np.random.randn(5,2),columns=list('AB'))

In [2]: dfa = df.ix[:,[1,0]]

In [3]: dfa.is_copy
Out[3]: True

In [4]: dfa['A'] /= 2
/usr/local/bin/ipython:1: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_index,col_indexer] = value instead
  #!/usr/local/bin/python

Вы можете установить флаг is_copy на False, который эффективно отключит проверку * для этого объекта``

In [5]: dfa.is_copy = False

In [6]: dfa['A'] /= 2

Если вы копируете текст, то вы знаете, что вы делают , поэтому дальнейшее предупреждение не будет.

In [7]: dfa = df.ix[:,[1,0]].copy()

In [8]: dfa['A'] /= 2

Код, который OP показывает выше, в то время как законный, и, вероятно, что-то, что я делаю, является технически обоснованным для этого предупреждения , а не ложным положительным. Другой способ not иметь предупреждение - выполнить операцию выбора через reindex, например

quote_df = quote_df.reindex(columns=['STK',.......])

Или,

quote_df = quote_df.reindex(['STK',.......], axis=1) # v.0.21
2
задан moobot 31 January 2013 в 05:47
поделиться

2 ответа

Посмотрев на собственный файл robots.txt Google , они делают именно то, что я задавал.

В строке 136-137 они имеют:

Disallow: /places/
Allow: /places/$

. Таким образом, они блокируют любую вещь в местах, но разрешают URL-адрес корневых мест. Единственное отличие от моего синтаксиса - порядок, первый Disallow.

2
ответ дан moobot 3 September 2018 в 15:43
поделиться

Стандарты

Согласно спецификации HTML 4.01, Приложение B.4.1 , значения, разрешенные в Disallow (не предназначенные для каламбуров), являются частичными URI (представляющими частичные или полные пути ), только:

Поле «Запретить» указывает частичный URI, который не следует посещать. Это может быть полный путь или частичный путь; любой URI, начинающийся с этого значения, не будет получен. Например,

Disallow: / help запрещает как /help.html, так и /help/index.html, тогда как

Disallow: / help / запрещает /help/index.html, но allow /help.html.

Я не думаю, что с тех пор ничего не изменилось, поскольку текущие черновики HTML5 вообще не упоминают robots.txt.

Расширения

Однако на практике многие роботизированные двигатели (например, Googlebot ) более гибки в том, что они принимают. Если вы используете, например:

Disallow: /*.gif$

, то робот Googlebot пропустит любой файл с расширением gif. Я думаю, что вы могли бы сделать что-то подобное, чтобы запретить все файлы под папкой, но я не уверен на 100% (вы можете протестировать их с помощью Инструментов Google для веб-мастеров ):

Disallow: /special-offers/*.*$

Другие опции

В любом случае вы не должны слишком полагаться на это (поскольку каждая поисковая система может вести себя по-другому), поэтому, если это возможно, было бы желательно использовать метатеги или заголовки HTTP . Например, вы можете настроить ваш веб-сервер для включения этого заголовка во все ответы, которые не следует индексировать (или следовать):

X-Robots-Tag: noindex, nofollow

Искать лучший способ сделать это на вашем конкретном веб-сервере. Вот пример в Apache, сочетающий mod_rewrite с mod_headers , чтобы условно установить некоторые заголовки в зависимости от шаблона URL. Отказ от ответственности: я не тестировал его сам, поэтому не могу сказать, насколько он работает.

# all /special-offers/ sub-urls set env var ROBOTS=none
RewriteRule ^/special-offers/.+$ - [E=ROBOTS:none]

# if env var ROBOTS is set then create header X-Robots-Tag: $ENV{ROBOTS}
RequestHeader set X-Robots-Tag %{ROBOTS}e env=ROBOTS

(Примечание: none эквивалентно noindex, nofollow)

1
ответ дан mgibsonbr 3 September 2018 в 15:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: