Заголовок страницы: Заголовок страницы title — SEO оптимизация названия страницы

Содержание

Заголовок страницы сайта или как получать в 4 раза больше посетителей

В сегодняшней статье я постараюсь пошагово написать о том, как правильно делать заголовки title, h2, h3, h4, h5, h5, h6 во время написания поста.

заголовок страницы сайта заголовок страницы сайта

Эти заголовки очень важны и от них напрямую зависит количество посетителей на вашем сайте. Поэтому я постараюсь сегодня затронуть все моменты, чтобы вы смогли без проблем придумать отличных заголовок страницы, который понравиться как посетителям, так и поисковым системам.

Давайте начнем из самого главного заголовка title. Для тех, кто не знает, это такой заголовок сайта, которых видят посетители в выдаче, когда вводят в поисковую строку ключевое слово. Вот пример:

заголовок страницызаголовок страницы

В исходном коде этот заголовок страницы сайта выглядит следующим образом:

«title»Самые красивые сайты мира которые вы просто обязаны увидеть «/title»

Технически создать такой заголовок очень просто, для этого сейчас есть немало плагинов. Если у вас ресурс сделан на движке wordpress, то нужно установить плагин All in One SEO Pack. Я уже писал на своем блоге подробную статью о настройке плагина All in One SEO Pack, советую вам обязательно ее прочитать. В ней я на примерах популярных раскрученных seo блогов показывал, как должен выглядеть заголовок сайта, а также как заполнить мета тег description, что увеличить CTR в выдаче.

Заголовок  h2 вы можете сейчас увидеть в самом верху, звучит он у меня следующим образом: «Заголовок страницы сайта или как получать в 4 раза больше посетителей». Создать его также очень просто, например у wordpress его можно прописать во время добавления статьи:

заголовок сайтазаголовок сайта

В исходном коде h2 выглядит так:

«h2»Заголовок страницы сайта или как получать в 4 раза больше посетителей «/h2»

Как видите создать h2 достаточно просто, а вот придумать правильный заголовок, который будет seo оптимизированный и одновременно нравиться поисковым системам не так уж и легко. Сейчас я постараюсь написать о базовых правилах, которых нужно придерживаться при составлении title и h2.

1) Оба заголовка должны содержать ключевые слова.
Если вы хотите продвинуть свой сайт в поисковых системах то каждая статья должна быть заточена под поисковые запросы и их нужно обязательно прописать в заголовки title и h2, причем лучше в самом начале. Какой бы привлекательных заголовок страницы не был, толку от него будет мало, если статью люди не будут находить в поисковых системах :smile:.

2) Заголовки страницы должны быть читабельными.
Мы уже знаем, что заголовок должен содержать поисковые запросы, но это не значит, что он должен состоять только с этих запросов, прописанных через запятую :smile:. Нет, заголовок должен быть всегда заголовком и отражать суть статьи, а простое перечисление ключевых слов поисковики посчитают спамом и пост никуда не продвинется. Поэтому здесь нужно найти золотую серединку, с одной стороны прописать 1-3 поисковых запросов, а с другой, как то грамотно их разбавить, чтобы они хорошо читались.

3) Заголовки страницы должны заинтересовать посетителя.
От title зависит, кликнет посетитель на ваш сайт в поисковой выдаче или нет, и можно сделать вывод, что от этого заголовка напрямую зависит посещаемость вашего ресурса. Поэтому старайтесь сделать так, чтобы люди захотели кликнуть по нему :smile:.

Кроме этого title влияет на кликовые факторы. Если, например посетители в два раза больше переходят на сайт, который находиться на 3 месте в поисковой выдаче, нежели на сайт, который находиться на 2 месте, то вполне возможно, что 2 сайт опуститься вниз, а 3 поднимется вверх. Кликовые факторы напрямую влияют на ранжирование сайта в поисковой выдаче. Поэтому вы можете не только сделать привлекательный заголовок, чтобы заинтересовать человека, а еще кроме этого можно сделать фавикон для Яндекса, фото в выдаче Гугла, красивые URL, сниппет и прочие фишки для улучшения кликабельности.

заголовок заинтересовалзаголовок заинтересовал

4) Заголовки страницы должны быть уникальными.
Во-первых, они должны быть уникальными в приделах вашего сайта, это обязательно, писать 2 статьи с одинаковыми заголовками – это неправильно. Но повторяться они также могут из-за дубликатов страниц на сайте. Чтобы этого не было, вы можете прочитать статью о том, как найти и удалить дубли страниц на сайте, а также как настроить robots-txt.

Кроме этого желательно также придумать такой заголовок, который будет уникальный в интернете, об этом даже Гугл пишет на этой странице, вот цитирую:

Каждая страница сайта должна иметь уникальный описательный заголовок. Если каждая страница интернет-магазина будет иметь заголовок «Распродажа дешевых товаров», пользователи не смогут найти нужную страницу среди множества других.

Если вы пишите какую-нибудь очень важную статью, то можете проверить свой заголовок на уникальность с помощью программы advego plagiatus, но признаюсь честно, я никогда этого не делаю :smile:. Если вы придумаете заголовок, который будет содержать ключевые слова в начале, будет читабельным и еще и заинтересует посетителя, то ничего страшного, если он будет не уникальным. По крайней мере, мне неуникальные заголовки не мешают продвигать свои ресурсы.

5) Заголовки не должны содержать знаки препинания и стоп слова.
Например, точку или знак вопроса в конце заголовка лучше не ставить, то же самое касается и стоп-слов, по возможности их нужно избегать, так как они забирают на себя вес. Хотя, повторюсь еще раз, если вы придумаете заголовок для страницы, придерживаясь первых трех пунктов, то ничего страшного не случится, если там будет одно стопслово :smile:.

6) Длина title должна содержать максимум 11 слов, насчитывающие не больше 65 символов с пробелами. Дело в том, что если будет больше, то все слова просто не будут показаны в поисковой выдаче, и таким образом посетители увидят неполный заголовок. 11 слов и 65 символов – это как раз таки те цифры, которые будут еще показаны в выдаче, хотя я, например, не всегда придерживаюсь этого правила, а иногда прописываю больше :smile:.

6) Не больше одного title и h2 на странице.
Иногда бывает такое, что в бесплатных шаблонах есть по несколько заголовков h2. Вы можете прямо сейчас открыть исходный код любой страницы на своем сайте (CTRL+U) и ввести в поиске «h2». Вы должны найти там только один парный тег в начале заголовка «h2», и в конце «/h2». Если будет больше, то это очень плохо и один из них нужно обязательно удалить. 2 заголовка h2 поисковые системы могут посчитать за спам и наложить санкции на сайт. То же самое касается и заголовка title, обязательно проверьте, чтобы не было дубликатов.

Но вот в принципе, это все правила, которых нужно придерживаться, чтобы получить идеальный заголовок, хотя на практике реализовать все эти пункты очень не просто :smile:.

Использование заголовков h3-h6

Если речь в данной статье идет о заголовках, то можно еще пару слов написать о h3-h6. Это такие заголовки, которые можно увидеть непосредственно в теле поста.  Прописать их можно вручную через HTML редактор. Для грамотного их составления, я бы также выделил несколько правил:

1) Должны находиться только в основном содержимом статьи.
Иногда в бесплатных шаблонах вместо основного заголовка h2 можно увидеть h3. По крайней мере, я однажды скачал такой шаблон :smile:. Старайтесь следить за тем, чтобы подзаголовки h3-h6 были только в статье. Все остальные надписи и блоки на сайте типа «хлебные крошки» или «популярные записи» лучше делать с помощью стилей.

2) При использовании h3-h6 нужно придерживаться иерархии.
Для примера, если вы пишите большую статью на тему «диета для похудения», то лучше разбить ее на подзаголовки, например, так:

«h3»Диета для похудения живота«/h3»
«h3»Диета для похудения ног«/h3»
«h3»Диета для похудения лица«/h3»
«h4»10 советов для похудения«/h4»

Но будет неправильно, если в статье будет идти сначала заголовок h5, потом h4, а потом h3 :smile:.

3) Можно указать ключевые слова (лучше разбавить).
Фразы в подзаголовках имеют больший вес, чем например, просто в тексте. Но если вы пропишите ключевое слово в заголовках title и h2, а потом еще в каждом подзаголовке, то поисковые системы могут посчитать это спамом. Лучше всего разбавлять поисковые запросы и делать заголовки только там, где они нужны посетителю.

Ну, вот в принципе и все. Если вы желаете что-то добавить, то, пожалуйста, комментарии открыты для всех :smile:.

Правильный заголовок страницы сайта — Академия SEO (СЕО)

Заголовки страниц для SEO

Во внутренней оптимизации существует несколько обязательных пунктов, на которые поисковые системы обращают внимание в первую очередь. Как Вы понимаете, заголовок страницы сайта – один из этих пунктов.

Именно по seo заголовкам Google и Яндекс определяют, насколько тематика Вашей страницы совпадает с запросами, которые вводят пользователи. Иными словами, насколько релевантна данная страница. Как мы помним, релевантность страниц – один из главных факторов seo продвижения.
А теперь поговорим о том, как составить правильный заголовок и оптимизировать для поисковых систем.

h2. SEO заголовок страницы сайта

Каждая страница Вашего сайта несет в себе какую-то конкретную информацию (во всяком случае, должна нести). Основную суть информации Вы и будете размещать в заголовке. Например, если Вы продаете квартиры, значит заголовок страницы должен выглядеть как основной запрос и выделяться в коде страницы тегом h2. 
 

 

Использование тегов h2 – обязательное условие seo оптимизации сайтов.

То, как сайт видят пользователи и как его видят поисковые машины, часто сильно отличается. Поэтому, если глазами пользователя Вы видите заголовок вверху сайта, это еще не значит, что их программист не забыл заполнить тег h2. 
Бывают ситуации, когда тегом h2 что-то выделено, но совсем не то, что казалось заголовком на первый взгляд.

 

Логика подсказывает, что в коде страницы должно быть выделено именно «Каркасные дома». Но…
 

В данном случае повезло, что заголовок хотя бы соответствует тематике сайта, но где его искать на сайте, остается только догадываться. Ну, или использовать Ctrl+F.

h3-H6. Теги подзаголовков и их различие

Поисковые системы смотрят не только на заголовок страницы. Подзаголовки используются для выделения дополнительных тем и запросов, которые могут быть полезны пользователям. Мы рекомендуем использовать только теги h3 и h4, хоть их существует больше.

Тегом h3 Вы выделяете дополнительную информацию о товаре или услуге и обязательно разбавляете запрос словами «для людей». Т.е. подзаголовки мы пишем не только для поисковиков, нужно, чтобы они были полезны и интересны людям.

Например, если h2 будет «Женские спортивные шапки оптом», то h3: «Спортивные шапки для женщин оптом в Киеве».
Они получаются более развернутые, но ключевые запросы обязательно должны присутствовать.

Тег h4 раскрывает тему подзаголовка h3. Возьмем как пример текст одного из сайтов с кухнями.

 

 

Подведем итоги: оптимизация заголовков и подзаголовков

Что нужно помнить для правильного написания h2-h4 с точки зрения SEO.

  1. h2 один раз и по делу. На одной странице может быть только один заголовок. Это правило непреложно и обязательно к выполнению. Проверьте, сколько их у Вас на каждой странице и не забывайте, что смотреть нужно только в коде. 
    В заголовке используем только основной запрос для страницы, который хотим продвинуть. Без лишней воды и фантазий. 
     
  2. h3 несколько раз и для людей. Когда речь идет о подзаголовках, можно проявить фантазию и разбавить запросы дополнительными словами, чтобы текст выглядел более доступным и живым. h3 нужно использовать от 2 раз на странице, можно больше.
     
  3. Иерархия подзаголовков. Структура текста с использованием h2-h4 должна выглядеть примерно так: 

    Главное, чтобы сохранялся порядок подзаголовков. Нельзя сразу после h2 использовать h4 – это будет грубой ошибкой.

 

Все истины оптимизации заголовков просты, но если на них обратить должное внимание, Ваш сайт быстро сможет подняться в ТОП. Улучшайте свой сайт с помощью наших рекомендаций и скоро увидите результат.

Как правильно задать HTML заголовок страницы

Урок 2. HTML заголовок страницы

Продолжаем изучение HTML. В этом уроке мы рассмотрим HTML заголовки страниц, какие заголовки бывают, как ими правильно пользоваться и когда они могут применяться. А также разберем параграфы, чтобы Вы уже могли наполнить свою страничку текстом, но, главное, сделать это правильно.

Если Вы не изучили первую статью, то найти ее можно здесь:

Раз вы находитесь на данном уроке, то хотите и дальше изучать тему сайтостроения. И с помощью этих уроков у вас появится базовое понимание, что это такое.

Что делать, если вам нужно больше знаний и хотите, возможно, даже работать в этой области? Лучше найти специализированные курсы. В рунете не так много хороших, где обучают Front-end разработчиков. Мне понравилась программа обучения, которая есть у Нетологии у курса «Front-end разработчик с нуля«. Также неплохая программа и у Skillbox у курс «Front-end разработчик«.

Если изучать веб-разработку, то с профессионалами.

Теория и практика — Параграфы и заголовки HTML страницы

Сегодня мы поговорим о параграфах и заголовках. Начнем с простого — с параграфов и где они применяются.

Параграфы на странице

Я сейчас приведу пример кода, в котором будет присутствовать тег параграфа <p> </p>.

HTML КОД

1
2
3
4
5
6
7
8
<html>
<head>
    <title>Моя первая html страница</title>
</head>
<body>
    <p>Начало обучения технологии html</p>	
</body>
</html>

Основную структуру Вы уже помните из первого урока. Там разбирали основы и смотрели, что же такое HTML. Поэтому сосредоточим свое внимание на том, что находится между тегами <body> </body>.

Когда Вы пишете любой текст на странице, будь это просто абзац или небольшая поясняющая строка под изображением, необходимо этот текст помещать внутрь тега <p> </p>.

В последующих уроках Вы увидите процесс оформления данных абзацев. Сейчас Вы должны понять то, что нельзя размещать тег на странице без какого-либо тега. Потому что в дальнейшем будет сложно применить какие-то индивидуальные стили именно для этого участка текста.

Попробуйте написать несколько абзацев. Некоторые абзацы возьмите в тег <p> </p>, а некоторые оставьте без него. И Вы сразу увидите разнице. Потому что если Вы напишете абзац внутри этого тега, то у него сразу же появятся отступы. А сейчас перейдем уже в HTML заголовкам страницы.

HTML заголовки на странице

В HTML документе присутствует семантика. Я не говорю о технологии HTML5 и его новых тегах. Здесь лишь разберем самые базовые, чтобы Вы быстро смогли освоить азы HTML. Семантика означает то, что не надо заголовки, абзацы, таблицы и так далее, создавать с помощью одного и того же тега. Это можно сделать, но технология HTML более разнообразна и для разных ситуаций предусмотрены соответствующие теги. А Вам лишь необходимо освоить основные теги, чтобы свободно работать с HTML кодом.

Это небольшое введение я написал к тому, что для параграфов необходимо использовать уже известный Вам тег <p> </p>. А вот для заголовков используются теги, которые начинаются с английской буквы «H».

Вот весь список заголовков, которые Вы можете использовать:

Некоторые из данных тегов используются гораздо чаще. Это такие теги как h2, h3 или h4. Если кто-то уже знаком с CSS, то понимает, что заголовок HTML заголовок страницы h4 можно стилизовать таким образом, что он будет внешне похож и на h2 или h3. Но значения, которые они носят, хотя бы для SEO оптимизации, кардинально отличаются. Как правило, эти цифры, внутри тегов, следует понимать как уровень важности того или иного HTML заголовка. Поэтому необходимо очень тщательно прорабатывать данные элементы и тогда поисковые системы станут замечать Ваши статьи.

Пока мы не дошли до CSS, Вы увидите стили заголовков, которые заданы по умолчанию в браузерах. Если Вы вставите один за одним данные теги и внутри напишите какой-либо текст, то увидите следующее:

HTML заголовок страницы

Для поисковых роботов также важно использование заголовков на странице. Есть определенные правила, которые Вы можете прочитать в нашей книге — PDF книга по раскрутке сайта.

После того, как все изучили, сразу же идем в код и пробуем написать все своими руками. Именно так быстрее всего осваивается любой язык программирования. Но технология HTML намного легче любого языка программирования, поэтому здесь сможет разобраться каждый. Таким образом Вы лучше запомните теги.

Видео урок — HTML заголовок страницы? (практика)

Наглядное видео на примере работы с данными тегами:


Домашнее задание

Д/З: в качестве примера напишите небольшой текст, который будет состоять из 5-7 абзацев и 2-3 разнообразных заголовков.

Больше практикуйтесь в параграфах и HTML заголовках страниц!

HTTP-заголовки ответа сервера, важные для SEO

telegram channel

Скорее всего, вы знаете, что при открытии страницы любого сайта происходят действия на сервере, которые не видны пользователям. Однако эти данные обрабатывают поисковые системы. И к счастью, некоторые из этих данных поддаются корректировке, и мы немного можем облегчить работу веб-сервера.

Схема работы веб-сервера и понятие HTTP-заголовки

Итак, в клиент-серверных протоколах, таких как HTTP, сеансы состоят из трёх фаз:

  1. Клиент устанавливает TCP-соединение (или соответствующее соединение, если транспортный уровень не является TCP).
  2. Клиент отправляет свой запрос и ждёт ответа.
  3. Сервер обрабатывает запрос, отправляя ответ обратно, предоставляя код состояния и соответствующие данные.

Схема работы веб-сервера.
Код состояния (200OK, 301, 429, 500 и другие) является лишь частью полного HTTP-ответа, который сервер отправляет клиенту. Полный ответ кода состояния плюс дополнительная информация называется заголовком HTTP.

Этот заголовок может содержать инструкции, которые клиенты и поисковые системы могут использовать для правильной обработки URL.

Важные HTTP-заголовки для SEO

Далее рассмотрим ряд важных элементов заголовка HTTP для SEO.

X-Robots-Tag

Это аналог метатега robots в html. У данного элемента есть преимущества над meta name=“robots”. Например, если вы хотите запретить к индексации файлы PDF, метатег robots не поможет, так как он не работает с PDF-файлами. Вместо этого, вы можете использовать заголовок X-Robots-Tag.

К тому же у X-Robots-Tag есть ещё одно преимущество – его легко настраивать для целых каталогов и папок, что может ускорить работу.

Помимо «noindex» и «nofollow», вы можете прописать другие ответы X-Robots-Tag. Директивы из справки Google — ссылка:

Директивы X-Robots-Tag из справки Google

Canonical

Обычно теги canonical расположены в исходном HTML-коде веб-страницы. Однако вы также можете указать канонический URL как часть HTTP-заголовка URL.

Поскольку реализовать тег rel= “canonical” в HTML довольно просто, редко можно найти канонические ссылки, отправленные как часть HTTP-ответа страницы. Однако всегда стоит перепроверить HTTP Headers страницы на наличие канонических ссылок, особенно если вы видите на сайте необычные проблемы с индексацией и ранжированием. Как именно проверить заголовки сайта, мы расскажем чуть ниже.

Hreflang

Так же, как канонические ссылки, вы можете включить ссылки hreflang в ответ HTTP-заголовка страницы, чтобы сообщить поисковым системам об альтернативных версиях страницы на разных языках и/или для разных стран.

Cache-control

Cache-control может влиять на то, как браузер кэширует страницу и связанные с ней ресурсы. Например, вы можете предоставить ответ «max-age», который сообщает браузеру, что через некоторое время страница должна быть повторно запрошена с сервера. В противном случае кэш страницы действителен то время, которое указано в значении «max-age», тем самым ускоряя скорость загрузки страницы. Директивы из справки Google — ссылка:

Директивы Cache-control из справки Google

Vary

Служит для определения различий отображения контента для ПК и мобильных устройств. Особенно это важно для сайтов, которые используют динамический показ для мобильных пользователей. Для сайтов с адаптивным дизайном данный элемент не так актуален.

При правильной настройке заголовка Vary поисковые боты будут сканировать сайт со всеми указанными типами User-agent и определять, какая версия кода будет ранжироваться для какого типа пользователей.

Last-Modified

В значении Last-Modified необходимо указывать дату последнего изменения ресурса. HTTP Header используется для сравнения нескольких версий одного и того же ресурса. Он тесно связан с заголовками If-Modified-Since и If-Unmodified-Since.

If-Modified-Since

Это условный запрос, который передаёт объект, если он был изменен после указанной даты. То есть передаются данные только в том случае, когда кэш устарел.

If-Unmodified-Since

Это условный запрос, который передаёт объект, только если он не был изменен после указанной даты.

Expires

Дата/время, после которого ответ веб-сервера считается устаревшим. Например, можно указывать текущую дату + 7/10/14 дней.

Accept-Encoding

Алгоритм кодирования, обычно алгоритм сжатия, который можно использовать на отправленном ресурсе. Это заголовок запроса, который запрашивает HTTP-клиент, чтобы сообщить серверу, какую кодировку он поддерживает. Серверу разрешено отправлять содержимое ответа в любой из этих кодировок.

Content-Encoding

Используется для указания алгоритма сжатия. Это заголовок ответа, в котором HTTP-сервер использует этот заголовок, чтобы сообщить клиенту, в какую именно кодировку фактически был закодирован контент.

Content-Length

Размер ресурса в десятичном числе байтов.

Content-Type

Указывает тип носителя ресурса.

Location

Указывает URL-адрес для перенаправления страницы. Он используется только тогда, когда для пользователя указывается перенаправление на другую страницу (3xx код) или при новом местоположении ресурса (201 код).

Проверка HTTP Headers

Далее рассмотрим некоторые способы, как посмотреть HTTP-заголовки страницы или отдельного файла.

Просмотр HTTP-заголовков в браузере Google Chrome

HTTP Headers в Chrome можно найти в инструментах разработчика. Для этого необходимо нажать либо Ctrl+Shift+I (многие используют просто F12), либо правой кнопкой мыши и выбрать пункт «Посмотреть код», либо в верхнем выпадающем меню браузера выбрать «Дополнительные инструменты» → «Инструменты разработчика».

Инструменты разработчика в Google Chrome

После чего выбрать вкладку «Network» и обновить страницу (F5).

Network в Google Chrome

Далее в графе «Name» необходимо выбрать тип файла, для которого вы хотите проверить заголовки, и справа во вкладке «Headers» будут указаны все заголовки текущего файла.

Просмотр http-заголовков в Chrome

Просмотр HTTP-заголовков в браузере Firefox

Аналогичным способом можно проверить заголовки и в Firefox: при помощи Ctrl+Shift+C либо в верхнем выпадающем меню выбрать «Веб-разработка»→«Инструменты разработчика». Далее выбрать вкладку «Сеть» и обновить страницу (F5). После чего выбрать тип документа для проверки и в правой части экрана выбрать вкладку «Заголовки». Перед вами появятся заголовки текущей страницы.

Просмотр http-заголовков в Firefox

Другие способы проверки HTTP-заголовков

Для того чтобы посмотреть HTTP-заголовки в два счёта, есть множество расширений для любого браузера, будь то Google Chrome, Mozilla Firefox или Internet Explorer.

Примеры популярных расширений:

  • Live HTTP Headers для Mozilla Firefox.
  • HTTP Header Spy для Google Chrome и Mozilla Firefox.
  • Microsoft Fiddler для Internet Explorer.
  • Web Developer для Chrome, Mozilla Firefox и Opera.

Также в сети есть большое количество онлайн-программ, при помощи которых вы можете проверить заголовки своего сайта:

Вдобавок в Яндекс.Вебмастере и Google Search Console также есть инструменты проверки HTTP Headers.

В заключение

Внедрение HTTP-заголовков особенно актуально для средних и крупных сайтов для ускорения работы веб-сервера, а также уменьшения расхода краулингового бюджета на ресурсы, которые нет необходимости повторно скачивать. Подробнее о том, какими ещё способами можно увеличить краулинговый бюджет сайта, читайте в статье: https://siteclinic.ru/blog/technical-aspects/kak-uvelichit-kraulingovyj-byudzhet/.

Подписаться на рассылку

Еще по теме:


Просмотр http-заголовков в Firefox

Анастасия А.

SEO-аналитик

Девиз: Никогда не останавливайся на достигнутом.

Оцените мою статью: 

Есть вопросы?

Задайте их прямо сейчас, и мы ответим в течение 8 рабочих часов.

Siteclinic logo

HTTP-заголовки для ответственного разработчика / Блог компании Mail.ru Group / Хабр

Сегодня быть онлайн — это привычное состояние для многих людей. Все мы покупаем, общаемся, читаем статьи, ищем информацию на разные темы. Сеть соединяет нас со всем миром, но прежде всего, она соединяет людей. Я сам пользуюсь интернетом уже 20 лет, и мои отношения с ним изменились восемь лет назад, когда я стал веб-разработчиком.

Разработчики соединяют людей.

Разработчики помогают людям.

Разработчики дают людям возможности.

Разработчики могут создать сеть для всех, но эту способность необходимо использовать ответственно. В конце концов, важно создавать вещи, которые помогают людям и расширяют их возможности. В этой статье я хочу рассказать о том, как HTTP-заголовки могут помочь вам создавать лучшие продукты для лучшей работы всех пользователей в интернете.

HTTP — протокол передачи гипертекста

Давайте сначала поговорим о HTTP. HTTP — это протокол, используемый компьютерами для запроса и отправки данных по интернету.

Когда браузер запрашивает ресурс с сервера, он использует HTTP. Этот запрос включает набор пару ключ-значение, содержащих такую информацию, как версия браузера или форматы файлов, которые он понимает. Эти пары называются заголовками запросов.

Сервер отвечает запрашиваемым ресурсом, но также отправляет заголовки ответа, содержащие информацию о ресурсе или самом сервере.

Request:
GET https://the-responsible.dev/
Accept: text/html,application/xhtml+xml,application/xml
Accept-Encoding: gzip, deflate, br
Accept-Language: en-GB,en-US;q=0.9,en;q=0.8,de;q=0.7
...

Response:
Connection: keep-alive
Content-Type: text/html; charset=utf-8
Date: Mon, 11 Mar 2019 12:59:38 GMT
...
Response Body

Сегодня HTTP является основой интернета и предлагает множество способов оптимизировать работу пользователей. Давайте посмотрим, как можно использовать заголовки HTTP для создания безопасной и доступной сети.

Сеть должна быть безопасной

Раньше я никогда не чувствовал опасности, когда искал что-то в интернете. Но чем больше я узнавал о всемирной паутине, тем больше я беспокоился. Вы можете почитать, как хакеры меняют глобальные CDN-библиотеки, случайные сайты майнят криптовалюту в браузере своих посетителей, а также о том, как с помощью социальной инженерии люди регулярно получают доступ к успешным проектам с открытым исходным кодом. Это нехорошо. Но почему вас должно это волновать?

Если вы сегодня разрабатываете для веба, то не просто пишете код. Сегодня в веб-разработке над одним сайтом работает много людей. Возможно, вы также используете много открытого исходного кода. Кроме того, для маркетинговых целей вы можете включить несколько сторонних скриптов. Сотни людей предоставляют код, запущенный на вашем сайте. И разработчикам приходится работать в подобных реалиях.

Можно ли доверять всем этим людям и всему исходному коду?

Я не думаю, что следует доверять какому-либо стороннему коду. К счастью, есть способы защитить свой сайт и сделать его более безопасным. Кроме того, такие инструменты, как helmet могут быть полезны, например, для экспресс-приложений.

Если вы хотите проанализировать, сколько стороннего кода запускается на вашем сайте, можно посмотреть в панели разработчика или попробовать Request Map Generator.

HTTPS и HSTS — убедитесь, что ваше соединение безопасно

Защищённое соединение является основой безопасного интернета. Без зашифрованных запросов, проходящих через HTTPS, нельзя быть уверенным, что между вашим сайтом и посетителями больше никого нет. Человек может быстро настроить общедоступную сеть Wi-Fi и совершить атаку «человек посередине» на любого, кто подключится к этой сети. Как часто вы используете общедоступный Wi-Fi? Кроме того, как часто вы проверяете, заслуживает ли он доверия?

К счастью, сегодня сертификаты TLS бесплатны; HTTPS стал стандартом, и браузеры предоставляют передовые функции только для защищенных соединений, и даже отмечают веб-сайты, не относящиеся к HTTPS, как небезопасные, что способствует внедрению этого протокола. К сожалению, мы не всегда в безопасности, когда находимся в интернете. Когда кто-то хочет открыть сайт, он не вводит протокол в адресную строку (и почему вообще должен?). Это приводит к созданию незашифрованного HTTP-запроса. Безопасно работающие сайты перенаправляют пользователя на HTTPS. Но что если кто-то перехватит первый незащищенный запрос?

Вы можете использовать заголовки ответа HSTS (HTTP Strict Transport Security), чтобы сообщить браузерам, что ваш сайт работает только через HTTPS.

Strict-Transport-Security: max-age=1000; includeSubDomains; preload

Этот заголовок говорит браузеру, что вы не хотите использовать HTTP-запросы, и тогда он автоматически применит те же запросы к такому же источнику с защищенным соединением. Если вы попытаетесь открыть такой же URL через HTTP, браузер снова будет использовать HTTPS и перенаправит пользователя.

Вы можете настроить, как долго этот параметр должен оставаться активным (max-age в секундах), если захотите потом снова использовать HTTP. Если вы хотите включить поддомены, то можете настроить это с помощью includeSubDomains.

Если вы хотите сделать всё возможное, чтобы браузер никогда не запрашивал ваш сайт по HTTP, можете также задать указатель preload и отправить ваш сайт в глобальный список. Если конфигурация HSTS вашего сайта соответствует минимальному max-age в один год и активна для поддоменов, он может быть включен во внутренний список браузер для сайтов, работающих только через HTTPS.

Задумывались ли вы когда-нибудь, почему вы больше не можете использовать в своем браузере через HTTP локальные переменные среды, такие как my-site.dev? Причина именно в этом внутреннем списке — .dev автоматически включаются в этот список, поскольку в феврале 2019 года он стал настоящим доменом верхнего уровня.

Заголовок HSTS не только делает ваш сайт немного безопаснее, но и ускоряет его работу. Представьте себе, что кто-то заходит по медленному мобильному соединению. Если первый запрос сделан через HTTP только для получения перенаправления, то пользователь может несколько секунд ничего не видеть на экране. А с помощью HSTS вы можете сэкономить эти секунды, и браузер автоматически будет использовать HTTPS.

CSP — четко укажите, что разрешено на вашем сайте

Теперь, когда ваш сайт работает через защищенное соединение, вы можете столкнуться с проблемой, когда браузеры начинают блокировать запросы, которые выходят на незащищенный адрес из-за политик смешанного контента. Заголовок Content Security Policy (CSP) предлагает отличный способ обработки таких ситуаций. Вы можете установить свой набор правил CSP с помощью мета-элементов в предоставляемом HTML или через HTTP-заголовки.

Content-Security-Policy: upgrade-insecure-requests

Указатель upgrade-insecure-requests заставляет браузер волшебным образом переделать все HTTP-запросы в HTTPS-запросы.

Однако CSP касается не только используемого протокола. Он предлагает детальные способы определения того, какие ресурсы и действия разрешены на вашем сайте. Вы можете, например, указать, какие скрипты должны выполняться или откуда загружать изображения. Если что-то не разрешено, браузер блокирует это действие и предотвращает потенциальные атаки на ваш сайт.

На момент написания статьи для CSP существовало 24 различных варианта конфигурации. Они варьируются от скриптов через таблицы стилей вплоть до сервис-воркеров.

Вы можете найти полный обзор на MDN.

Используя CSP, вы можете указать, что должен включать ваш сайт, а что нет.

Content-Security-Policy: default-src 'self'; script-src 'self' just-comments.com www.google-analytics.com production-assets.codepen.io storage.googleapis.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: images.contentful.com images.ctfassets.net www.gravatar.com www.google-analytics.com just-comments.com; font-src 'self' data:; connect-src 'self' cdn.contentful.com images.contentful.com videos.contentful.com images.ctfassets.net videos.ctfassets.net service.just-comments.com www.google-analytics.com; media-src 'self' videos.contentful.com videos.ctfassets.net; object-src 'self'; frame-src codepen.io; frame-ancestors 'self'; worker-src 'self'; block-all-mixed-content; manifest-src 'self' 'self'; disown-opener; prefetch-src 'self'

Вышеприведенный набор правил предназначен для моего личного сайта, и если вы считаете, что этот пример определения CSP очень сложный, то вы абсолютно правы. Я внедрил у себя этот набор с третьей попытки, развёртывая и снова откатывая, потому что он несколько раз ломал сайт. Но есть способ получше.

Чтобы избежать взлома вашего сайта, CSP также предоставляет режим только для отчетов.

Content-Security-Policy-Report-Only: default-src 'self'; ... report-uri https://stefanjudis.report-uri.com/r/d/csp/reportOnly

Используя режим Content-Security-Policy-Report-Only, браузеры просто записывают ресурсы, которые были бы заблокированы, вместо их фактической блокировки. Этот механизм отчетности позволяет проверить и настроить ваш набор правил.

Оба заголовка, Content-Security-Policy и Content-Security-Policy-Report-Only, также предлагают способ определения конечной точки для отправки сообщения о нарушении и регистрации информации (report-uri). Вы можете настроить сервер регистрации и использовать отправленную информацию журнала для настройки правил CSP, пока он не будет готов к отправке.

Рекомендуемый процесс выглядит так: сначала запустите CSP в режиме отчета, проанализируйте входящие нарушения с реальным трафиком, и только тогда, когда не будет обнаружено нарушений ваших контролируемых ресурсов, включите его.

Если вы ищете сервис, который мог бы помочь вам справиться с этими журналами, то рекомендую Report URI, он мне очень помогает.

Общее внедрение CSP

Сегодня браузеры хорошо поддерживают CSP, но, к сожалению, не многие сайты используют её. Чтобы посмотреть, сколько сайтов отдают контент с помощью CSP, я направил запрос в HTTParchive и обнаружил, что только 6 % просмотренных сайтов используют эту политику. Я думаю, что мы можем сделать интернет более безопасным и защитить наших пользователей от невольного майнинга криптовалют.

Сеть должна быть доступной

Пока я пишу эту статью, я сижу перед относительно новым MacBook, используя быстрое домашнее Wi-Fi-подключение. Разработчики часто забывают, что такая ситуация не является стандартной для большинства наших пользователей. Люди, посещающие наши сайты, пользуются старыми телефонами и сомнительными соединениями. Тяжелые и перегруженные сайты с сотнями запросов оставляют им плохое впечатление.

И дело не только во впечатлении. Люди платят различные суммы за трафик в зависимости от места проживания. Представьте себе, вы создаете сайт для больницы. Информация на нём может иметь решающее значение и спасти жизни людей. Если страница на сайте больницы имеет размер 5 Мб, то она не только будет медленно работать, но и может оказаться слишком дорогой для тех, кто больше всего в ней нуждается. Цена пяти мегабайтов трафика в Европе или США ничтожна по сравнению с ценой в Африке. Разработчики несут ответственность за доступность веб-страниц для всех. Эта ответственность включает в себя предоставление правильных ресурсов, выбор правильных инструментов (действительно ли вам нужен JS-фреймворк для лендинга?) и недопущение запросов.

Cache-Control — избегайте запросов на неизменные ресурсы

Сегодня сайт может содержать сотни ресурсов, от CSS до скриптов и изображений. Используя заголовок Cache-Control, разработчики могут указать, как долго ресурс должен считаться «свежим» и может отдавать из кэша браузера.

Cache-Control: max-age=30, public

При правильной настройке Cache-Control передача данных сохраняется, и файлы могут использоваться из кэша браузера в течение определенного количества секунд (max-age). Браузеры должны повторно проверять кэшированные ресурсы по истечении этого периода времени.

Однако, если посетители обновляют страницу, браузеры всё равно повторно проверяют её, включая ссылки на ресурсы, чтобы убедиться, что кэшированные данные всё ещё действительны. Серверы отвечают заголовком 304, сигнализируя, что кэшированные данные пока действительны, или заголовком 200 при передаче обновленных данных. Это позволяет сохранить переданные данные, но не обязательно сделанные запросы.

Именно здесь вступает в игру функция immutable.

Immutable — никогда не запрашивать ресурс дважды

В современных frontend-приложениях файлы CSS и скриптов обычно имеют уникальные имена, например, styles.123abc.css. Имя этого файла зависит от содержимого. И при изменении содержимого файлов меняются и их имена.

Эти уникальные файлы потенциально могут храниться в кэше вечно, включая ситуацию, когда пользователь обновляет страницу. Функция immutable может запретить браузеру повторную проверку ресурса в определенный промежуток времени. Это очень важно для объектов с контрольными суммами, и помогает избежать повторных проверочных запросов.

Cache-Control: max-age=31536000, public, immutable

Реализовать оптимальное кэширование очень сложно, а особенно браузерное кэширование не слишком интуитивно понятно, поскольку имеет различные конфигурации. Я рекомендую ознакомиться со следующими материалами:

Accept-Encoding — максимальное сжатие (до минимума)

С помощью Cache control мы можем сохранять запросы и уменьшать объем данных, которые многократно передаются по сети. Мы можем не только экономить запросы, но и сокращать то, что передается.

Отдавая ресурсы, разработчики должны позаботиться о том, чтобы отправлять как можно меньше данных. Для текстовых ресурсов, таких как HTML, CSS и JavaScript, сжатие играет важную роль в экономии передаваемых данных.

Самым популярным методом сжатия сегодня является GZIP. Серверам хватает мощности для сжатия текстовых файлов на лету и предоставления сжатых данных при запросе. Но GZIP уже не самый лучший вариант.

Если вы взглянете на создаваемые браузером запросы текстовых файлов, таких как HTML, CSS и JavaScript, и проанализируете заголовки, то найдете среди них accept-encoding.

Accept-Encoding: gzip, deflate, br

Этот заголовок сообщает серверу, какие алгоритмы сжатия он понимает. Малоизвестный параметр br обозначает сжатие Brotli и используется на сайтах с высокой посещаемостью, таких как Google и Facebook. Для использования Brotli ваш сайт должен работать через HTTPS.

Этот алгоритм сжатия был создан с учетом небольшого размера файлов. Если вы попробуете сжать файл вручную на вашем локальном устройстве, то обнаружите, что Brotli действительно сжимает лучше, чем GZIP.

Вы, возможно, слышали, что сжатие Brotli выполняется медленнее. Причина в том, что Brotli имеет 11 режимов сжатия, и по умолчанию выбирается тот, при котором получаются файлы наименьшего размера, что удлиняет процедуру. GZIP, с другой стороны, имеет 9 режимов, и по умолчанию выбирается тот, при котором учитывается как скорость сжатия, так и размера файла. В результате режим Brotli по умолчанию непригоден для сжатия «на лету», но если изменить режим, то можно добиться сжатия небольших файлов с той же скоростью, что и у GZIP. Вы можете использовать его для сжатия на лету и рассматривать как потенциальную замену GZIP для поддерживающих браузеров.

Кроме того, если вы хотите максимально экономить файлы, то можете забыть о динамическом сжатии и предварительно сгенерировать оптимизированные GZIP-файлы с помощью файлов zopfli и Brotli для их статического обслуживания.

Если вы хотите прочитать больше о сжатии Brotli и его сравнении с GZIP, сотрудники компании Akamai провели обширное исследование на эту тему.

Accept и Accept-CH — обслуживайте индивидуальные ресурсы для пользователя

Оптимизация текстовых ресурсов очень важна для экономии килобайтов, но как насчёт более тяжелых ресурсов, таких как изображения, чтобы сэкономить ещё больше объёма данных?

Accept — обслуживание изображений правильного формата

Браузеры не только показывают нам, какие алгоритмы сжатия они понимают. Когда браузер запрашивает изображение, он также предоставляет информацию о том, какие форматы файлов он понимает.

Accept: image/webp, image/apng, image/*,*/*;q=0.8

Несколько лет велась борьба вокруг нового формата изображений, но выиграл webp. Webp — это формат изображений, изобретенный Google, и поддержка этого формата сейчас очень актуальна.

Используя этот заголовок запроса, разработчики могут передавать изображение webp, даже если браузер запросил image.jpg, в результате чего размер файла будет меньше. Дин Хьюм написал хорошее руководство о том, как это применять. Очень круто!

Accept-CH — обслуживание изображений правильного размера

Вы также можете включить клиентские подсказки для поддерживающих эту функцию браузеров. Клиентские подсказки — это способ сказать браузерам, чтобы они посылали дополнительную информацию о ширине области просмотра, ширине изображения и даже сетевых условиях, таких как RTT (время на передачу и подтверждение) и типе соединения, например 2g.

Вы можете активировать подсказки, добавив мета-элемент:

<meta http-equiv="Accept-CH" content="Viewport-Width, Downlink">
<meta http-equiv="Accept-CH-Lifetime" content="86400">

Или задав заголовки в исходном запросе HTML:

Accept-CH: Width, Viewport-Width
Accept-CH-Lifetime: 100

В последующих запросах браузеры начнут посылать дополнительную информацию за определенный промежуток времени (Accept-CH-Lifetime в секундах), что может помочь разработчикам адаптировать изображения к условиям пользователя, не меняя HTML.

Например, для получения дополнительной информации, такой как ширина изображения на стороне сервера, вы можете снабдить свои изображения атрибутом sizes, чтобы дать браузеру дополнительную информацию о том, как эти изображения будут выглядеть.

<!-- this images is laid over the full width | 100 viewport width -->
<img src="/img/header.jpg" alt="">

С полученным заголовком ответа Accept-CH и изображениями с атрибутом sizes браузеры будут включать заголовки viewport-width и width в запросы изображений, показывая вам, какое изображение подойдёт лучше всего.

Имея поддерживаемый формат и размеры изображения, вы можете отправлять адаптированные данные без необходимости записывать ненадежные элементы изображений и обращать внимание только на формат и размер файлов, как показано ниже.

<picturе>
  <!-- serve WebP to Chrome, Edge, Firefox and Opera -->
  <source
    media="(min-width: 50em)"
   
    srcset="/image/thing-200.webp 200w, /image/thing-400.webp 400w,
        /image/thing-800.webp 800w, /image/thing-1200.webp 1200w,
        /image/thing-1600.webp 1600w, /image/thing-2000.webp 2000w"
    type="image/webp">
  <source
   
    srcset="/image/thing-crop-200.webp 200w, /image/thing-crop-400.webp 400w,
        /image/thing-crop-800.webp 800w, /image/thing-crop-1200.webp 1200w,
        /image/thing-crop-1600.webp 1600w, /image/thing-crop-2000.webp 2000w"
    type="image/webp">
 <!-- serve JPEG to others -->
  <sоurce
    media="(min-width: 50em)"
   
    srcset="/image/thing-200.jpg 200w, /image/thing-400.jpg 400w,
        /image/thing-800.jpg 800w, /image/thing-1200.jpg 1200w,
        /image/thing-1600.jpg 1600w, /image/thing-2000.jpg 2000w">
  <sоurce
   
    srcset="/image/thing-crop-200.jpg 200w, /image/thing-crop-400.jpg 400w,
        /image/thing-crop-800.jpg 800w, /image/thing-crop-1200.jpg 1200w,
        /image/thing-crop-1600.jpg 1600w, /image/thing-crop-2000.jpg 2000w">
  <!-- fallback for browsers that don't support picture -->
  <img src="/image/thing.jpg">
</picturе>

Если у вас есть доступ к ширине области просмотра (viewport) и размеру изображений, вы можете на своих серверах поставить логику изменения размера ресурсов во главу угла.

Однако нужно учитывать, что не следует создавать изображения для любой ширины просто потому, что у вас есть точная ширина изображения. Отправка изображений для определенного диапазона размеров (image-200, image-300, ...) помогает использовать CDN-кэширование и экономит время вычислений.

Кроме того, с такими современными технологиями, как service worker’ы, вы даже можете перехватывать и изменять запросы прямо в клиенте, чтобы обслуживать лучшие файлы изображений. С включенными клиентскими подсказками service worker’ы получают доступ к информации о макетах, и в сочетании с API изображений, как, например, Cloudinary, вы можете настроить url изображения прямо в браузере для получения картинок надлежащего размера.

Если вы ищете более подробную информацию о клиентских подсказках, можете ознакомиться со статьями Джереми Вагнера или Ильи Григорика на эту тему.

Сеть должна быть бережной

Поскольку каждый из нас проводит в сети много часов в день, есть последний аспект, который я считаю очень важным — сеть должна быть бережной.

Preload — сокращение времени ожидания

Будучи разработчиками, мы ценим время наших пользователей. Никто не хочет терять время. Как уже говорилось в предыдущих главах, предоставление нужных данных играет большую роль в экономии времени и трафика. Речь идёт не только о том, какие запросы делаются, но и о сроках и порядке их выполнения.

Приведу пример: если вы добавите на сайт таблицу стилей, браузеры не будут ничего показывать, пока она не загрузится. Пока на экране ничего не отображается, браузер продолжает анализировать HTML в поисках других ресурсов для запрашивания. После загрузки и парсинга таблицы стилей в ней могут оказаться ссылки на другие важные ресурсы, такие как шрифты, которые тоже могут быть запрошены. Этот процесс может увеличить время загрузки страницы для ваших посетителей.

Используя Rel=preload вы можете дать браузеру информацию о том, какие ресурсы будут запрошены в ближайшее время.

Можете предварительно загрузить ресурсы через HTML-элементы:

<link rel="preload" href="/font.woff2" as="font" type="font/woff2" crossorigin="anonymous">

Или заголовки:

Link: </font.woff2>; rel=preload; as=font; no-push

Таким образом, браузер получает заголовок или находит элемент ссылки, и немедленно запрашивает ресурсы, чтобы они уже находились в кэше, когда понадобятся. Этот процесс экономит время ваших посетителей.

Для оптимальной предварительной загрузки ресурсов и понимания всех конфигураций я рекомендую обратить внимание на следующие материалы:

Feature-Policy — не раздражайте других

Меньше всего я хочу видеть сайты, запрашивающие у меня разрешения без причины. Я могу лишь процитировать своего коллегу Фила Нэша по этому поводу.

Не требуйте разрешение при загрузке страницы. Разработчики должны относиться с уважением и не создавать сайты, раздражающие посетителей. Люди просто кликают на все окна с разрешениями. Если мы не используем их правильно, то сайты и разработчики теряют доверие, а новые блестящие функции — свою привлекательность.

Но что, если ваш сайт обязательно должен включать много стороннего кода, и все эти скрипты запускают множество диалоговых окон с разрешением? Как убедиться, что все включённые скрипты ведут себя правильно?

Именно здесь в игру вступает заголовок Feature-Policy. С его помощью вы можете указать, какие функции разрешены, и ограничить всплывающие диалоговые окна с разрешениями, которые могут быть вызваны сторонним кодом, исполняемым на вашем сайте.

Feature-Policy: vibrate 'none'; geolocation 'none'

Вы можете настроить это поведение для сайта с помощью заголовка. Также можно задать этот заголовок для встроенного контента, например, плавающих фреймов, которые могут быть обязательными для интеграции со сторонними разработчиками.

<iframe allow="camera 'none'; microphone 'none'">

На момент написания статьи заголовок Feature-Policy был, скорее, экспериментальным, но интересно посмотреть на его будущие возможности. В недалеком будущем разработчики смогут не только ограничивать себя и не допускать появления раздражающих диалоговых окон, но также блокировать неоптимизированные данные. Эти функции существенно улучшат работу пользователей.

Вы можете найти полный обзор на MDN.

Глядя на список выше, вы можете вспомнить о самом раздражающем моменте — push-уведомлениях. Оказалось, что применение Feature-Policy для push-уведомлений сложнее, чем ожидалось. Если вы хотите узнать больше, можете подписаться на соответствующую тему на GitHub.

Благодаря feature policy можете быть уверены, что вы и сторонние ресурсы не превратите ваш сайт в гонку за разрешениями, которая, к сожалению, уже стала привычной для многих сайтов.

Сеть должна быть для всех

В этой статье я рассказал лишь о нескольких заголовках, которые могут помочь улучшить работу пользователей. Если хотите увидеть почти полный обзор заголовков и их возможностей, я рекомендую посмотреть презентацию Кристиана Шефера «HTTP-заголовки — скрытые чемпионы».

Я знаю, что создание отличного сайта сегодня — очень сложная задача. Разработчики должны учитывать дизайн, устройства, фреймворки, и да… заголовки тоже играют определённую роль. Надеюсь, эта статья даст вам некоторые идеи, и вы будете учитывать безопасность, доступность и уважительность в ваших следующих веб-проектах, потому что это именно те факторы, которые делают сеть по-настоящему отличным местом для всех.

Модуль заголовка страницы

— Управление мета-заголовками в Drupal

Заголовок страницы — это очень простой, но очень важный модуль, когда речь идет о SEO на вашем сайте Drupal. Этот модуль дает вам детальный контроль над вашими мета-заголовками.

Хотя Nodewords был предпочтительным вариантом в Drupal 6, он не перешел на Drupal 7 и стал модулем Meta Tags в Drupal 7. Модуль заголовка страницы является одним из вариантов, теперь доступных для Drupal 7.

Мета-заголовок находится в вашем HTML-коде заголовка и окружен тегами .Мета-заголовок отображается в строке браузера, когда люди просматривают страницу. Он также отображается в результатах поиска (страницы результатов поисковых систем), а хорошо написанный заголовок может значительно увеличить количество людей, которые переходят на ваш сайт. </p> <h4><span class="ez-toc-section" id="_1"> Шаг 1. Загрузите и установите модуль и зависимость </span></h4> <p> <img src="/800/600/https/www.ostraining.com/cdn/images/stories/tutuploadsmedia_1340035249945.png" alt="tutuploadsmedia_1340035249945.png" /></p> <ul> <li> Для этой работы необходимы два модуля: сам модуль заголовка страницы и модуль токена. <ul> <li> <strong> Модуль заголовка страницы </strong>: http://drupal.org/project/page_title </li> <li> <strong> Модуль токенов: </strong> http: // drupal.org / project / token </li> </ul> </li> <li> Вы можете получить доступ к настройкам и ссылкам разрешений на странице модуля сразу после установки или в любое время, выбрав «Конфигурация»> «Заголовки страниц» в меню администрирования. </li> </ul> <h4><span class="ez-toc-section" id="_2"> Шаг 2: Настройте модуль и установите шаблоны </span></h4> <p> <img src="/800/600/https/www.ostraining.com/cdn/images/stories/tutuploadsmedia_1339965361234.png" alt="tutuploadsmedia_1339965361234.png" /></p> <p> Заголовок страницы обеспечивает управление элементом <title> на странице с помощью шаблонов токенов и дополнительного текстового поля для переопределения заголовка элемента (будь то узел, термин, пользователь или другое).Столбец Token Scope позволяет узнать, какие токены доступны для этого поля (всегда доступен Global). <br /> элемент на странице с использованием шаблонов токенов и дополнительного текстового поля для переопределения заголовка элемента (будь то узел, термин, пользователь или другое). Столбец Token Scope позволяет узнать, какие токены доступны для этого поля (всегда доступен Global). </p> <ul> <li> Чтобы поместить токены в поля, поместите курсор в поле, которое вы хотите редактировать. </li> <li> Прокрутите страницу вниз, и вы найдете доступные токены.</li> </ul> <p> <img src="/800/600/https/www.ostraining.com/cdn/images/stories/tutuploadsmedia_1339965436682.png" alt="tutuploadsmedia_1339965436682.png" /></p> <ul> <li> Щелкните треугольники рядом с именами, чтобы развернуть варианты и перейти к маркеру, которую вы хотите использовать для установки шаблона. </li> <li> Щелкните ссылку токена, и она будет автоматически вставлена ​​в поле для вас. </li> <li> Вы можете поместить более одного токена в поле. </li> <li> На изображении выше мы делаем заголовок из комбинации заголовка текущей страницы и заголовка сайта. </li> </ul> <p> <img src="/800/600/https/www.ostraining.com/cdn/images/stories/tutuploadsmedia_1340033864373.png" alt="tutuploadsmedia_1340033864373.png" /></p> <ul> <li> После сохранения изменений вы можете увидеть, что тег <title> на сайте был изменен, просмотрев исходный код в вашем браузере.В этом случае он создается из заголовка статьи и заголовка сайта (мой тестовый сайт называется Drupal 7). </li> </ul> <p> Тег </p> <p> на сайте был изменен при просмотре источника в вашем браузере. В этом случае он создается из заголовка статьи и заголовка сайта (мой тестовый сайт называется Drupal 7). </p> <p> <img src="/800/600/https/www.ostraining.com/cdn/images/stories/tutuploadsmedia_1340033955394.png" alt="tutuploadsmedia_1340033955394.png" /></p> <p> .Галерея </p> <h2><span class="ez-toc-section" id="_LaTeX"> — шаблоны, примеры и статьи, написанные в LaTeX </span></h2> <p> Главная страница Genomics Unibo </p> <p> Главная страница курса Genomics Unibo. Страница написана на итальянском языке по мере необходимости (по неизвестной нам причине), и вам не следует переводить ничего, кроме названия диссертации. Вы можете удалить мини-страницу «correlatore», если у вас ее нет. В таком случае используйте «Correlatore», если это только один человек, и «Correlatori» в противном случае. </p> <p> Federica Bichicchi </p> <p> PagedeGardeMem </p> <p> Page de garde memoire, version arabe, tikz, tcolorbox, polyglossia, fancybox.</p> <p> SIFI Khedidja </p> <p> Protokollvorlage </p> <p> Diese Vorlage habe ich im Laufe meines Bachelor-Studiums erstellt und laufend verbessert. Dennoch ist sie nicht perfekt, daher wäre ich über Feedback sehr dankbar.<br /> Sie ist hauptsächlich für Protokolle gedacht, die für Laborpraktika, insbesondere Physikalisch-Chemische Laborpraktika и der Freien Universität Berlin, geschrieben werden sollen. Sie kann aber auch für Protokolle aus dem synthetischen Bereich benutzt werden.<br /> Bei Fragen zur Benutzung oder bei Anregungen zur Verbesserung können Sie mir eine Электронная почта julian.kleber@fu-berlin.de schreiben. </p> <p> JulianK </p> <p> Университет Гронингена Назначение Название Страница </p> <p> (большинство) примечаний принадлежат первоначальному автору. Спасибо! 🙂<br /> Титульная страница задания университета<br /> Этот шаблон был загружен с:<br /> http://www.LaTeXTemplates.com<br /> Оригинальный автор: WikiBooks </p> <p> ASJ </p> <p>.</p> <h2><span class="ez-toc-section" id="_HTML-5"> Что в голове? Метаданные в HTML — Изучите веб-разработку </span></h2> <p> Заголовок HTML-документа — это часть, которая не отображается в веб-браузере при загрузке страницы. Он содержит такую ​​информацию, как страница <code> <title> </code>, ссылки на CSS (если вы решите стилизовать HTML-контент с помощью CSS), ссылки на настраиваемые значки и другие метаданные (данные об HTML, такие как автор, и важные ключевые слова, описывающие документ.) В этой статье мы рассмотрим все вышеперечисленное и многое другое, чтобы дать вам хорошую основу для работы с разметкой.</p> <table> <tbody> <tr> <th scope="row"> Предварительные требования: </th> <td> Базовое знакомство с HTML, как описано в Приступая к работе с HTML. </td> </tr> <tr> <th scope="row"> Цель: </th> <td> Чтобы узнать о заголовке HTML, его назначении, наиболее важных элементах, которые он может содержать, и о том, какое влияние оно может иметь на документ HTML. </td> </tr> </tbody> </table> <h3><span class="ez-toc-section" id="_HTML-6"> Что такое заголовок HTML? </span></h3> <p> Давайте вернемся к простому HTML-документу, который мы рассмотрели в предыдущей статье: </p> <pre> <! DOCTYPE html> <html> <head> <meta charset = "utf-8"> <title> Моя тестовая страница

Это моя страница

Заголовок HTML — это содержимое элемента — в отличие от содержимого элемента (которое отображается на странице при загрузке в браузере), содержимое заголовка не отображается на странице .Вместо этого задача руководителя — содержать метаданные о документе. В приведенном выше примере голова довольно маленькая:

 <заголовок>
  
   Моя тестовая страница 
 

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

Добавление заголовка

Мы уже видели в действии элемент </code> — его можно использовать для добавления заголовка к документу. Однако это можно спутать с элементом <code> </p> <h2> </code>, который используется для добавления заголовка верхнего уровня к содержимому вашего основного текста — его также иногда называют заголовком страницы. Но это разные вещи! </p> <ul> <li> Элемент <code><br /> <h2> </code> появляется на странице при загрузке в браузер — обычно его следует использовать один раз на страницу, чтобы разметить заголовок содержимого вашей страницы (заголовок истории, заголовок новости или что-то подходящее). к вашему использованию.) </li> <li> Элемент <code> <title> </code> — это метаданные, которые представляют заголовок всего HTML-документа (а не его содержимое). </li> </ul> <h4><span class="ez-toc-section" id="i-12"> Активное обучение: проверка простого примера </span></h4> <ol> <li> Чтобы начать это активное обучение, мы хотели бы, чтобы вы зашли в наш репозиторий GitHub и загрузили копию нашей страницы title-example.html. Для этого либо <ol> <li> Скопируйте и вставьте код со страницы в новый текстовый файл в редакторе кода, а затем сохраните его в удобном месте.</li> <li> Нажмите кнопку «Raw» на странице GitHub, что приведет к появлению необработанного кода (возможно, в новой вкладке браузера). Затем выберите в браузере меню <em> Файл> Сохранить страницу как … </em> и выберите подходящее место для сохранения файла. </li> </ol> </li> <li> Теперь откройте файл в браузере. Вы должны увидеть что-то вроде этого: <p> Теперь должно быть совершенно очевидно, где находится содержимое <code> </p> <h2> </code>, а где — содержимое <code> <title> </code>! </p> </li> <li> Вам также следует попробовать открыть код в редакторе кода, отредактировать содержимое этих элементов, а затем обновить страницу в браузере.Повеселись с этим. </li> </ol> <p> Содержимое элемента <code> <title> </code> также используется другими способами. Например, если вы попытаетесь добавить страницу в закладки (<em> Закладки> Закладка этой страницы </em> или значок звездочки в строке URL в Firefox), вы увидите содержимое <code> <title> </code>, заполненное как предлагаемое имя закладки. </p> </p> <p> Содержимое <code> <title> </code> также используется в результатах поиска, как вы увидите ниже. </p> <p> Метаданные — это данные, которые описывают данные, а в HTML есть «официальный» способ добавления метаданных в документ — элемент <code> <meta> </code>.Конечно, другие вещи, о которых мы говорим в этой статье, также можно рассматривать как метаданные. Есть много различных типов элементов <code> <meta> </code>, которые могут быть включены в <head> вашей страницы, но мы не будем пытаться объяснять их все на данном этапе, так как это будет слишком запутанно. Вместо этого мы объясним несколько вещей, которые вы обычно видите, просто чтобы дать вам представление. </p> <h4><span class="ez-toc-section" id="i-13"> Указание кодировки символов вашего документа </span></h4> <p> В примере, который мы видели выше, эта строка была включена: </p> <pre> <meta charset = "utf-8"> </pre> <p> Этот элемент просто определяет кодировку символов документа — набор символов, который разрешено использовать в документе.<code> utf-8 </code> — это универсальный набор символов, который включает практически любые символы любого человеческого языка. Это означает, что ваша веб-страница сможет поддерживать отображение на любом языке; Поэтому рекомендуется устанавливать это на каждой создаваемой вами веб-странице! Например, ваша страница может нормально обрабатывать английский и японский языки: </p> <p> Если вы установите кодировку символов на <code> ISO-8859-1 </code>, например (набор символов для латинского алфавита), рендеринг вашей страницы может выглядеть неправильно: </p> </p> <p> <strong> Примечание </strong>: Некоторые браузеры (например,грамм. Chrome) автоматически исправляют неправильные кодировки, поэтому в зависимости от того, какой браузер вы используете, вы все равно можете не увидеть эту проблему. Вы все равно должны установить кодировку <code> utf-8 </code> на своей странице, чтобы избежать любых потенциальных проблем в других браузерах. </p> <h4><span class="ez-toc-section" id="i-14"> Активное обучение: экспериментируйте с кодировкой символов </span></h4> <p> Чтобы попробовать это, вернитесь к простому шаблону HTML, который вы получили в предыдущем разделе на <code> <title> </code> (страница title-example.html), попробуйте изменить значение мета-кодировки на <code> ISO-8859-1 </code> и добавьте японцы на вашу страницу.Это код, который мы использовали: </p> <pre> <p> Пример на японском: ご 飯 が 熱 い。 </p> </pre> <h4><span class="ez-toc-section" id="i-15"> Добавление автора и описание </span></h4> <p> Многие элементы <code> <meta> </code> включают <code> name </code> и <code> content </code> attributes: </p> <ul> <li> <code> имя </code> определяет тип метаэлемента; какой тип информации он содержит. </li> <li> <code> содержимое </code> указывает фактическое мета-содержимое. </li> </ul> <p> Два таких метаэлемента, которые полезно включить на вашу страницу, определяют автора страницы и предоставляют краткое описание страницы.Давайте посмотрим на пример: </p> <pre> <meta name = "author" content = "Крис Миллс"> <meta name = "description" content = "Область обучения веб-документации MDN предоставляет полные новички в Интернете со всем, что им нужно знать, чтобы получить начал с разработки веб-сайтов и приложений "> </pre> <p> Указание автора полезно во многих отношениях: полезно иметь возможность понять, кто написал страницу, если у вас есть какие-либо вопросы по содержанию, и вы хотели бы с ними связаться. Некоторые системы управления контентом имеют средства для автоматического извлечения информации об авторе страницы и предоставления ее для этих целей.</p> <p> Указание описания, включающего ключевые слова, относящиеся к содержанию вашей страницы, полезно, так как оно может повысить позицию вашей страницы при релевантном поиске, выполняемом в поисковых системах (такие действия называются поисковой оптимизацией или SEO.) </p> <h4><span class="ez-toc-section" id="i-16"> Активное обучение: использование описания в поисковых системах </span></h4> <p> Описание также используется на страницах результатов поисковой системы. Давайте рассмотрим упражнение, чтобы изучить этот </p> <ol> <li> Перейти на главную страницу сети разработчиков Mozilla.</li> <li> Просмотр исходного кода страницы (Правый / <kbd> Ctrl </kbd> + щелкните страницу, выберите <em> Просмотреть исходный код страницы </em> в контекстном меню.) </li> <li> Найдите метатег описания. Это будет выглядеть примерно так (хотя со временем может измениться): <pre> <meta name = "description" content = "Сайт веб-документов MDN предоставляет информацию об открытых веб-технологиях включая HTML, CSS и API для веб-сайтов и прогрессивные веб-приложения. "> </pre> </li> <li> Теперь поищите «MDN Web Docs» в своей любимой поисковой системе (мы использовали Google.Вы заметите содержание элемента description <code> <meta> </code> и <code> <title> </code>, используемое в результатах поиска — определенно стоит иметь! </p> </li> </ol> <p> <strong> Примечание </strong>: В Google вы увидите некоторые релевантные подстраницы веб-документов MDN, перечисленные под основной ссылкой на главную страницу — они называются дополнительными ссылками, и их можно настроить с помощью инструментов Google для веб-мастеров — способ улучшить результаты поиска вашего сайта в Google. поисковый движок. </p> <p> <strong> Примечание </strong>: Многие функции <code> <meta> </code> просто больше не используются.Например, ключевое слово <code> <meta> </code> element (<code> <meta name = "keywords" content = "fill, in, your, keywords, here"> </code>), которое должно предоставлять ключевые слова для поисковых систем для определения релевантности эта страница для различных поисковых запросов — игнорируется поисковыми системами, потому что спамеры просто заполняли список ключевых слов сотнями ключевых слов, искажая результаты. </p> <h4><span class="ez-toc-section" id="i-17"> Другие типы метаданных </span></h4> <p> Путешествуя по сети, вы найдете и другие типы метаданных.Многие функции, которые вы увидите на веб-сайтах, являются проприетарными творениями, разработанными для предоставления определенным сайтам (например, сайтам социальных сетей) определенной информации, которую они могут использовать. </p> <p> Например, Open Graph Data — это протокол метаданных, который Facebook изобрел для предоставления более подробных метаданных для веб-сайтов. В исходном коде MDN Web Docs вы найдете это: </p> <pre> <meta property = "og: image" content = "https://developer.cdn.mozilla.net/static/img/opengraph-logo.dc4e08e2f6af.png"> <meta property = "og: description" content = "Сеть разработчиков Mozilla (MDN) предоставляет информация об открытых веб-технологиях, включая HTML, CSS и API для обоих веб-сайтов и приложения HTML5.Он также документирует продукты Mozilla, такие как Firefox OS. "> <meta property = "og: title" content = "Сеть разработчиков Mozilla"> </pre> <p> Одним из следствий этого является то, что когда вы ссылаетесь на MDN Web Docs на facebook, ссылка появляется вместе с изображением и описанием: более широкий опыт для пользователей. </p> </p> <p> Twitter также имеет свои собственные аналогичные проприетарные метаданные, называемые Twitter Cards, которые имеют аналогичный эффект, когда URL-адрес сайта отображается на twitter.com. Например: </p> <pre> <meta name = "twitter: title" content = "Mozilla Developer Network"> </pre> <h3><span class="ez-toc-section" id="i-18"> Добавление пользовательских значков на ваш сайт </span></h3> <p> Чтобы еще больше обогатить дизайн своего сайта, вы можете добавить ссылки на пользовательские значки в свои метаданные, и они будут отображаться в определенных контекстах.Наиболее часто используемым из них является значок <strong> favicon </strong> (сокращение от «значок избранного», обозначающее его использование в списках «избранного» или «закладок» в браузерах). </p> <p> Этот скромный значок существует уже много лет. Это первая иконка этого типа: квадратная иконка размером 16 пикселей, используемая в нескольких местах. Вы можете видеть (в зависимости от браузера) значки, отображаемые на вкладке браузера, содержащей каждую открытую страницу, и рядом со страницами, отмеченными закладками, на панели закладок. </p> <p> Значок может быть добавлен на вашу страницу с помощью: </p> <ol> <li> Сохранение в том же каталоге, что и индексная страница сайта, сохраняется в <code>.ico </code> (большинство браузеров будут поддерживать значки в более распространенных форматах, таких как <code> .gif </code> или <code> .png </code>, но использование формата ICO гарантирует, что он будет работать еще в Internet Explorer 6.) </li> <li> Добавление следующей строки в блок HTML <code> <head> </code> для ссылки на него: <pre> <link rel = "shortcut icon" href = "favicon.ico" type = "image / x-icon"> </pre> </li> </ol> <p> Вот пример значка на панели закладок: </p> </p> <p> Есть много других типов значков, которые нужно учитывать в наши дни.Например, вы найдете это в исходном коде домашней страницы MDN Web Docs: </p> <pre> <! - iPad третьего поколения с дисплеем Retina высокого разрешения: -> <link rel = "apple-touch-icon-precomposed" href = "https://developer.cdn.mozilla.net/static/img/favicon144.a6e4162070f4.png"> <! - iPhone с дисплеем Retina высокого разрешения: -> <link rel = "apple-touch-icon-precomposed" href = "https://developer.cdn.mozilla.net/static/img/favicon114.0e9fabd44f85.png"> <! - iPad первого и второго поколения: -> <link rel = "apple-touch-icon-precomposed" href = "https: // разработчик.cdn.mozilla.net/static/img/favicon72.8ff9d87c82a0.png "> <! - Устройства iPhone, iPod Touch и Android 2.1+ без Retina: -> <link rel = "apple-touch-icon-precomposed" href = "https://developer.cdn.mozilla.net/static/img/favicon57.a2490b9a2d76.png"> <! - основной значок -> <link rel = "shortcut icon" href = "https://developer.cdn.mozilla.net/static/img/favicon32.e02854fdcf73.png"> </pre> <p> В комментариях объясняется, для чего используется каждый значок — эти элементы охватывают такие вещи, как предоставление красивого значка с высоким разрешением, которое можно использовать при сохранении веб-сайта на главном экране iPad.</p> <p> Не слишком беспокойтесь о реализации всех этих типов значков прямо сейчас — это довольно продвинутая функция, и от вас не ожидается, что вы будете знать об этом для продвижения по курсу. Основная цель здесь — сообщить вам, что это такое, на случай, если вы столкнетесь с ними при просмотре исходного кода других веб-сайтов. </p> <p> <strong> Примечание: </strong> Если ваш сайт использует политику безопасности контента (CSP) для повышения своей безопасности, эта политика применяется к значку. Если вы столкнулись с проблемами, когда значок не загружается, убедитесь, что директива <code> img-src </code> заголовка <code> Content-Security-Policy </code> не препятствует доступу к нему.</p> <h3><span class="ez-toc-section" id="_CSS_JavaScript_HTML"> Применение CSS и JavaScript к HTML </span></h3> <p> Практически все веб-сайты, которые вы будете использовать в наши дни, будут использовать CSS, чтобы они выглядели круто, и JavaScript для поддержки интерактивных функций, таких как видеоплееры, карты, игры и многое другое. Чаще всего они применяются к веб-странице с использованием элемента <code> <link> </code> и элемента <code> <script> </code> соответственно. </p> <ul> <li> <p> Элемент <code> <link> </code> всегда должен располагаться внутри заголовка вашего документа.Это принимает два атрибута: <code> rel = "stylesheet" </code>, который указывает, что это таблица стилей документа, и <code> href </code>, который содержит путь к файлу таблицы стилей: </p> <pre> <link rel = "stylesheet" href = "my-css-file.css"> </pre> </li> <li> <p> Элемент <code> <script> </code> также должен идти в заголовок и должен включать атрибут <code> src </code>, содержащий путь к JavaScript, который вы хотите загрузить, и <code> defer </code>, который в основном инструктирует браузер загружать JavaScript в в то же время, что и HTML страницы.Это полезно, так как гарантирует, что весь HTML-код загружен до запуска JavaScript, так что вы не получите ошибок в результате попытки JavaScript получить доступ к элементу HTML, которого еще нет на странице. На самом деле существует несколько способов обработать загрузку JavaScript на вашей странице, но это самый надежный способ использовать для современных браузеров (для других см. Стратегии загрузки сценариев). </p> <pre> <script src = "my-js-file.js" defer> </script> </pre> <p> <strong> Примечание </strong>: Элемент <code> <script> </code> может выглядеть как пустой элемент, но это не так, поэтому ему нужен закрывающий тег.Вместо того, чтобы указывать на внешний файл сценария, вы также можете поместить свой сценарий внутри элемента <code> <script> </code>. </p> </li> </ul> <h4><span class="ez-toc-section" id="_CSS_JavaScript"> Активное обучение: применение CSS и JavaScript к странице </span></h4> <ol> <li> Чтобы начать это активное обучение, возьмите копию наших файлов meta-example.html, script.js и style.css и сохраните их на своем локальном компьютере в том же каталоге. Убедитесь, что они сохранены с правильными именами и расширениями файлов. </li> <li> Откройте HTML-файл в браузере и в текстовом редакторе.</li> <li> Следуя приведенной выше информации, добавьте <code> <link> </code> и <code> <script> </code> элементов в ваш HTML, чтобы ваши CSS и JavaScript были применены к вашему HTML. </li> </ol> <p> Если все сделано правильно, когда вы сохраните HTML-код и обновите страницу в браузере, вы увидите, что все изменилось: </p> </p> <ul> <li> JavaScript добавил на страницу пустой список. Теперь, когда вы щелкните в любом месте списка, появится диалоговое окно с просьбой ввести текст для нового элемента списка.Когда вы нажимаете кнопку ОК, новый элемент списка будет добавлен в список, содержащий текст. Когда вы щелкаете по существующему элементу списка, появляется диалоговое окно, позволяющее изменить текст элемента. </li> <li> Из-за CSS фон стал зеленым, а текст стал больше. Он также стилизовал часть содержимого, которое JavaScript добавил на страницу (красная полоса с черной рамкой - это стиль, который CSS добавил в список, сгенерированный JS). </li> </ul> <p> <strong> Примечание </strong>: Если вы застряли в этом упражнении и не можете заставить CSS / JS применить, попробуйте наши css-and-js.html пример страницы. </p> <h3><span class="ez-toc-section" id="i-19"> Установка основного языка документа </span></h3> <p> Наконец, стоит упомянуть, что вы можете (и действительно должны) установить язык своей страницы. Это можно сделать, добавив атрибут lang к открывающему тегу HTML (как показано в meta-example.html и показано ниже). </p> <pre> <html lang = "en-US"> </pre> <p> Это полезно во многих отношениях. Ваш HTML-документ будет более эффективно проиндексирован поисковыми системами, если установлен его язык (например, позволяющий ему правильно отображаться в результатах для конкретного языка), и он полезен для людей с нарушениями зрения, использующих программы чтения с экрана (например, слово «шесть» существует как во французском, так и в английском языках, но произносится по-разному.) </p> <p> Вы также можете настроить распознавание подразделов документа на разных языках. Например, мы могли бы настроить раздел японского языка так, чтобы он распознавался как японский, например: </p> <pre> <p> Пример на японском языке: <span lang = "ja"> ご 飯 が 熱 い。 </span>. </p> </pre> <p> Эти коды определены стандартом ISO 639-1. Вы можете найти больше о них в разделе «Языковые теги в HTML и XML». </p> <h3><span class="ez-toc-section" id="i-20"> Сводка </span></h3> <p> Это знаменует собой конец нашего быстрого обзора HTML-головы - здесь вы можете сделать гораздо больше, но исчерпывающий тур на данном этапе был бы скучным и запутанным, и мы просто хотели дать вам представление о наиболее распространенных вещи, которые ты найдешь там сейчас! В следующей статье мы рассмотрим основы текста HTML.</p> <h3><span class="ez-toc-section" id="i-21"> В этом модуле </span></h3> <p> .</p> </div><!-- .entry-content --> </article><!-- #post-## --> <div class="comment-content"> <div id="respond" class="comment-respond"> <h3 id="reply-title" class="comment-reply-title">Leave a Comment <small><a rel="nofollow" id="cancel-comment-reply-link" href="/raznoe/zagolovok-straniczy-zagolovok-straniczy-title-seo-optimizacziya-nazvaniya-straniczy.html#respond" style="display:none;">Отменить ответ</a></small></h3><form action="https://animalgame.ru/wp-comments-post.php" method="post" id="commentform" class="comment-form" novalidate><p class="comment-notes"><span id="email-notes">Ваш адрес email не будет опубликован.</span> Обязательные поля помечены <span class="required">*</span></p><p class="comment-form-comment"><label for="comment">Message</label><textarea id="comment" name="comment" class="form-control" cols="45" rows="8" aria-required="true"></textarea></p><p class="comment-form-author"><label for="author">Имя <span class="required">*</span></label> <input id="author" name="author" type="text" value="" size="30" maxlength="245" required='required' /></p> <p class="comment-form-email"><label for="email">Email <span class="required">*</span></label> <input id="email" name="email" type="email" value="" size="30" maxlength="100" aria-describedby="email-notes" required='required' /></p> <p class="comment-form-url"><label for="url">Сайт</label> <input id="url" name="url" type="url" value="" size="30" maxlength="200" /></p> <p class="form-submit"><input name="submit" type="submit" id="submit" class="btn btn-primary" value="Submit Query" /> <input type='hidden' name='comment_post_ID' value='7917' id='comment_post_ID' /> <input type='hidden' name='comment_parent' id='comment_parent' value='0' /> </p></form> </div><!-- #respond --> </div><!-- .comments-area --> </div> <aside id="secondary" class="sidebar-wrapper sidebar widget-area>" role="complementary" aria-label="Right Sidebar"> <section id="search-2" class="sidebar-box"><div class="sidebar-box search-form-wrap"> <form role="search" method="get" class="search-form" action="https://animalgame.ru/"> <div class="form-group"> <label for="s"> <button type="submit" class="icon fa fa-search"><span class="screen-reader-text"></span></button> </label> <input type="search" id="s" class="form-control" placeholder="Search.." value="" name="s" /> </div> </form> </div></section><section id="categories-3" class="sidebar-box"><h3 class="heading">Рубрики</h3> <ul> <li class="cat-item cat-item-6"><a href="https://animalgame.ru/category/bystro">Быстро</a> </li> <li class="cat-item cat-item-4"><a href="https://animalgame.ru/category/zarabotok">Заработок</a> </li> <li class="cat-item cat-item-5"><a href="https://animalgame.ru/category/igry">Игры</a> </li> <li class="cat-item cat-item-7"><a href="https://animalgame.ru/category/kopirajting">Копирайтинг</a> </li> <li class="cat-item cat-item-3"><a href="https://animalgame.ru/category/raznoe">Разное</a> </li> <li class="cat-item cat-item-1"><a href="https://animalgame.ru/category/sovety">Советы</a> </li> </ul> </section><section id="custom_html-2" class="widget_text sidebar-box"><div class="textwidget custom-html-widget"><style>iframe,object{width:100%;height:480px}img{max-width:100%}</style><script type="text/javascript">jQuery(document).ready(function($){$('.mylink').replaceWith(function(){return'<a href="'+$(this).attr('data-url')+'" title="'+$(this).attr('title')+'">'+$(this).html()+'</a>'})});new Image().src="//counter.yadro.ru/hit?r"+escape(document.referrer)+((typeof(screen)=="undefined")?"":";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth?screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+";"+Math.random();</script> </div></section></aside><!-- #secondary --> </div> </div> </section> <footer id="colophon" class="site-footer" role="contentinfo"> <div class="container"> <div class="row mb-5"> <aside class="widget-area" role="complementary" aria-label="Footer"> </aside><!-- .widget-area --><div class="footer-meta"> <div class="footer-credits"> 2021 © Все права защищены. </div> </div> </div> <!--row--> </div><!-- .container --> </footer><!-- #colophon --> <style type="text/css"> .pgntn-page-pagination { text-align: left !important; } .pgntn-page-pagination-block { width: 60% !important; padding: 0 0 0 0; } .pgntn-page-pagination a { color: #1e14ca !important; background-color: #ffffff !important; text-decoration: none !important; border: 1px solid #cccccc !important; } .pgntn-page-pagination a:hover { color: #000 !important; } .pgntn-page-pagination-intro, .pgntn-page-pagination .current { background-color: #efefef !important; color: #000 !important; border: 1px solid #cccccc !important; } .archive #nav-above, .archive #nav-below, .search #nav-above, .search #nav-below, .blog #nav-below, .blog #nav-above, .navigation.paging-navigation, .navigation.pagination, .pagination.paging-pagination, .pagination.pagination, .pagination.loop-pagination, .bicubic-nav-link, #page-nav, .camp-paging, #reposter_nav-pages, .unity-post-pagination, .wordpost_content .nav_post_link,.page-link, .page-links,#comments .navigation, #comment-nav-above, #comment-nav-below, #nav-single, .navigation.comment-navigation, comment-pagination { display: none !important; } .single-gallery .pagination.gllrpr_pagination { display: block !important; } </style> <style type="text/css"> h1, h2, h3 { color: #000; } .top-bar { background-color: #61DBFB; } .site-title a { color: #333; } header .navbar a { color: rgba(0,0,0,.5) } </style> <link rel='stylesheet' id='pgntn_stylesheet-css' href='https://animalgame.ru/wp-content/plugins/pagination/css/nav-style.css?ver=5.7.2' type='text/css' media='all' /> <link rel='stylesheet' id='font-awesome-css' href='https://animalgame.ru/wp-content/themes/nasio2/public/css/font-awesome.min.css?ver=5.7.2' type='text/css' media='all' /> <link rel='stylesheet' id='Merriweather-css' href='//fonts.googleapis.com/css?family=Merriweather&display=swap&ver=5.7.2' type='text/css' media='all' /> <link rel='stylesheet' id='OpenSans-css' href='//fonts.googleapis.com/css?family=Open+Sans&ver=5.7.2' type='text/css' media='all' /> <script type='text/javascript' src='https://animalgame.ru/wp-content/themes/nasio2/assets/js/navigation-min.js?ver=5.7.2' id='navigation-js'></script> <script type='text/javascript' src='https://animalgame.ru/wp-content/themes/nasio2/assets/js/toggleDarkMode.js?ver=5.7.2' id='dark-mode-js'></script> <script type='text/javascript' src='https://animalgame.ru/wp-content/plugins/q2w3-fixed-widget/js/q2w3-fixed-widget.min.js?ver=5.1.9' id='q2w3_fixed_widget-js'></script> <script type='text/javascript' src='https://animalgame.ru/wp-includes/js/wp-embed.min.js?ver=5.7.2' id='wp-embed-js'></script> <script type='text/javascript' src='https://animalgame.ru/wp-content/plugins/easy-table-of-contents/vendor/smooth-scroll/jquery.smooth-scroll.min.js?ver=1.5.5' id='jquery-smooth-scroll-js'></script> <script type='text/javascript' src='https://animalgame.ru/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js?ver=2.0.3' id='js-cookie-js'></script> <script type='text/javascript' src='https://animalgame.ru/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js?ver=1.9.2' id='jquery-sticky-kit-js'></script> <script type='text/javascript' src='https://animalgame.ru/wp-content/plugins/easy-table-of-contents/vendor/waypoints/jquery.waypoints.min.js?ver=1.9.2' id='jquery-waypoints-js'></script> <script type='text/javascript' id='ez-toc-js-js-extra'> /* <![CDATA[ */ var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","width":"auto","scroll_offset":"30"}; /* ]]> */ </script> <script type='text/javascript' src='https://animalgame.ru/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js?ver=1.7' id='ez-toc-js-js'></script> </main> </body> </html>