Рерайт.
Что такое «Рерайт»?
Что такое рерайт, сегодня известно всем, у кого есть сайт. Рерайт — в переводе с английского означает «переписать». Русское значение этого слова можно трактовать, как «изложение». Каждый, кто учился в школе, знает, что написать изложение — значит, воссоздать смысл текста своими словами.
Однако многие «хитрые» рерайтеры сегодня не делают этого и называют рерайтом простую перестановку слов в тексте и замену некоторых из них синонимами. Конечно, такие «гуру» рерайтинга бывают весьма быстро разоблачены, так как современные программы по распознанию плагиата в состоянии не только опознать оригинал текста, но и указать, что рерайт сделан с такой-то статьи, размещенной на таком-то сайте.
Отдельным вопросом стоит СЕО рерайт.
Что мы имеем в виду, говоря о «качественном вплетении»? Это значит, что ключевые фразы, если их не выделить жирным, должно быть невозможно опознать в теле статьи — настолько гармонично они переплетаются с основным текстом. Согласитесь, что такая работа — не для новичков.
На самом деле, понятие СЕО рерайт — не совсем верное, так как рерайтер должен не просто повторить содержание исходной статьи своими словами, но и незаметно привязать его к ключевыми словосочетаниям. Более точным, в данном случае, будет определение этой деятельности, как «СЕО-райтинг» — то есть, написание текста под поисковые запросы.
В чем преимущества рерайта?
С точки зрения идеологии текста рерайт выгоден потому, что позволяет продублировать на новом сайте старую и хорошо известную информацию. Часто возникают ситуации, когда создание принципиально нового текста (копирайта) не только невыгодно, но и практически невозможно.
К примеру, когда речь идет о конкретных товарах и услугах, либо об общеизвестной и повторенной в сотнях текстах информации. Между тем просто скопировать нужную информацию с другого сайта нельзя. Во – первых это нарушение авторских прав, которое может повлечь за собой юридический ответ. Во – вторых размещение «украденных» текстов это удар по репутации сайта. В – третьих поисковые системы жестко реагируют на использование таких методов, снижая позиции «провинившегося» сайта в своих рейтингах вплоть до исключения из них.
С точки зрения заказчика преимущество рерайта состоит в том, что для исполнителя не требуется подробно формулировать задание, согласно которому будет создаваться текст, как это происходит при заказе копирайта. Заказчику достаточно указать устраивающий его исходный текст, рерайт которого сделает исполнитель. С финансовой точки зрения рерайт выгоден тем, что стоит дешевле, чем копирайт.
С точки зрения исполнителя преимущество рерайта заключается в том, что у него (исполнителя) имеется образец для работы, в роли которого выступает исходный текст. Для многих исполнителей переработать чужой текст значительно проще, чем написать свой собственный. И именно поэтому они успешно специализируются на рерайте.
Чем опасен некачественный рерайт?
Рерайт считается более легким ремеслом, чем копирайт, однако, это не совсем так.
Напротив, некачественный рерайт, выполненный неквалифицированным исполнителем, угрожает
сайту несколькими опасностями:
1) Недостаточно «глубокий» рерайт, порождаемый поверхностной переработкой исходного
текста, попросту не пройдет проверку на уникальность со стороны поисковых систем. А это
может обернуться падениям позиций вашего сайта в рейтингах поисковых систем.
2) Если литературный стиль исполнителя (рерайтера) далек от совершенства, то красивый
исходный текст в результате рерайта может превратиться в итоговый текст, который сложно и
тяжело читать.
Как сделать качественный рерайт?
Эту статью про рерайт хочу посвятить не только начинающим блоговодам и оптимизаторам, но и тем, кто постоянно занимается рерайтингом и зарабатывает на этом деньги. В рамках данной статьи хочу затронуть как общие вопросы, касательно рерайта, так и некоторые специфические моменты создания качественного рерайта, которые я использую в практике продвижения сайтов.
Что такое рерайт?
Рерайт — это определение позаимствовано с английского языка, которое означает переписывание или переделку с внесением изменений в существующий текст. Т.о., рерайт от копирайта отличается тем, что текст не нужно создавать заново с нуля, а нужно всего лишь уникализировать существующий текст.
Для чего нужен рерайтинг?
Если сайт или даже интернет магазин обладает определенной тематикой, то для накопления массива ключевых слов на сайте необходимо периодически добавлять определенное количество seo-оптимизированного под релевантные ключевые запросы текста, в виде статей или описаний товаров. Разумеется, если тематика сайта узкоспециализированна, тогда становится тяжело постоянно писать на одну и ту же тему новые статьи, даже если Вы очень хорошо знаете данную тематику. Тем более вопрос уникальности текста в виде описаний товаров особенно актуален для интернет магазинов, товары в которых функционально просты, схожи и многочисленны.
Если Вы горе-блоггер или манимейкер, и с фантазией особо туго, чтобы написать статью самостоятельно, но и не хотите постить откровенный копипаст. Хотя, хороший рерайт тоже не простая задача, тем более для тех у кого словарный запас не более 100 слов
Наполнение качественным контентом, является одним из условий увеличения траста сайта. В связи с этим, рынок SEO услуг представлен и предложениями по рерайтингу в том числе.
В такой ситуации приходит на помощь качественный рерайт. Как видите, область применения рерайтинга весьма широка.
Принцип работы автоматических сервисов и программ по рерайту текста.
На сегодняшний день создано определенное количество программ для уникализации текста. Основные известные мне программы — WordSyn, synmaster и проч. Также, есть и онлайн сервисы. Я не буду делать подробный обзор каждого из них, в виду их общей бесполезности.
Такой синонимизированный текст абсолютно бесполезен. Для пользователя он как правило не читабелен, т.к. напоминает бессмыссленный набор слов. Понятно, что с такой страницы или сайта посетитель бежит. Для поисковых систем такой текст не является уникальным, поскольку уникальность текста производится по шинглам. Они, с определенным шагом, накладываясь друг на друга кодируются в определенную контрольную сумму. Если даже изменить определенные слова на синонимы, то контрольная сумма останется такой же. Что в свою очередь и говорит об не уникальности текста.
В итоге, такой рерайт нельзя назвать качественным и полезным, но напротив — вредоносным. Ведь легко и быстро бывает от лукавого…
Как сделать рерайт качественным?
Теперь Вы понимаете, никакая программа не даст Вам качественный рерайт текста кроме Вас самих! А теперь, ниже привожу мои рекомендации по созданию качественного рерайта:
1. используйте синонимы — вопреки вышенаписанному, эта рекомендация не вредит качеству рерайта. Однако, она не является обособленной — нужно использовать разные синонимы с другими рекомендациями.
2. делайте перефразировку — по большому счету, одно и то же предложение можно написать в различных вариантах не теряя и не изменяя его сути. С практической точки зрения это может выглядеть как перестановка частей предложения местами.
3. добавляйте добавочные слова — под добавочными или разбавочными словами я подразумеваю различные предлоги, наречия, эпитеты и другие слова, которые можно добавить не вредя смысловой нагрузке предложения.
4. изменяйте общую структуру предложений — здесь я имею ввиду разбиение длинных предложений на более короткие. Либо объединение нескольких коротких предложений в одно.
5. изменяйте структуру статей — если статья состоит из нескольких пунктов или абзацев, попробуйте поменять их местами, без ущерба для смысла, применяя все остальные вышеперечисленные методы уникализации контента.
Как проверить качество рерайта?
Есть два простых способа. Можно взять из текста какую-либо длинную фразу или предложение, скопировать и ввести ее в поиск. Если в результатах выдачи будут присутствовать фразы или предложения с очень сильным совпадением, то можно считать что рерайт контента очень плохой. Риск вероятности санкций за копипасту очень большой.
Второй вариант, которым я пользуюсь чаще, это сервис проверки уникальности контента http://miratools.ru/Promo.aspx Вводим текст из рерайта до 3000 символов, нажимаем кнопку «Проверить» и ждем несколько минут. Этот сервис дает возможность измерить уникальность контента в %. Лично я советую делать рерайт с качеством не ниже 95% уникальности, хотя многие говорят что проканает и рерайт с уникальностью в 80%…
Вот такие простые рекомендации помогут Вам делать качественный рерайт для своих или клиентских сайтов.
Рерайтинг — Словарь— PromoPult.ru
Рерайтинг (от англ. rewriting — переписывание; часто сокр. рерайт) — пересказ текста другими словами. Как правило, используется в целях уникализации текстового контента для поисковых систем. Специалистов, занимающихся переписыванием
оригинальных текстов, называют рерайтерами.
Смысл рерайтинга
Основная задача изложения информации другими словами — изменение лексической составляющей текста при сохранении смысловой. Таким образом до читателей доносится та же мысль, что и в оригинальном тексте, а поисковые системы считают переработанный текст уникальным и при прочих равных условиях успешно индексируют.
Виды рерайтинга
Рерайтинг можно условно разделить на два типа:
- Простой (технический, примитивный) рерайтинг. В исходном тексте слова заменяются синонимами, предложения и абзацы переставляются, добавляются-удаляются слова и фразы и т. д.
- Сложный (качественный, глубокий) рерайтинг. Авторская работа: текст полностью переписывается, сохраняются только основные мысли, тезисы, факты исходника. При этом стиль и структура текста могут быть настолько изменены, что подобная работа приблизится уже к копирайтингу.
Сферы применения
Для серьезных, не типовых проектов, требующих оригинальности и в идейном плане, рерайтинг не годится, если этого не предусматривает сама специфика сайтов: так, компании, предлагающие одинаковые продукты (медикаменты, стройматериалы, гаджеты и т. д.), чтобы не копировать друг у друга информацию, пользуются услугами рерайтеров. По этому же принципу работает огромное количество новостных порталов, предпочитающих содержанию штата журналистов оплату работы одного-двух специалистов-рерайтеров. Ну и основное применение рерайтинг нашел, конечно же, в SEO, где вебмастеры ухватились за прекрасный шанс добычи уникального контента за меньшую, в сравнении с копирайтингом, стоимость. Для поисковых машин грамотный рерайтинг неотличим от оригинального текста, так что для успешного поискового продвижения его вполне достаточно. Разумеется, речь идет о ручном рерайте, а не о генерировании контента при помощи синонимайзера — весьма рискованном во многих отношениях метода.
См. также
Копирайтинг в туризме Ищу специалиста по написанию туристических обзоров, рерайт авторских туров , статьи по курортам и достопримечательностям . Нужен уникальный контент для туристического проекта . Ищу специалиста для постоянного сотрудничества. Копирайтинг, Рерайтинг | 35 | ||
Рерайт текстов Есть сайт https://русзавод.рф/product_list Его будем переделывать и переносить на другой домен. Чтобы новый сайт не был копией, нужно переделать описания товаров, сделать, чтобы они были уникальные. Только переписать. Копирайтинг, Рерайтинг | 37 | ||
Создание онлайн марафона 3 000 ₽ Нужен специалист по созданию онлайн марафона по существующей книге. Тематика марафона психология. Есть небольшая книга на русском языке в PDF формате на 300 страниц (включая рисунки, упражнения, таблицы и тд). Всего в книге 7 глав. Ваша задача по каждой главе сделать… Написание сценария, Рерайтинг | 3 000 ₽ | 5 | |
Нужен рерайтер под готовые тексты Нужно сделать рерайтинг подготовленных текстов на мебельную тематику. Обьём одного текста около 1500-1000 символов, текстов около 60 штук. В дальнейшем будет ещё около 10 таких заданий, так как эти тексты для каждой категории каждого поддомена интернет-магазина Рерайтинг | 42 | ||
Администратор в телеграм канал о криптовалюте ищу администратора в новый телеграм канал о криптовалюте и инвестировании. Требование: умение пользоваться telegram controller bot (отложенные посты), или как минимум пользование телеграм каналами. Задачи: создание уникальных статей о криптовалюте в среднем 3-5 постов в день…. Написание статей, Рерайтинг | 6 | ||
Копирайт-рерайт текстов / Тематика — Telegram 10 000 ₽ Всем привет! Ищу копирайтера, который для начала сможет сделать рерайт существующих текстов о Telegram + как-то дополнить их. Нужно получить уникальность минимум 80%, желательно ближе к 100%. Тексты для этого сайта — telegram-top.com — для раздела «Статьи» Нужно стараться… Копирайтинг, Рерайтинг | 10 000 ₽ | 31 | |
Копирайтер в инстаграм тема киберспорт 1 000 ₴ Нужен рерайтер/копирайтер для написания статей до 500 символов. Тема киберспорт — csgo, dota, fortnite, общие темы. Требования: человек который разбирается в киберспорте, и который может быть на связи или не сильно загружен (редко, но может быть срочный пост). Пишите… Копирайтинг, Рерайтинг | 1 000 ₴ | 8 | |
Рерайт технического текста Требования: Опыт работы в рерайте технических текстов с уникальностью 100 %. Условия: — Название статьи и наименование модели в первом абзаце не изменять. Далее по тексту наименование модели можно изменять по падежам, перестановкой слов и т.п. — Тестовое задание (2000 збп… Рерайтинг | 1 | ||
Написать на английском языке 11 текстов Добрый день/вечер Нужен копирайтер, который напишет 11 текстов для сайта по ремонту техники. Задача написать качественно тексты и под SEO Документы прикрепляю. После просмотра, напишите стоимость за 1000збп и сколько в день можете писать знаков? Копирайтинг, Рерайтинг | 14 | ||
Рерайт на англ языке Добрый день! Требуется сделать рерайт описаний онлайн игр по 450 знаков без пробелов каждый. Всего 50 игр. Исходники предоставляем. Оплата 30грн за 1 тыс знаков, но готовы обсуждать условия и цены. Спасибо за ответ Английский язык, Рерайтинг | 16 | ||
Рерайтинг (инвест тематика) 6 статей (русский язык) с ключевиками 91% Нужная уникальность текста 91% и выше. (согласно https://advego.com/antiplagiat/ )Будет дано три ключевых слова и техническое задание для написания текста.Общее количество символов для статьи от 3500 до 3600 (не менее, но и не более).Тематика:- Инвестиции;- Продажа бизнеса;-… Рерайтинг | 14 | ||
Рерайт текстов на английском Рерайт текстов на английском на следующие тематики: СЕО, маркетинг, разработка и перевозки. Желательно найти исполнителя с которым будем работать на постоянной основе, но рассматриваем и сдельные варианты. Рерайт на основе одного исходника. В качестве результата нужно… Рерайтинг | 8 | ||
Рерайт статей 2 000 ₴ Рерайт статей, обьем около 70 к збп, сроки 5 — 7 дней, цена. .. Рерайтинг | 2 000 ₴ | 39 | |
Рерайтинг науч. Работы по ортопедии 1 500 ₴ Здравствуйте, Нужен рерайтинг работы на тему остеопороза (ортопедия, медицина). Работа на английском языке, 30 страниц. Это мной написанная работа для университета, много текста взято как есть из различных источников, поэтому требуется рерайтинг. Цена договорная, на ваше… Рерайтинг | 1 500 ₴ | 4 | |
Шукаємо копірайтера для запуску Ig сторінки на тему зйомок і кіно Є заготовки 6-ти текстів (постів) у які потрібно додати живості, забрати суху академічність та наповнити кіношними фішками, деякі тексти потрібно буде доповнити/переробити. Тому потрібен професіонал, який розбирається в даній тематиці або мав досвід написання подібних постів…. Копирайтинг, Рерайтинг | 19 |
Отличие рерайта от копирайта. Оценка экспертов.
О ПОНЯТИЯХ КОПИРАЙТИНГ И РЕРАЙТИНГ
Большинство владельцев сайтов, так или иначе, понимают важность уникального текста на страницах веб-ресурса.
Оригинальные тексты ценятся пользователями и хорошо ранжируются в поисковой выдаче.
Но это лишь внешняя сторона, а в реалии, существуют множество тонкостей, о которых дальше пойдет речь.
Разделяют два подхода создания уникального контента: копирайтинг и рерайтинг.
Для начала дадим определение этих понятий, чтобы выявить принципиальные отличия.
- КОПИРАЙТИНГ – процесс написания специализированных текстов с акцентом на продвижение статьи в интернете. Такие описания создаются профессиональными авторами исходя из индивидуальной логики повествования. Особенность подхода в уникальном подходе и раскрытии вопроса.
- РЕРАЙТИНГ – создание описаний или статей на базе существующих материалов. Итоговое содержание получается уникальным, но логика и смыслы повторяют исходный текст.
Две методики при профессиональном подходе дают хорошие результаты и достаточно эффективны для продвижения сайтов.
Иногда необходимо с нуля написать текст, а зачастую на базе исходных данных.
Ключевым аспектом в создании качественных текстов, является сочетание уникальности, упорядоченности и востребованности содержания.
Описание от начала и до конца должно быть логичным по структуре и читаемым.
Но, на пути заказа текстов, можно выделить две основные трудности:
ПРОБЛЕМА №1: «СЕРЫЙ» РЕРАЙТ
К сожалению, рерайт понимается многими неверно. В подавляющем большинстве случаев, когда речь идет о данной услуге, исполнители предлагают перестановку слов и подбор синонимов.
Такой подход не приводит к успеху, так как нарушаются масса важных моментов, а именно логичность текста, глубина и востребованность содержания.
- В такой работе исполнители ориентируются на показатели программного анализатора, чтобы процент уникальности был высоким. Но, при этом, совершенно не отслуживают общее качество контента.
Справедливости ради, заметим, что, не смотря на высокие значение уникальности, в реалии поисковые системы способны определять синонимические доработки. В итоге, ожидать роста трафика и конверсии от серого рерайта не стоит.
ПРОБЛЕМА №2: «ВОДА» В МЕСТО СУТИ
Общая проблема, выраженная в отсутствии профессионализма автора.
- Многие тексты пишутся для объема, а в реалии основная цель, должна заключаться в привлечении и конвертации трафика.
То есть, неправильное понимание алгоритма, побуждает владельцев сайтов наполнять страницы бессмысленной информацией с низким КПД.
Эта ошибка формируется из заблуждения авторов и заказчиков, что, как будто, тексты все равно никто не читает. Фактически тексты пишут для роботов.
Это глубочайшее заблуждение и серьезная ошибка.
На самом деле, тексты читают, но только те, над которыми качественно потрудились. Но об этом ниже.
КРИТЕРИИ КАЧЕСТВА ТЕКСТОВ
В независимости от способа создания, рерайт или копирайт, к тексту предъявляются множество требований:
- Во-первых, соответствие содержания объекту описания.
- Во-вторых, логичность повествования. Должны быть рассуждения и выводы. Одно положение вытекает из другого, а в целом все взаимосвязано.
- В-третьих, аналитическая работа, выраженная в глубине суждений и выводов. Подробный анализ характеристик, параметров, возможностей или достоинств.
- В-четвертых, наличие маркетинговых вставок в первом и вторых смысловых рядах.
- В-пятых, учет SEO настроек.
Анализ требований показывает, что сфера копирайтинга означает создание стилистически и технически грамотных описаний.
Связка задач, привлечения трафика и его конверсия, говорит о необходимости множества компетенций авторского коллектива.
Иногда за написание текста отвечает эксперт, за редакцию маркетолог, а публикацию SEО специалист. Но чаще, все делает один автор.
Допустимы различные подходы, главное чтобы итоговый интеллектуальный продукт работал.
ВОСПРИЯТИЕ КОНТЕНТА ПОСЕТИТЕЛЯМИ САЙТА
Помимо содержания, маркетинговой и SEO проработки очень важно подумать над восприятием написанного.
Распространенная ошибка для большинства web-порталов это мелкий шрифт с отсутствием интервалов. Также, часто встречаются абзацы со сложносочиненными предложениями, в которых, дойдя до конца, забываешь с чего начал.
Исходя из этого, существует ряд рекомендаций:
- Упрощать предложения
- Использовать тезисы
- Делать отступы
- Выделять ключевые мысли
- Настраивать величину шрифта для комфортного чтения
ПРАВИЛЬНЫЙ РЕРАЙТ
Основной принцип правильного рерайта заключается в глубокой аналитической работе.
- Первый шаг это изучение материала. Причем желательно обращаться к множеству источников. Этот момент отличает качественную работу от банального переписывания исходного варианта.
- Второй шаг заключается в создании уникального осмысленного контента. Суть, естественно, будет схожа с другими текстами, но написать можно глубже, интереснее и содержательнее.
Итоговое качество зависит от уровня аналитики и мастерства автора.
РЕКЛАМНЫЕ И МАРКЕТИНГОВЫЕ ПРИЕМЫ
- Существует такое понятие как продающий текст. Это означает использование в содержании смыслов побуждающих к сотрудничеству.
Профессиональный подход, предполагает деликатное и ненавязчивое предложение к взаимодействию. Грубые формы, типа прямых указаний «купить быстрее», это пережиток прошлого.
В идеале избегать прямых призывов, и стараться повышать конверсию через грамотно организованную смысловую линию контента.
Разумеется, указать на то, что на сайте можно подписаться, оформить заказ или получить консультацию будет полезным. Но делать это надо с учетом общей оценки множества факторов.
Отметим, что качественный копирайтинг, в том числе рерайт, как раз и предполагает тонкую работу на разных смысловых планах. С одной стороны происходит описание продукта или услуги, с другой предлагается остановить выбор именно на данном решении.
- Если в описании приводятся обоснованные факты, информация достоверна и объективна, то это само по себе сильная аргументация. Призывы купить будут лишними, так как посетитель естественным путем придет к этому желанию.
Именно поэтому, мы отдельно выделили пагубность «серого» рерайта, так как в нем по определению аспект маркетинга будет нарушен.
Если обобщить, то принцип рекламных стимулов заключается в публикации экспертной информации в конструктивном аспекте.
Работать на таком уровне могут только специалисты высокой квалификации.
SEO КОПИРАЙТИНГ И РЕРАЙТИНГ
- Как уже было отмечено, качественный текст складывается из проработки стилистики, логики, маркетинговых смыслов и SEO параметров.
К последнему относится настройка SEO модуля, а именно создание тайтла, заполнение мета данных и оформление заголовков уровня h2-H5.
Заголовки отвечают за навигацию смыслов контента. Именно по ним поисковые роботы определяют соответствие поисковым запросам.
Но, также, следует уделить внимание содержанию. Оно должно отвечать заявленному заголовку. В противном случае читатели будут показывать высокий уровень отказов, а страница потеряет позиции.
- В случае копирайтинга, заголовки создаются с нуля, на основании данных статистики поисковых запросов и маркетинговой аналитики.
- В случае рерайтинга, часто оглавление оставляют прежним. В ряде случаев корректируют опираясь на вышеуказанные моменты.
ИСКУССТВО НАПИСАНИЯ КАЧЕСТВЕННОГО КОНТЕНТА
Тексты для продвижения сайтов отличаются от книжных публикаций, журнальных и газетных статей.
Да, умение профессионально писать, это важнейший аспект, определяющий итоговое качество.
- Но, для раскрутки веб-страниц и товаров требуется единение авторских, маркетинговых и программных навыков.
Также, важно разбираться в психологии, так как коммерческие тексты создаются для различных целевых аудиторий.
В целом копирайтинг можно считать искусством, так как любые попытки предоставить технологию процесса мало эффективны. Каждая конкретная задача требует творческого подхода.
Это касается и правильного рерайта, где необходимо проводить индивидуальную аналитику для каждого текста.
Овладение данным искусством возможно при наличии определенных навыков и внутренних способностей. Для многих авторство чуждо как деятельность, для других наоборот написание текстов раскрывает вдохновение.
ЗАКЛЮЧЕНИЕ
- Создание текстов это достаточно востребованная услуга в современном мире. Наиболее распространенные подходы написания контента для интернет порталов это копирайтинг и рерайтинг.
Копирайтинг в целом это процесс написания уникального текста на базе интеллектуального творчества автора. А рерайтинг это аналитика существующих материалов и генерация оригинального содержания путем его осмысления.
Граница между понятиями достаточно тонкая. На этом фоне зачастую владельцы сайтов путаются в определениях. Это приводит к неверному пониманию сути и возникновению ошибок.
В свою очередь, компетентность и профессиональный подход позволяет множеству компаний достигать высоких результатов в развитии сайта.
Надеемся, данная статья будет полезна тем, кто хочет использовать инструментарий копирайтинга для раскрутки бизнеса в интернете.
Как писать копирайт и рерайт
Всем привет! Сегодня я хочу Вам рассказать про копирайт и рерайт. Копирайт – это статья, которая написана, как бы, “с головы”. Рерайт – это статья, переписанная из уже готовой, то есть грубо говоря “изложение”. Но, если статья написана на основе не одного материала, то это уже будет считаться копирайтом.
Помню, когда я только начинал свой путь блоггера, написание статей для меня давалось очень сложно. Из-за этого я даже хотел забросить на блоги, но сейчас безумно рад, что этого я не сделал.
В первое время “с головы” было писать очень сложно: я не мог переписать свою мысль на “бумагу”. Тяжело было связывать предложения, подбирать нужные слова. Я искал решение этой проблемы и, к счастью, нашел.
Рерайт
Если Вы не знаете, что писать, могу посоветовать следующее:
- Выбираете тему для написания статей.
- В поисковике (Яндекс, Google) набираете необходимый запрос.
- Из результата выбираете статью, которая больше всего понравилась.
- На ее основе переписываете текст (заменяете слова синонимами, меняете местами слова в предложении и т.п.).
Пример: “Бабушка приготовила вкусные булочки”. Можно заменить на следующее: “Мама моей мамы спекла аппетитные булочки”.
Копирайт
Вариант, который намного лучше:
- Определяетесь с темой для будущей статьи.
- В поисковиках набираете нужный запрос.
- Просматриваете первые 1-2 страницы выдачи поиска (открываете “по теме” 10 статей).
- Не закрывая их, можно повторить 2 и 3 шаг (набивая другой запрос).
- Просматриваете 20-30 открытых статей, внимательно изучаете их.
- Делаете некую структуру статей (можно нарисовать прям на листочке). То есть из этих статей Ваша должна быть лучшей, поэтому заранее “рисуете”, что будет в начале, что в конце, что можно дополнить или, что вообще не стоит добавлять.
- Повторюсь, пишите лучшую статью, как в плане информативности для людей (как правильно писать статьи?), так и оптимизированную для поисковых роботов (как писать продвигаемую статью?).
- Проверяете уникальность текста программой Advego Plagiatus (3-ий пункт). Если, что не так, делаете 100%-ую уникальность.
- Проверяете ошибки и, если все нормально, выкладываете в сеть.
Таким методом, я любил писать, когда только начинал писать статьи. Но после, как-то рука набилась и пальцы буквально начали “пархать” над клавиатурой. Поэтому, если Вам все еще сложно писать, попробуйте вышеописанный метод, все это Вам поможет (причем очень скоро) набить руку. Если раньше я писал статьи 4-8 часов, то сейчас мне хватает 1-2 часа.
Уже не в первый, и не во второй раз повторюсь: чтобы научиться писать, просто пишите, пишите и пишите.
На сегодня все, до скорой встречи на будущих уроках, которые выходят 5 раз в неделю!
97%
положительных отзывов. Всего 190 отзывов.
Россия, Москва |
|
Нет отзывов
Украина, Донецк |
|
99%
положительных отзывов. Всего 275 отзывов.
Россия, Орел |
|
99%
положительных отзывов. Всего 178 отзывов.
Украина, Николаев |
|
100%
положительных отзывов. Всего 65 отзывов.
Украина, Запорожье |
|
100%
положительных отзывов. Всего 19 отзывов.
Беларусь, Минск |
|
100%
положительных отзывов. Всего 31 отзыв.
Россия, Санкт-Петербург |
|
100%
положительных отзывов. Всего 5 отзывов.
Россия, Москва |
|
Нет отзывов
Россия, Москва |
|
100%
положительных отзывов. Всего 5 отзывов.
Россия, Москва |
|
100%
положительных отзывов. Всего 5 отзывов.
Россия, Сочи |
|
Нет отзывов
Молдова, Кишинев |
|
100%
положительных отзывов. Всего 14 отзывов.
Россия, Москва |
|
100%
положительных отзывов. Всего 3 отзыва.
Россия, Санкт-Петербург |
|
100%
положительных отзывов. Всего 1 отзыв.
Украина, Вышгород |
|
100%
положительных отзывов. Всего 1 отзыв.
Россия, Санкт-Петербург |
|
100%
положительных отзывов. Всего 1 отзыв.
Россия, Владивосток |
|
Нет отзывов
Беларусь, Минск |
|
Нет отзывов
|
|
Нет отзывов
|
|
Нет отзывов
Россия, Уфа |
|
Нет отзывов
|
|
Нет отзывов
|
|
Нет отзывов
Казахстан, Астана |
|
Нет отзывов
Россия, Москва |
|
Нет отзывов
|
|
Нет отзывов
Россия, Горно-Алтайск |
|
Нет отзывов
Россия, Москва |
|
Нет отзывов
Россия, Астрахань |
|
Нет отзывов
|
|
Нет отзывов
Казахстан, Алматы (Алма-Ата) |
|
100%
положительных отзывов. Всего 536 отзывов.
Украина, Одесса |
|
99%
положительных отзывов. Всего 775 отзывов.
Украина, Запорожье |
|
99%
положительных отзывов. Всего 370 отзывов.
Украина, Харьков |
|
100%
положительных отзывов. Всего 147 отзывов.
Испания, Аликанте |
|
97%
положительных отзывов. Всего 342 отзыва.
Россия, Нижний Новгород |
|
97%
положительных отзывов. Всего 209 отзывов.
Россия, Новосибирск |
|
100%
положительных отзывов. Всего 73 отзыва.
Россия, Нижний Новгород |
|
99%
положительных отзывов. Всего 226 отзывов.
Россия, Москва |
|
100%
положительных отзывов. Всего 361 отзыв.
Россия, Санкт-Петербург |
|
Настроить поведение хостинга | Firebase
С помощью Firebase Hosting вы можете настроить индивидуальное поведение хостинга для запросы на ваш сайт.
Что можно настроить для хостинга?
Укажите, какие файлы в локальном каталоге проекта вы хотите развернуть. Хостинг Firebase. Узнать, как.
Обслуживать настроенную страницу 404 / не найдено. Узнать, как.
Настройте
редирект
для страниц, которые вы переместили или удалили.Узнать, как.Настроить
перезаписей
для любой из этих целей:Показывать одно и то же содержимое для нескольких URL. Узнать, как.
Выполнение функции или доступ к контейнеру Cloud Run с URL-адреса хостинга. Узнайте, как: функция или контейнер.
Создание динамической ссылки личного домена. Узнать, как.
Добавьте
заголовков
для передачи дополнительной информации о запросе или ответ, например, как браузеры должны обрабатывать страницу и ее содержимое (аутентификация, кеширование, кодирование и т. д.). Узнать, как.Настройка перезаписи интернационализации (i18n) для обслуживания определенного контента на основе в зависимости от языковых предпочтений и / или страны пользователя. Узнайте, как это сделать (на другой странице).
Где вы определяете конфигурацию своего хостинга?
Вы определяете конфигурацию хостинга Firebase в своем firebase.json
файл. Firebase
автоматически создает файл firebase.json
в корне вашего проекта
каталог при запуске firebase init
команда.
firebase init
и выберите Хостинг, команда
перезапишет хостинг
раздел файла firebase.json
обратно в
конфигурация по умолчанию. Вы можете найти
полный пример конфигурации firebase.json
(охватывает только хостинг Firebase) внизу этой страницы. Обратите внимание, что firebase.json Файл
также может содержать
конфигурации для других сервисов Firebase.
Вы можете проверить развернутую базу данных firebase.json
с использованием
Хостинг REST API.
Приоритетность ответов хостинга
Различные параметры конфигурации хостинга Firebase, описанные на этой странице иногда могут перекрываться. Если возникает конфликт, Хостинг определяет его ответ в следующем порядке приоритета:
- Зарезервированные пространства имен, которые начинаются с сегмента пути
/ __ / *
- Настроенные редиректы
- Статическое содержимое с точным соответствием
- Настроил перезаписи
- Пользовательский 404 стр.
- По умолчанию 404 стр.
и перезаписывают атрибуты
, Хостинг
применяет перенаправление или перезапись, определенную правилом first , с шаблоном URL
который соответствует запрошенному пути.Значит, нужно сознательно упорядочить правила
внутри каждого из перенаправляет
и перезаписывает атрибуты
. Настроил редирект
по-прежнему имеют приоритет над , перезаписывают
.Если вы используете перезапись i18n, точное соответствие и порядок приоритета обработки 404 расширены в соответствии с вашим «i18n содержание ».
Укажите, какие файлы развертывать
Атрибуты по умолчанию — общедоступные
и игнорируют
— включены
по умолчанию firebase. json
определяет, какие файлы находятся в каталоге вашего проекта.
должны быть развернуты в вашем проекте Firebase.
По умолчанию с размещением конфигурации
в файле firebase.json
выглядит следующим образом:
"хостинг": {
"public": "public", // единственный обязательный атрибут для Хостинга
"игнорировать": [
"firebase.json",
"** /. *",
"** / node_modules / **"
]
}
общественные
Обязательно
Открытый атрибут
указывает, в какой каталог развертывать
Хостинг Firebase.Значение по умолчанию — это каталог с именем public
, но вы
можно указать путь к любому каталогу, если он существует в вашем проекте
каталог.
Ниже указано имя каталога для развертывания по умолчанию:
"хостинг": {
"public": "public"
// . ..
}
Вы можете изменить значение по умолчанию на каталог, который хотите развернуть:
"хостинг": {
"общедоступный": "dist / app"
// ...
}
игнорировать
Необязательно
Атрибут игнорировать
указывает файлы, которые следует игнорировать при развертывании.Это может занять
шарики так же, как
Git обрабатывает .gitignore
.
Следующие значения по умолчанию игнорируются файлами:
"хостинг": {
// ...
"игнорировать": [
"firebase.json", // файл конфигурации Firebase (файл, описанный на этой странице)
"** /. *", // файлы с начальной точкой должны быть скрыты от системы
"** / node_modules / **" // содержит зависимости, используемые для создания вашего сайта, но не для его запуска
]
}
Настроить страницу 404 / Не найдено
Необязательно
Вы можете обслуживать настраиваемую ошибку 404 Not Found
, когда пользователь пытается получить доступ к странице
этого не существует.
Создайте новый файл в общедоступном каталоге вашего проекта
, назовите его 404.html
, затем добавьте в файл свое собственное содержимое 404 Not Found
.
Firebase Hosting отобразит содержимое этой настраиваемой страницы 404.html
, если
браузер вызывает ошибку 404 Not Found
в вашем домене или субдомене.
Настроить перенаправления
Необязательно
Используйте перенаправление URL, чтобы предотвратить неработающие ссылки, если вы переместили страницу
или сократить URL-адреса.Например, вы можете перенаправить браузер с example.com/team
– example.com/about.html
.
Укажите перенаправления URL-адресов, создав атрибут перенаправлений
, содержащий массив
объектов (так называемые «правила перенаправления»). В каждом правиле укажите шаблон URL, который,
если соответствует пути URL-адреса запроса, запускает хостинг для ответа перенаправлением
на указанный целевой URL.
Вот базовая структура для атрибута перенаправляет
.Этот пример перенаправляет
запросы к / foo
, сделав новый запрос к / bar
.
"хостинг": {
// ...
// Возвращает постоянное перенаправление на «/ bar» для запросов к «/ foo» (но не «/ foo / **»)
"перенаправления": [{
"источник": "/ foo",
"пункт назначения": "/ бар",
«тип»: 301
}]
}
Просмотрите более подробный пример для перенаправляет атрибут
"хостинг": {
// ...
// Добавляем атрибут "перенаправления" в "хостинг"
"перенаправления": [{
// Возвращает постоянное перенаправление на «/ bar» для запросов к «/ foo» (но не «/ foo / **»)
"источник": "/ foo",
"пункт назначения": "/ бар",
«тип»: 301
}, {
// Возвращает постоянное перенаправление на «/ bar» для запросов к «/ foo» и «/ foo / **»
"источник": "/ foo {, / **}"
"пункт назначения": "/ бар"
«тип»: 301
}, {
// Возвращает временное перенаправление для всех запросов к файлам или каталогам в каталоге firebase
"источник": "/ firebase / **",
"destination": "https: // firebase. google.com/ ",
«тип»: 302
}, {
// Перенаправление на основе регулярного выражения, эквивалентное приведенному выше поведению
"регулярное выражение": "/firebase/.*",
"destination": "https://firebase.google.com/",
«тип»: 302
}]
}
Атрибут перенаправляет
содержит массив правил перенаправления, где каждое правило
должны включать поля в таблице ниже.
Firebase Hosting сравнивает исходное
или регулярное выражение
значение со всем URL
пути в начале каждого запроса (до того, как браузер определит,
файл или папка существует по этому пути).Если совпадение найдено, то
Исходный сервер хостинга Firebase отправляет ответ перенаправления HTTPS, сообщающий
браузер, чтобы сделать новый запрос по URL-адресу назначения
.
Поле | Описание | |
---|---|---|
перенаправляет | ||
источник (рекомендуется) или регулярное выражение | Шаблон URL-адреса, который при совпадении с URL-адресом исходного запроса запускает Хостинг для применения редиректа | |
пункт назначения | Статический URL-адрес, по которому браузер должен сделать новый запрос Этот URL-адрес может быть относительным или абсолютным путем. | |
тип | Код ответа HTTPS
|
перенаправляет
хостинг применяет перенаправление
определяется правилом first с шаблоном URL, который соответствует запрошенному
дорожка.Итак, вам нужно сознательно упорядочить правила в пределах редиректов
атрибут.Захват сегментов URL для переадресации
Необязательно
Иногда может потребоваться захват определенных сегментов URL-адреса правила перенаправления
шаблон ( источник
или значение регулярного выражения
), затем повторно используйте эти сегменты в
путь назначения правила
.
Захват сегментов URL при использовании глобусов
Если вы используете поле source
(то есть указав глобус для вашего URL
шаблон), вы можете захватывать сегменты, добавляя префикс :
для идентификации
сегмент.Если вам также необходимо захватить оставшийся URL-путь после сегмента,
добавьте *
сразу после сегмента. Например:
"hosting": { // ... "перенаправления": [{ "source": "/ blog /: post *", // захватывает весь сегмент URL, начинающийся с "post" "destination": "https://blog.myapp.com/:post", // включает весь сегмент URL-адреса, идентифицированный и зафиксированный значением "source" «тип»: 301 }, { "source": "/ users /: id / profile", // захватывает только сегмент URL "id", но ничего после "destination": "/ users /: id / newProfile", // включает сегмент URL, идентифицированный и захваченный значением "source" «тип»: 301 }] }
Захват сегментов URL при использовании регулярных выражений RE2
Если вы используете поле regex
(то есть, указав регулярное выражение RE2
для вашего шаблона URL), вы можете захватывать сегменты, используя именованные или безымянные
Группы захвата RE2. Именованные группы захвата могут использоваться в поле назначения
с префиксом :
, а на безымянные группы захвата можно ссылаться по их
числовой индекс в значении регулярного выражения
, индексируется от 1. Например:
"hosting": { // ... "перенаправления": [{ "regex": "/ blog / (? P. +)", // если вы знакомы с PCRE, имейте в виду, что RE2 требует, чтобы именованные группы захвата начинались с? P "destination": "https://blog.myapp.com/:post", // включает весь сегмент URL-адреса, идентифицированный и зафиксированный значением `regex` «тип»: 301 }, { "regex": "/ users / (\ d +) / profile", // использует директиву \ d только для сопоставления сегментов числового пути "destination": "/ users /: 1 / newProfile", // первая группа захвата, которую можно увидеть в значении `regex`, называется 1, и так далее «тип»: 301 }] }
Настроить перезапись
Необязательно
Используйте перезапись, чтобы отображать одно и то же содержимое для нескольких URL-адресов. Переписчики
особенно полезно при сопоставлении с образцом, поскольку вы можете принять любой URL-адрес,
соответствует шаблону и позволяет коду на стороне клиента решать, что отображать.
Вы также можете использовать перезапись для поддержки приложений, использующих
HTML5 pushState
для навигации. Когда браузер пытается открыть путь URL, соответствующий
указан источник
или regex
URL-шаблон, браузеру будет предоставлен
вместо этого содержимое файла по адресу назначения
URL.
Укажите перезапись URL-адресов, создав атрибут перезаписывает атрибут
, содержащий массив
объектов (так называемые «правила перезаписи»).В каждом правиле укажите шаблон URL, который,
если соответствует пути URL-адреса запроса, запускает хостинг для ответа, как если бы
сервису был предоставлен указанный целевой URL.
Вот базовая структура для атрибута , перезаписывающего
. Этот пример служит index.html
для запросов к несуществующим файлам или каталогам.
"хостинг": {
// ...
// Обслуживает index.html для запросов к файлам или каталогам, которые не существуют
"перезаписывает": [{
"источник": "**",
"пункт назначения": "/ index.html "
}]
}
Посмотреть более подробный пример для перезаписывает атрибут
"hosting": { // ... // Добавляем атрибут "rewrites" в "hosting" "перезаписывает": [{ // Обслуживает index.html для запросов к файлам или каталогам, которые не существуют "источник": "**", "пункт назначения": "/index.html" }, { // Обслуживает index.html для запросов к "/ foo" и "/ foo / **" // Использование «/ foo / **» соответствует только таким путям, как «/ foo / xyz», но не «/ foo» "источник": "/ foo {, / **}", "пункт назначения": "/ index. html " }, { // Перезапись на основе регулярных выражений, эквивалентная описанному выше поведению "регулярное выражение": "/foo(/.*)?", "пункт назначения": "/index.html" }, { // Исключает указанные пути из перезаписи "источник": "! / @ (js | css) / **", "пункт назначения": "/index.html" }] }
Атрибут перезаписывает Атрибут
содержит массив правил перезаписи, где каждое правило
должны включать поля в таблице ниже.
Firebase Hosting применяет правило перезаписи, только если файл или каталог не
существуют по URL-пути, который соответствует указанному шаблону URL-адреса source
или regex
.Когда запрос запускает правило перезаписи, браузер возвращает фактическое содержимое.
указанного файла назначения
вместо перенаправления HTTP.
Поле | Описание | |
---|---|---|
перезаписывает | ||
источник (рекомендуется) или регулярное выражение | Шаблон URL-адреса, который при совпадении с URL-адресом исходного запроса запускает Хостинг для применения перезаписи | |
пункт назначения | Локальный файл, который должен существовать Этот URL-адрес может быть относительным или абсолютным путем. |
перезаписывает атрибут
, Хостинг применяет перезапись
определяется правилом first с шаблоном URL, который соответствует запрошенному
дорожка. Значит, нужно сознательно упорядочить правила в пределах , переписывает
атрибут.Прямые запросы к функции
Вы можете использовать , перезаписать
для обслуживания функции из URL-адреса хостинга Firebase. В
следующий пример — это отрывок из
обслуживание динамического контента с помощью облачных функций.
us-central1
. Например, чтобы направлять все запросы со страницы / bigben
на свой
Хостинг-сайт для выполнения функции bigben
:
"хостинг": {
// . ..
// Направляет все запросы со страницы `/ bigben` на выполнение функции` bigben`
"перезаписывает": [{
"источник": "/ bigben",
"функция": "bigben"
}]
}
После добавления этого правила перезаписи и развертывания в Firebase (используя firebase deploy
), ваша функция доступна по следующим URL-адресам:
Ваши поддомены Firebase:
PROJECT_ID .web.app/bigben
иPROJECT_ID .firebaseapp.com / bigben
Любые подключенные пользовательские домены:
CUSTOM_DOMAIN / bigben
Прямые запросы к контейнеру Cloud Run
Вы можете использовать перезаписывает
для доступа к контейнеру Cloud Run из
URL-адрес хостинга Firebase. Следующий пример — это отрывок из
обслуживание динамического контента с помощью Cloud Run.
Например, чтобы направлять все запросы со страницы / helloworld
на свой
Хостинг сайта для запуска и запуска контейнера helloworld
экземпляр:
"хостинг": {
//...
// Направляет все запросы со страницы `/ helloworld` на запуск и запуск контейнера helloworld
"перезаписывает": [{
"источник": "/ helloworld",
"пробег": {
"serviceId": "helloworld", // "имя службы" (с момента развертывания образа контейнера)
"region": "us-central1" // необязательно (если опущено, по умолчанию используется us-central1)
}
}]
}
После добавления этого правила перезаписи и развертывания в Firebase (используя firebase deploy
), образ вашего контейнера доступен по следующим URL-адресам:
Ваши поддомены Firebase:
PROJECT_ID . web.app/helloworld
иPROJECT_ID .firebaseapp.com / helloworld
Любые подключенные пользовательские домены:
CUSTOM_DOMAIN / helloworld
Создать собственный домен Динамические ссылки
Вы можете использовать перезаписывает
для создания динамических ссылок личного домена. Посетите динамические ссылки
документация для получения подробной информации о
настройка личного домена для динамических ссылок.
Используйте свой личный домен только для динамических ссылок
"hosting": { //... "appAssociation": "AUTO", // требуется для динамических ссылок (по умолчанию AUTO, если не указано) // Добавляем атрибут "rewrites" в "hosting" "перезаписывает": [{ "source": "/ **", // динамические ссылки начинаются с "https: // CUSTOM_DOMAIN /" "dynamicLinks": true }] }
Укажите префиксы пути к личному домену, которые будут использоваться для динамических ссылок
"hosting": { // . .. "appAssociation": "AUTO", // требуется для динамических ссылок (по умолчанию AUTO, если не указано) // Добавляем атрибут "rewrites" в "hosting" "перезаписывает": [{ "source": "/ promos / **", // динамические ссылки начинаются с "https: // CUSTOM_DOMAIN / promos /" "dynamicLinks": true }, { "source": "/ links / share / **", // динамические ссылки начинаются с "https: // CUSTOM_DOMAIN / links / share /" "dynamicLinks": true }] }
Настройка динамических ссылок в базе данных firebase.json
требуется следующее:
Поле | Описание | |
---|---|---|
приложение Ассоциация | Должен быть установлен на
| |
перезаписывает | ||
источник | Путь, который вы хотите использовать для динамических ссылок В отличие от правил, которые перезаписывают пути к URL-адресам, правила перезаписи для динамических ссылок не может содержать регулярные выражения. | |
динамические ссылки | Должен быть установлен на true |
- Убедитесь, что префикс URL динамических ссылок не конфликтует с более высоким конфигурации приоритетного хостинга (например, размещенный статический контент всегда имеет приоритет перед перезаписью).
- Внутри каждого из
редиректов
иперезаписывают
атрибуты, Хостинг применяет перенаправление или перезапись, определенные первое правило с шаблоном URL, который соответствует запрошенному пути. Итак, вам нужно сознательно упорядочить правила в каждом изперенаправляет
, аперезаписывает атрибуты
.
Для получения подробной информации см. Динамические ссылки документация.
Необязательно
Заголовки позволяют клиенту и серверу передавать дополнительную информацию
с просьбой или ответом. Некоторые наборы заголовков могут влиять на то, как браузер
обрабатывает страницу и ее содержимое, включая контроль доступа, аутентификацию,
кеширование и кодирование.
Укажите настраиваемые заголовки ответов для конкретных файлов, создав атрибут заголовков
который содержит массив объектов заголовка.В каждом объекте укажите шаблон URL
что, если оно соответствует пути URL-адреса запроса, запускает хостинг для применения
указанные настраиваемые заголовки ответов.
Вот основная структура для атрибута заголовков
. В этом примере применяется
Заголовок CORS для всех файлов шрифтов.
"хостинг": {
// ...
// Применяет заголовок CORS для всех файлов шрифтов
"заголовки": [{
"источник": "** / *. @ (eot | otf | ttf | ttc | woff | font.css)",
"заголовки": [{
«ключ»: «Управление доступом-Разрешить-Происхождение»,
"ценить": "*"
}]
}]
}
Просмотрите более подробный пример для атрибута заголовков
"hosting": { //. .. // Добавляем атрибут "заголовки" в "хостинг" "заголовки": [{ // Применяет заголовок CORS для всех файлов шрифтов "источник": "** / *. @ (eot | otf | ttf | ttc | woff | font.css)", "заголовки": [{ «ключ»: «Управление доступом-Разрешить-Происхождение», "ценить": "*" }] }, { // Заменяет 1-часовой кеш браузера по умолчанию на 2-часовой кеш для всех файлов изображений "источник": "** / *. @ (jpg | jpeg | gif | png)", "заголовки": [{ «ключ»: «Кэш-контроль», "значение": "max-age = 7200" }] }, { // Перезапись на основе регулярных выражений, эквивалентная описанному выше поведению "регулярное выражение": ".+ / \ w + \. (jpg | jpeg | gif | png) $ ", "заголовки": [{ «ключ»: «Кэш-контроль», "значение": "max-age = 7200" }] }, { // Устанавливает заголовок кеша для 404 страниц для кеширования на 5 минут "источник": "404.html", "заголовки": [{ «ключ»: «Кэш-контроль», "значение": "max-age = 300" }] }] }
Атрибут заголовков
содержит массив определений, где каждое определение
должны включать поля в таблице ниже.
Поле | Описание | ||
---|---|---|---|
заголовки | |||
источник (рекомендуется) или регулярное выражение | Шаблон URL-адреса, который при совпадении с URL-адресом исходного запроса запускает Хостинг для применения настраиваемого заголовка Чтобы создать заголовок, соответствующий вашему
пользовательская страница 404, используйте | ||
массив (суб) заголовков | Пользовательские заголовки, которые хостинг применяет к пути запроса Каждый подзаголовок должен включать | ||
ключ | Имя заголовка, например Cache-Control | ||
значение | Значение заголовка, например max-age = 7200 |
Подробнее о Cache-Control
можно узнать в
Раздел «Хостинг», описывающий обслуживание динамического контента и хостинг.
микросервисы. Вы также можете узнать больше о
Заголовки CORS.
Strict-Transport-Security
.
конфигурация поддоменов хостинга по умолчанию (например, * . web.app
). Однако любой
подключенные пользовательские домены будут обслуживать настроенное значение.Control
.html
расширения Необязательно
Атрибут cleanUrls
позволяет вам контролировать, будут ли URL
должен включать .html
расширение.
Когда истинно
, хостинг автоматически удаляет расширение .html
из загруженного
URL-адреса файлов. Если в запрос добавлено расширение .html
, Хостинг выполняет
перенаправление 301
на тот же путь, но без расширения .html
.
Вот как можно контролировать включение .html
в URL-адреса путем включения cleanUrls
атрибут:
"хостинг": {
// . ..
// Капли `.html` из загруженных URL
"cleanUrls": правда
}
Управляющая косая черта в конце
Необязательно
Атрибут trailingSlash
позволяет вам контролировать, статический ли
URL-адреса содержимого должны включать в себя косую черту.
- Когда
истинно
, хостинг перенаправляет URL-адреса, чтобы добавить косую черту в конце. - Если
false
, хостинг перенаправляет URL-адреса, чтобы удалить косую черту в конце. - Если не указано иное, хостинг использует только завершающие слэши для индекса каталога.
файлы (например,
about / index.html
).
Вот как можно контролировать завершающие косые черты, добавляя атрибут trailingSlash
:
"хостинг": {
// . ..
// Удаляет завершающие слэши из URL
"trailingSlash": ложь
}
Атрибут trailingSlash
не влияет на перезапись динамического содержимого.
обслуживается Cloud Functions или Cloud Run.
Соответствие шаблону глобуса
Параметры конфигурации хостинга Firebase широко используют
соответствие шаблону glob
обозначение с помощью extglob, аналогично тому, как Git обрабатывает gitignore
правила и
Ручки Bower игнорируют правила
.Эта страница вики представляет собой более подробную ссылку,
но ниже приведены объяснения примеров, использованных на этой странице:
firebase.json
— соответствует только файлуfirebase.json
в корне из общего каталога**
— соответствует любому файлу или папке в произвольном подкаталоге*
— Соответствует только файлам и папкам в корнеобщедоступный
каталог** /. *
— Соответствует любому файлу, начинающемуся с.
(обычно скрытые файлы, как в папке.git
) в произвольном подкаталоге** / node_modules / **
— соответствует любому файлу или папке в произвольной подкаталогпапки node_modules
, которая сама может находиться в произвольном подкаталог общего каталога** / *. @ (Jpg | jpeg | gif | png)
— Соответствует любому файлу в произвольном подкаталог, который заканчивается ровно одним из следующего:.jpg
,.jpeg
,.gif
или.png
Пример конфигурации полного хостинга
Ниже приведен полный пример конфигурации firebase. json
для
Хостинг Firebase. Обратите внимание, что файл firebase.json
также может содержать
конфигурации для других сервисов Firebase.
{
"hosting": {
"public": "dist / app", // "public" - единственный обязательный атрибут для Хостинга
"игнорировать": [
"база.json ",
"** /. *",
"** / node_modules / **"
],
"перенаправления": [{
"источник": "/ foo",
"пункт назначения": "/ бар",
«тип»: 301
}, {
"источник": "/ firebase / **",
"destination": "https://www.firebase.com",
«тип»: 302
}],
"перезаписывает": [{
// Показывает одно и то же содержимое для нескольких URL
"источник": "/ приложение / **",
"пункт назначения": "/app/index.html"
}, {
// Настраивает личный домен для динамических ссылок
"источник": "/ промо / **",
"dynamicLinks": true
}, {
// Направляет запрос облачным функциям
"источник": "/ bigben",
"функция": "bigben"
}, {
// Направляет запрос в контейнерное приложение Cloud Run
"источник": "/ helloworld",
"пробег": {
"serviceId": "helloworld",
"регион": "us-central1"
}
}],
"заголовки": [{
"источник": "**/*. @ (eot | otf | ttf | ttc | woff | font.css) ",
"заголовки": [{
«ключ»: «Управление доступом-Разрешить-Происхождение»,
"ценить": "*"
}]
}, {
"источник": "** / *. @ (jpg | jpeg | gif | png)",
"заголовки": [{
«ключ»: «Кэш-контроль»,
"значение": "max-age = 7200"
}]
}, {
"источник": "404.html",
"заголовки": [{
«ключ»: «Кэш-контроль»,
"значение": "max-age = 300"
}]
}],
"cleanUrls": правда,
"trailingSlash": ложь,
// Требуется для настройки пользовательских доменов для динамических ссылок
"appAssociation": "АВТО",
}
}
Модуль ngx_http_rewrite_module
Модуль ngx_http_rewrite_module
Модуль ngx_http_rewrite_module
используется для
изменить URI запроса с использованием регулярных выражений PCRE, вернуть перенаправления и
условно выбираем конфигурации.
Перерыв, если вернуться, rewrite и set директивы обрабатываются в следующем порядке:
- директивы этого модуля, указанные на уровень сервера выполняются последовательно;
- несколько раз:
- а место расположения ищется на основе URI запроса;
- директивы этого модуля, указанные в найденном месте выполняются последовательно;
- цикл повторяется, если URI запроса был переписан, но не более чем 10 раз.
Директивы
Синтаксис: | перерыв ; |
---|---|
Дефолт: | — |
Контекст: | сервер , расположение , если |
Останавливает обработку текущего набора ngx_http_rewrite_module
директив.
Если директива указана внутри место расположения, дальнейшая обработка запроса продолжается в этом месте.
Пример:
if ($ slow) { limit_rate 10к; перемена; }
Синтаксис: | если ( |
---|---|
Дефолт: | — |
Контекст: | сервер , расположение |
Выполняется оценка указанного условия
.Если true, то директивы этого модуля, указанные в фигурных скобках, являются
выполняется, и запросу назначается конфигурация внутри , если директива
.
Конфигурации внутри , если директивы
унаследованный от предыдущего уровня конфигурации.
Состояние может быть любым из следующих:
- имя переменной; false, если значение переменной — пустая строка
или «
0
»;До версии 1.0.1 любая строка, начинающаяся с «
0
» считалось ложным значением. - сравнение переменной со строкой с помощью
Операторы «
=
» и «! =
»; - сопоставление переменной с регулярным выражением с использованием
«
~
» (для сопоставления с учетом регистра) и Операторы «~ *
» (для сопоставления без учета регистра). Регулярные выражения могут содержать записи, которые доступны для позднее повторное использование в переменных$ 1
..$ 9
. Отрицательные операторы «! ~
» и «! ~ *
» также доступны.Если регулярное выражение включает «}
» или «;
”символов, все выражения должны быть заключены в в одинарных или двойных кавычках. - проверка наличия файла с помощью «
-f
» и Операторы «! -F
»; - проверка наличия справочника с помощью «
-d
» и Операторы «! -D
»; - проверка наличия файла, каталога или символической ссылки с помощью
Операторы «
-э
» и «! -Э
»; - проверка исполняемого файла с помощью «
-x
» и операторы «! -x
».;] +) (?:; | $) «) { установить $ id $ 1; } if ($ request_method = POST) { возврат 405; } if ($ slow) { limit_rate 10к; } if ($ invalid_referer) { возврат 403; }Значение встроенной переменной
$ invalid_referer
устанавливается параметром Директива valid_referers.Синтаксис: возврат
код
[текст
];
возврат
код
URL
;
возврат
URL
;Дефолт: — Контекст: сервер
,расположение
,если
Останавливает обработку и возвращает клиенту указанный код
Начиная с версии 0. 8.42 можно указывать либо URL-адрес перенаправления (для кодов 301, 302, 303, 307 и 308) или тело ответа
текст
(для других кодов). Основной текст ответа и URL-адрес перенаправления могут содержать переменные. В особом случае URL-адрес перенаправления может быть указан как URI. локально для этого сервера, и в этом случае полный URL-адрес перенаправления формируется по схеме запроса ($ схема
) и server_name_in_redirect и директивы port_in_redirect.Кроме того,
URL
для временного перенаправления с кодом 302 можно указать как единственный параметр. Такой параметр должен начинаться с «http: //
», Строка «https: //
» или «$ scheme
».URL
может содержать переменные.До версии 0.7.51 можно было вернуть только следующие коды: 204, 400, 402 — 406, 408, 410, 411, 413, 416 и 500 — 504.
Код 307 не рассматривался как перенаправление до версии 1. 1.16 и 1.0.13.
Код 308 не рассматривался как перенаправление до версии 1.13.0.
См. Также директиву error_page.
Синтаксис: перепишите
регулярное выражение
замена
[флаг
];Дефолт: — Контекст: сервер
,расположение
,если
Если указанное регулярное выражение соответствует URI запроса, URI изменяется как указано в строке
, заменяющей
.Директивыrewrite
выполняются последовательно в порядке их появления в конфигурационном файле. Дальнейшую обработку директив можно прекратить с помощью флагов. Если строка замены начинается с «http: //
», «https: //
», или «$ схема
», обработка останавливается, и перенаправление возвращается клиенту.Необязательный параметр
flag
может быть одним из:-
последняя
- прекращает обработку текущего набора
ngx_http_rewrite_module
директив и запускает поиск нового местоположения, соответствующего измененному URI; -
перерыв
- прекращает обработку текущего набора
ngx_http_rewrite_module
директив как с директивой break; -
перенаправление
- возвращает временное перенаправление с кодом 302;
используется, если строка замены не начинается с
«
http: //
», «https: //
», или «$ схема
»; -
постоянный
- возвращает постоянное перенаправление с кодом 301. /users/(.*)$ / show? user = $ 1? последний;
Если регулярное выражение включает «
}
» или «;
”символов, все выражения должны быть заключены в в одинарных или двойных кавычках.Синтаксис: rewrite_log
на
|от
;Дефолт: rewrite_log off;
Контекст: http
,сервер
,расположение
,если
Включает или отключает ведение журнала
ngx_http_rewrite_module
результаты обработки директив модуля в error_log на уведомление, уровень
.Синтаксис: установить
$ переменная
значение
;Дефолт: — Контекст: сервер
,расположение
,если
Устанавливает значение
Синтаксис: uninitialized_variable_warn
на
|от
;Дефолт: uninitialized_variable_warn on;
Контекст: http
,сервер
,расположение
,если
Управляет записью предупреждений о неинициализированных переменных. /(download/.*)/media/(.*)\..*$ /$1/mp3/$2.mp3 break; }
будут переведены в эти инструкции:
переменная $ запрещено проверить против нуля возврат 403 конец кода переменная $ медленно проверить против нуля совпадение регулярного выражения копировать "/" копировать $ 1 копировать "/ mp3 /" копия $ 2 скопировать ".mp3" конец регулярного выражения конец кода
Обратите внимание, что инструкции для limit_rate указанная выше, поскольку она не связана с
ngx_http_rewrite_module
модуль.(/ загрузить /.*)/ media /(.*)\..*$ $ 1 / mp3 / $ 2.mp3 break;Соответствующие инструкции будут выглядеть так:
совпадение регулярного выражения копировать $ 1 копировать "/ mp3 /" копия $ 2 скопировать ".mp3" конец регулярного выражения конец кода
HTTP-сервер Apache, версия 2.4
Сводка
Модуль
mod_rewrite
использует перезапись на основе правил движок, основанный на парсере регулярных выражений PCRE, для перезаписи запрошенных URL-адресов на муха. По умолчаниюmod_rewrite
отображает URL-адрес файловой системы. дорожка. Однако его также можно использовать для перенаправления одного URL-адреса на другой URL-адрес или для вызова внутренней прокси-выборки.mod_rewrite
обеспечивает гибкий и мощный способ манипулировать URL-адресами, используя неограниченное количество правил. Каждое правило может иметь неограниченное количество условий прикрепленного правила, чтобы вы могли переписать URL на основе переменных сервера, переменных среды, заголовков HTTP или времени Марки.mod_rewrite
работает с полным URL-путем, включая раздел информации о пути. Правило перезаписи можно вызвать вhttpd.conf
или.htaccess
. Созданный путь по правилу перезаписи может включать строку запроса или может привести к внутреннему подобработка, перенаправление внешнего запроса или внутренний прокси пропускная способность.Более подробная информация, обсуждение и примеры приведены в подробная документация по mod_rewrite.
Темы
Директивы
Контрольный список исправлений
См. Также
mod_rewrite
предлагает подробное протоколирование своих действий на уровнях журналаtrace1
–trace8
. В уровень лога можно установить специально дляmod_rewrite
с использованием директивыLogLevel
: до уровеньотладка
, никакие действия не логируются, аtrace8
означает, что практически все действия регистрируются.mod_rewrite
значительно замедлит работу вашего HTTP-сервера Apache! Используйте журнал уровень вышеtrace2
только для отладки!Пример
Перезапись предупреждений LogLevel: trace3
RewriteLog
Те, кто знаком с более ранними версиями
mod_rewrite
несомненно будет искатьRewriteLog
иRewriteLogLevel
директивы. Эта функция была полностью заменена новая конфигурация ведения журнала для каждого модуля, упомянутая выше.Чтобы получить только журнал
mod_rewrite
сообщения, направьте файл журнала через grep:хвост -f error_log | fgrep '[перезаписать:'
Директива
RewriteBase
определяет Префикс URL, который будет использоваться для каталога (htaccess)RewriteRule
директив, которые подставьте относительный путь.Эта директива требуется при использовании относительного пути в подстановке в контексте каталога (htaccess), если не из следующих условий:
- Исходный запрос и замена указаны под
DocumentRoot
(в отличие от доступа другими способами, такими какПсевдоним
). - Файловая система путь к каталогу, содержащему
RewriteRule
, с суффиксом относительного подстановка также действительна как URL-путь на сервере (это редко). - В Apache HTTP Server 2.4.16 и более поздних версиях эта директива может быть
опускается, когда запрос отображается через
Псевдоним
илиmod_userdir
.
В приведенном ниже примере требуется
RewriteBase
чтобы избежать перезаписи на http://example.com/opt/myapp-1.2.3/welcome.html поскольку ресурс не относился к корню документа. Этот неправильная конфигурация обычно заставляет сервер искать «opt» каталог в корне документа.index \ .html $ «» welcome.html »Директива
RewriteCond
определяет условие правила. Один или несколькоRewriteCond
может предшествоватьRewriteRule
директива. Следующее правило используется только в том случае, если оба текущее состояние URI соответствует его шаблону, и , если эти условия выполнены.TestString — строка, которая может содержать следующие расширенные конструкции в дополнение к обычному тексту:
- Обратные ссылки RewriteRule : Это
обратные ссылки формы
$ N
(0 <= N <= 9). От 1 до 9 долларов обеспечивает доступ к сгруппированным части (в скобках) выкройки, отRewriteRule
, на которое распространяется текущий наборусловий RewriteCond
. $ 0 обеспечивает доступ ко всей строке, соответствующей этому шаблону. - Обратные ссылки RewriteCond : Это
обратные ссылки формы
% N
(0 <= N <= 9). % 1 до% 9 предоставляют доступ к сгруппированным части (опять же в скобках) узора, начиная с последней совпавшейRewriteCond
в текущем наборе условий.% 0 обеспечивает доступ ко всей строке, соответствующей этот образец. - Расширения RewriteMap : Это
расширения формы
$ {mapname: key | default}
. Документацию для RewriteMap для более подробной информации. - Server-Variables : Это переменные
форма
% {
НАЗВАНИЕ_OF_VARIABLE}
где NAME_OF_VARIABLE может быть взятой строкой из следующего списка:Заголовки HTTP: соединение и запрос: HTTP_ACCEPT
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST
HTTP_PROXY_CONNECTION
HTTP_REFERER
HTTP_USER_AGENTAUTH_TYPE
CONN_REMOTE_ADDR
CONTEXT_PREFIX
CONTEXT_DOCUMENT_ROOT
IPV6
PATH_INFO
QUERY_STRING
REMOTE_ADDR
REMOTE_HOST
REMOTE_ADDR
REMOTE_HOST
REMOTE_REMOTE_HOST
REMOTE_REMOTE_HOST
REMOTE_REMOTE_HOST
REMOTE_REMOTE_внутренности сервера: дата и время: специальные: DOCUMENT_ROOT
SCRIPT_GROUP
SCRIPT_USER
SERVER_ADDR
SERVER_ADMIN
SERVER_NAME
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARETIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
TIMEAPI_VERSION
CONN_REMOTE_ADDR
HTTPS
IS_SUBREQ
REMOTE_ADDR
REQUEST_FILENAME
REQUEST_SCHEME
REQUEST_URI
THE_REQUESTВсе эти переменные соответствуют одноименному HTTP MIME-заголовки, переменные C HTTP-сервера Apache или
struct tm
полей системы Unix. Большинство из них задокументировано здесь или где-либо еще в Руководстве или в спецификации CGI.SERVER_NAME и SERVER_PORT зависят от значений
UseCanonicalName
иUseCanonicalPhysicalPort
Использование соответственно.Специальные для
mod_rewrite
включают те, что указаны ниже.-
API_ВЕРСИЯ
- Это версия API модуля Apache httpd. (внутренний интерфейс между сервером и модуль) в текущей сборке httpd, как определено в включить / ap_mmn.час Версия API модуля соответствует используемой версии Apache httpd (в выпускная версия Apache httpd 1.3.14, для Например, это 199
: 10), но в основном это
интерес для авторов модуля. -
- Исходный запрос и замена указаны под
-
CONN_REMOTE_ADDR
- Начиная с версии 2. 4.8: равноправный IP-адрес соединения (см.
mod_remoteip
модуль). -
HTTPS
- Будет содержать текст «on», если соединение
с использованием SSL / TLS или «выключено» в противном случае.(Эта переменная
можно безопасно использовать независимо от того,
mod_ssl
загружено). -
IS_SUBREQ
- Будет содержать текст «истина», если запрос в настоящее время обрабатывается подзапрос, иначе «ложь». Подзапросы могут быть созданы модулями, которым необходимо разрешить дополнительные файлы или URI для выполнения своих задач.
-
REMOTE_ADDR
- IP-адрес удаленного хоста (см.
mod_remoteip
модуль). -
ИМЯ_ФАЙЛА ЗАПРОСА
- Полный путь локальной файловой системы к файлу или
сценарий, соответствующий запросу, если он уже
было определено сервером в то время
REQUEST_FILENAME
указана.Иначе, например, при использовании в контексте виртуального хоста, то же самое значение какREQUEST_URI
. В зависимости от стоимостиAcceptPathInfo
, сервер мог использовать только некоторые ведущие компонентыREQUEST_URI
для сопоставления запроса с файлом. -
REQUEST_SCHEME
- Будет содержать схему запроса (обычно
«http» или «https»).На это значение можно повлиять
Имя сервера
. -
REQUEST_URI
- Компонент пути запрошенного URI,
например «/index. html». Это, в частности, исключает
строка запроса, которая доступна как собственная переменная
под названием
QUERY_STRING
. -
THE_REQUEST
- Полная строка HTTP-запроса, отправленная
браузер на сервер (например,г., «
GET /index.html HTTP / 1.1
«). Это не включать любые дополнительные заголовки, отправленные браузер. Это значение не было отменено (декодировано), в отличие от большинства других переменных ниже.
-
Если TestString имеет специальное значение expr
, CondPattern будет рассматриваться как
ap_expr. Заголовки HTTP, указанные в
выражение будет добавлено в заголовок Vary, если novary
флаг не дан.
Также вам следует знать:
Переменные SCRIPT_FILENAME и REQUEST_FILENAME содержат одно и то же значение — значение
имя файла
поле внутреннегоrequest_rec
структура HTTP-сервера Apache. Первое имя — это общеизвестное имя переменной CGI. в то время как второй является подходящим аналогом REQUEST_URI (который содержит значениеuri
полеrequest_rec
).Если произошла замена и перезапись продолжается, значение обеих переменных будет соответственно обновлено.
Если используется в контексте сервера (, т.е. , перед запрос отображается в файловую систему) SCRIPT_FILENAME и REQUEST_FILENAME не может содержать полную локальную файловую систему path, поскольку на данном этапе обработки путь неизвестен. Обе переменные изначально будут содержать значение REQUEST_URI. в таком случае.Чтобы получить полную локальную файловую систему путь запроса в контексте сервера, используйте URL-адрес прогноз
% {LA-U: REQUEST_FILENAME}
для определения последнее значение REQUEST_FILENAME.-
% {ENV: переменная}
, где переменная может быть любая переменная окружения также доступна. Это ищется через внутренний Структуры Apache httpd и (если их там нет) черезgetenv ()
из процесса сервера Apache httpd. -
% {SSL: variable}
, где переменная — это имя среды SSL переменная, может использоваться независимо от того,mod_ssl
загружен, но всегда будет расширяться до пустая строка, если это не так. Пример:% {SSL: SSL_CIPHER_USEKEYSIZE}
может расширяться до128
. Эти переменные доступны даже без установка опцииStdEnvVars
дляSSLOptions
директива. -
% {HTTP: заголовок}
, где заголовок может быть любое имя HTTP-заголовка MIME, всегда можно использовать для получения значение заголовка, отправленного в HTTP-запросе. Пример:% {HTTP: Proxy-Connection}
— это значение заголовка HTTP «Прокси-соединение:
».Если в условии используется заголовок HTTP, этот заголовок добавляется к Заголовок ответа Vary в случае, если условие оценивается значение true для запроса.Это , а не , если условие оценивается как ложное для запроса. Добавление заголовка HTTP в заголовок Vary ответа необходим для правильного кеширования.
Следует иметь в виду, что условия следуют за коротким замыканием. логика в случае флага ‘
ornext | OR
‘ так что некоторые условия могут вообще не оцениваться. -
% {LA-U: переменная}
может использоваться для прогнозирования, которое выполняет внутренний (на основе URL) подзапрос для определения окончательного значение переменной .Это можно использовать для доступа переменная для перезаписи, недоступная в данный момент этап, но будет установлен на более позднем этапе.Например, переписать по
REMOTE_USER
переменная изнутри для каждого сервера (файлhttpd.conf
) необходимо используйте% {LA-U: REMOTE_USER}
— это переменная устанавливается этапами авторизации, которые наступают после фазы преобразования URL (во время которойmod_rewrite
работает).С другой стороны, поскольку
mod_rewrite
реализует контекст для каждого каталога (файл.htaccess
) через фаза исправления API и потому что авторизация фазы приходят с до эта фаза, вы просто можете использовать% {REMOTE_USER}
в этом контексте. -
% {LA-F: variable}
может использоваться для выполнения внутреннего (на основе имени файла) подзапрос, чтобы определить окончательное значение из переменной .В большинстве случаев это то же самое, что и LA-U выше.
CondPattern — шаблон условия, регулярное выражение, которое применяется к текущий экземпляр TestString . TestString сначала оценивается перед сопоставлением с CondPattern .
CondPattern обычно Perl-совместимое регулярное выражение , но есть дополнительный синтаксис для выполнения других полезных тестов против Тестовая строка :
- Вы можете префикс строки шаблона с помощью
!
‘(восклицательный знак), чтобы отрицать результат условия, независимо от того, какой тип CondPattern используется. - Вы можете выполнять лексикографические сравнения строк:
-
- Лексикографически предшествует
Обрабатывает CondPattern как обычную строку и сравнивает его лексикографически с TestString . Верно, если TestString лексикографически предшествует CondPattern . - > CondPattern
- Лексикографически следует
Обрабатывает CondPattern как простую строку и сравнивает его лексикографически с TestString .Верно, если TestString лексикографически следует CondPattern . - = CondPattern
- Лексикографически равно
Обрабатывает CondPattern как простую строку и сравнивает его лексикографически с TestString . Верно, если TestString лексикографически равно CondPattern (две строки точно соответствуют равно, символ для персонажа).Если CondPattern""
(две кавычки) это сравнивает TestString с пустой строкой. - <= CondPattern
- Лексикографически меньше или равно
Обрабатывает CondPattern как простую строку и сравнивает его лексикографически с TestString . Истинный если TestString лексикографически предшествует CondPattern или равно CondPattern (две строки равны, символ за символом). - > = CondPattern
- Лексикографически больше или равно
Обрабатывает CondPattern как простую строку и сравнивает его лексикографически с TestString . Истинный если TestString лексикографически следует CondPattern или равно CondPattern (две строки равны, символ за символом).
Примечание
Оператор сравнения строк является частью CondPattern аргумент и должен быть включен в кавычки, если они используются. Например.RewriteCond% {HTTP_USER_AGENT} "= Этот робот / 1.0"
-
- Вы можете выполнять целочисленные сравнения:
- -экв
- Числовое значение эквивалентно соответствует
. TestString рассматривается как целое число и численно по сравнению с CondPattern . Верно, если они численно равны. - -ge
- Численно g повторяется или e соответствует
TestString обрабатывается как целое число и численно по сравнению с CondPattern .Верно, если TestString численно больше или равно к CondPattern . - -GT
- Численно g reater t han
TestString обрабатывается как целое число и численно по сравнению с CondPattern . Верно, если TestString численно больше, чем CondPattern . - -le
- Численно l ess than или e qual to
TestString обрабатывается как целое число и численно по сравнению с CondPattern . Верно, если TestString численно меньше или равно к CondPattern . Избегайте путаницы с -l с помощью -L или -h вариант . - -lt
- Численно l ess t han
TestString рассматривается как целое число и численно по сравнению с CondPattern . Верно, если TestString численно меньше, чем CondPattern . Избегайте путаницы с -l с помощью -L или -h вариант . - -ne
- Численно n или e qual to
TestString обрабатывается как целое число и численно по сравнению с CondPattern . Верно, если они численно различны. Это эквивалентно! -Экв
.
- Вы можете выполнять различные тесты атрибутов файлов:
- -d
- — это d каталог.
Обрабатывает TestString как путь и проверяет независимо от того, существует он или нет, и является ли он каталогом. - -f
- Штатная ф ил.
Обрабатывает TestString как путь и проверяет независимо от того, существует он или нет, и является ли он обычным файлом. - -F
- Существующий файл через подзапрос.
Проверяет, является ли TestString допустимым файлом, доступны через все настроенные в данный момент серверы контроль доступа для этого пути.Это использует внутренний подзапрос на выполнение проверки, поэтому используйте его осторожно — это может повлиять на производительность вашего сервера! - -h
- — это символическая ссылка, соглашение bash.
См. -1 . - -l
- Символьная л чернил.
Обрабатывает TestString как путь и проверяет независимо от того, существует он или нет, и является ли он символической ссылкой.Можно также используйте соглашение bash -L или -h , если есть возможность путаницы например, при использовании -lt или -ле пробы. - -L
- — это символическая ссылка, соглашение bash.
См. -1 . - -с
- Обычный напильник, размером с .
Обрабатывает TestString как путь и проверяет независимо от того, существует он или нет, и является ли он обычным файлом с размером больше чем ноль. - -U
Существующий URL через подзапрос.
Проверяет, является ли TestString допустимым URL-адресом, доступны через все настроенные в данный момент серверы контроль доступа для этого пути. Это использует внутренний подзапрос на выполнение проверки, поэтому используйте его осторожно — это может повлиять на производительность вашего сервера!Этот флаг только возвращает информацию о вещах например, контроль доступа, аутентификация и авторизация.Этот флаг не возвращает информацию о коде состояния настроенный обработчик (статический файл, CGI, прокси и т. д.) будет иметь вернулся.
- -x
- Имеет разрешение x ecutable.
Обрабатывает TestString как путь и проверяет независимо от того, существует он или нет, и имеет ли он права на выполнение. Эти разрешения определяются в соответствии с базовая ОС.(. +) / other / archive / $ 1 [R]
Если TestString имеет специальное значение
expr
, CondPattern будет рассматриваться как ap_expr.В приведенном ниже примере
-strmatch
используется для сравнитеREFERER
с именем хоста сайта, чтобы заблокировать нежелательные хотлинкинг. / $» «/ домашняя страница./ $ «» /homepage.std.html «[L]Объяснение: Если вы используете браузер, который идентифицирует себя в качестве мобильного браузера (обратите внимание, что пример неполный, так как есть много других мобильных платформ), мобильная версия домашняя страница обслуживается. В противном случае обслуживается стандартная страница.
Директива
RewriteEngine
разрешает или отключает механизм перезаписи среды выполнения. Если установлено значениеот
этот модуль не обрабатывает во время выполнения на все.Он даже не обновляетSCRIPT_URx
переменные среды.Используйте эту директиву для отключения правил в определенном контексте, вместо того, чтобы комментировать все директивы
RewriteRule
.Обратите внимание, что конфигурации перезаписи не наследуется виртуальными хостами. Это означает, что вам нужно иметь
RewriteEngine в директиве
для каждого виртуального хоста в котором вы хотите использовать правила перезаписи.RewriteMap
директив типапрг
не запускаются во время инициализации сервера, если они определены в контекст, в котором дляRewriteEngine
не задано значениепо
Описание: Определяет функцию сопоставления для поиска по ключу Синтаксис: RewriteMap MapName MapType : MapSource [ MapTypeOptions ]
Контекст: Конфигурация сервера, виртуальный хост Статус: Расширение Модуль: mod_rewrite Совместимость: Доступен только третий параметр MapTy Apache 2.4.29 и новее Директива
RewriteMap
определяет Карта переписывания , которую можно использовать внутри правила подстановки строк функциями отображения на вставить / заменить поля с помощью поиска по ключу. Источник этот поиск может быть разных типов.Карта MapName название карты и будет использоваться для указания маппинг-функция для строк подстановки перезаписи правило через одну из следующих конструкций:
$ {
Имя карты:
LookupKey}
$ {
MapName:
LookupKey|
Значение по умолчанию}
Когда возникает такая конструкция, карта MapName выполняется консультация и выполняется поиск ключа LookupKey .Если ключ найден, конструкция функции карты заменяется на SubstValue . Если ключ не найден, значит, он заменяется на DefaultValue или на пустую строку если не было указано DefaultValue . Пустые значения вести себя так, как если бы ключ отсутствовал, поэтому это невозможно чтобы различать ключи с пустыми значениями и отсутствующие ключи.
Например, вы можете определить
RewriteMap
как:RewriteMap examplemap "txt: / путь / к / файлу / карте./ex/(.*) "" $ {examplemap: $ 1} "
Значение аргумента MapTypeOptions зависит от в частности MapType . Увидеть Использование RewriteMap для Дополнительная информация.
Следующие комбинации для MapType и MapSource можно использовать:
- текст
- Простой текстовый файл, содержащий разделенные пробелами пары «ключ-значение». пары, по одной в строке. (Подробнее …)
- р-н
- Случайным образом выбирает запись из обычного текстового файла (Подробности…)
- дбм
- Ищет запись в файле dbm, содержащую имя, значение
пары. Хеш создается из формата обычного текстового файла с использованием
httxt2dbm
полезность. (Подробнее …) - внутр
- Одна из четырех доступных внутренних функций, предоставляемых
RewriteMap
: toupper, tolower, escape или unescape. (Подробнее …) - prg
- Вызывает внешнюю программу или сценарий для обработки переписывание.(Подробнее …)
- dbd или fastdbd
- Оператор SQL SELECT, выполняемый для поиска переписать цель. (Подробнее …)
Дополнительные сведения и многочисленные примеры можно найти в RewriteMap HowTo
Директива
RewriteOptions
устанавливает некоторые специальные параметры для текущего сервера или каталога конфигурация. Строка Option в настоящее время может быть только одним из следующих:-
Наследовать
Это заставляет текущую конфигурацию наследовать конфигурация родителя.В контексте виртуального сервера это означает, что карты, условия и правила основных сервер унаследован. В контексте каталога это означает что условия и правила родительского каталога
.htaccess
конфигурация или<Каталог>
разделы наследуются. Унаследованные правила виртуально копируются в раздел, в котором используется эта директива. Если используется в в сочетании с локальными правилами, унаследованные правила копируются за местные правила.Положение этой директивы — ниже или выше местных правил — не влияет на это поведение. Если местные правила вынудили прекратить перезапись, унаследованные правила не будут быть обработанным.Применяются правила, унаследованные от родительской области после правил , указанных в дочерней области.
-
InheritBefore
Аналогично
Наследовать
выше, но правила из родительской области применяются правила перед правилами , указанными в дочерней области.
Доступно в Apache HTTP Server 2.3.10 и новее.-
InheritDown
Если этот параметр включен, все дочерние конфигурации наследуют конфигурация текущей конфигурации. Это эквивалентно указание
RewriteOptions Inherit
во всех дочерних элементах конфигурации. Смотрите опциюInherit
для более подробной информации. от того, как обрабатываются родительско-дочерние отношения.
Доступно в HTTP-сервере Apache 2.4.8 и новее.-
InheritDownBefore
Как
InheritDown
выше, но правила из текущего область применения применяются до правил, указанных в любом дочернем объем.
Доступно в Apache HTTP Server 2.4.8 и новее.-
Игнорировать Наследовать
Эта опция заставляет текущую и дочернюю конфигурации игнорировать все правила, которые будут унаследованы от родителя, указав
InheritDown
илиInheritDownBefore
.
Доступно в Apache HTTP Server 2.4.8 и новее.-
AllowNoSlash
По умолчанию
mod_rewrite
игнорирует URL-адреса, которые соответствуют каталог на диске, но без косой черты в конце в ожидании, что модульmod_dir
выдаст клиенту перенаправление на канонический URL-адрес с косой чертой в конце.Когда директива
DirectorySlash
выключен, можно включить параметрAllowNoSlash
, чтобы эти правила перезаписи больше не игнорируются.Эта опция позволяет применять правила перезаписи в файлах .htaccess, соответствующих каталогу, без при желании косая черта в конце.
Доступно в Apache HTTP Server 2.4.0 и новее.-
AllowAnyURI
Когда
RewriteRule
используется вVirtualHost
или в контексте сервера с версия 2.2.22 или новее httpd,mod_rewrite
будет обрабатывать правила перезаписи только в том случае, если URI запроса является URL-путем.Это позволяет избежать некоторые проблемы безопасности, когда определенные правила могут позволить «неожиданные» расширения паттернов (см. CVE-2011-3368 и CVE-2011-4317). Чтобы снять ограничение на соответствие URL-пути,AllowAnyURI
опция может быть включена, иmod_rewrite
применит набор правил к любому запросить строку URI, независимо от того, соответствует ли эта строка грамматика URL-пути, требуемая спецификацией HTTP.
Доступно в HTTP-сервере Apache 2.4.3 и новее.Предупреждение системы безопасности
Включение этой опции сделает сервер уязвимым для проблемы безопасности при использовании с правилами перезаписи, которые не тщательно написано. Это настоятельно рекомендуется что этот вариант не используется. В частности, остерегайтесь ввода строки, содержащие символ ‘
@
‘, который может изменить интерпретацию преобразованного URI в соответствии с над именами CVE.-
MergeBase
С этой опцией значение
RewriteBase
копируется из того места, где оно явно определено в любой подкаталог или подкаталог, который не определяет свой собственныйRewriteBase
.Это был поведение по умолчанию в версиях с 2.4.0 по 2.4.3, и флаг для его восстановления доступен Apache HTTP Server 2.4.4 и новее.-
IgnoreContextInfo
Когда производится относительная замена в контексте каталога (htaccess) и
RewriteBase
не был установлен, этот модуль использует некоторые расширенная информация о контексте URL и файловой системы для изменения относительная подстановка обратно в URL.Такие модули какmod_userdir
иmod_alias
предоставить эту расширенную контекстную информацию. Доступно в версии 2.4.16 и новее.-
LegacyPrefixDocRoot
До 2.4.26, если подстановка представляла собой абсолютный URL-адрес, текущий виртуальный хост, URL-адрес может быть сначала сокращен до URL-пути а затем сокращен до локального пути. Поскольку URL-адрес можно уменьшить к локальному пути, путь должен иметь префикс корня документа.Это предотвращает доступ к файлу, например / tmp / myfile, когда запрос выполняется на http: // host / file / myfile со следующим
Правило RewriteRule
.RewriteRule /file/(.*) http: // localhost / tmp / $ 1
Этот параметр позволяет использовать старое поведение там, где документ root не имеет префикса для локального пути, который был сокращен с URL. Доступно в версии 2.4.26 и новее.
Директива
RewriteRule
— настоящая переписывающая рабочая лошадка.Директива может встречаться более одного раза, с каждым экземпляром, определяющим одно правило перезаписи. В порядок, в котором эти правила определены, важен — это порядок в котором они будут применяться во время выполнения.Образец есть совместимый с Perl обычный выражение. С чем сравнивается этот шаблон, зависит от где определена директива
RewriteRule
.Что соответствует?
В контексте
VirtualHost
, Образец первоначально будет сопоставлен с частью URL-адрес после имени хоста и порта и перед строкой запроса (например,грамм. «/app1/index.html»). Это (% -декодированный) URL-путь.В контексте каталога (
Directory
и .htaccess), шаблон сопоставляется только с частичным путем, например с запросом из «/app1/index.html» может привести к сравнению с «app1 / index.html» или index.html в зависимости от того, где находитсяRewriteRule
определенный.Путь к каталогу, в котором определено правило, удаляется из текущего отображаемого путь к файловой системе перед сравнением (до косой черты включительно).Чистым результатом этого удаления префиксов для каталогов является то, что правила в этот контекст совпадает только с частью текущего отображаемого пути файловой системы «внизу», где определено правило.
Директивы, такие как
DocumentRoot
иAlias
, или даже результат предыдущих заменRewriteRule
, определить текущий путь к файловой системе.Если вы хотите сопоставить имя хоста, порт или строку запроса, используйте
RewriteCond
с% {HTTP_HOST}
,% {SERVER_PORT}
или% {QUERY_STRING}
переменных соответственно.
Перезапись для каталога
- Механизм перезаписи может использоваться в файлах .htaccess и в
разделах
, с некоторыми дополнительными сложность. - Чтобы включить механизм перезаписи в этом контексте, вам необходимо установить
«
RewriteEngine на
» и «Options FollowSymLinks
» должен быть включен. Если твой администратор отключил переопределениеFollowSymLinks
для каталог пользователя, то вы не можете использовать механизм перезаписи.Этот ограничение требуется по соображениям безопасности. - См.
RewriteBase
директива для получения дополнительной информации о том, какой префикс будет добавлен обратно к относительные замены. - Если вы хотите сопоставить с полным URL-путем в каталоге
(htaccess) RewriteRule, используйте переменную
% {REQUEST_URI}
вRewriteCond
. - Удаленный префикс всегда заканчивается косой чертой, что означает, что соответствие происходит со строкой, которая никогда не бывает с ведущей косой чертой./ никогда совпадает в контексте каталога.
- Хотя правила перезаписи синтаксически разрешены в разделах
- Блок
If
следуйте правилам каталога контекста . - По умолчанию mod_rewrite отменяет правила, когда
объединение разделов, принадлежащих к одному контексту.Директива
RewriteOptions
может изменить это поведение, например, используя параметр Наследовать . -
RewriteOptions
также регулирует поведение разделов, указанных на одном уровне вложенности конфигурации. в в следующем примере по умолчанию только RewriteRules, указанные во второмЕсли
блок считаются, так как первые отменяются. ИспользованиеRewriteOptions
Inherit заставляет mod_rewrite объединить два разделов и рассмотрим оба набора утверждений, а не только последнее.
<Если "истина"> # Без RewriteOptions Inherit это правило отменяется следующим # раздел, и перенаправление не произойдет для URI, содержащих 'foo' RewriteRule foo http://example.com/foo [R] <Если "верно"> Панель RewriteRule http://example.com/bar [R]
Для некоторых подсказок по обычному выражения, см. mod_rewrite Вступление.
В
mod_rewrite
символ НЕ (‘!
‘) также доступен в качестве возможного шаблона префикс.Это позволяет вам отрицать паттерн; сказать, например: « , если текущий URL-адрес НЕ соответствует этому узор ». Это можно использовать в исключительных случаях, когда легче сопоставить отрицательный образец, или как последний правило по умолчанию.Примечание
При использовании символа NOT для отрицания шаблона вы не можете включать сгруппированные части подстановочных знаков в этом шаблоне Это потому, что когда шаблон НЕ совпадает (т. е. совпадение отрицания), нет содержание для групп.Таким образом, если используются отрицательные шаблоны, вы нельзя использовать$ N
в строке подстановки!The Замена из правило перезаписи — строка, заменяющая исходный URL-путь, соответствует шаблону . Замена может быть:
- путь к файловой системе
- Обозначает место в файловой системе ресурса. для доставки клиенту. Замены только рассматривается как путь к файловой системе, когда правило настроено в сервер (виртуальный хост) контекст и первый компонент путь в подстановке существует в файловой системе
- URL-путь
- A
DocumentRoot
— относительный путь к ресурс, который будет обслуживаться.Обратите внимание, чтоmod_rewrite
пытается угадать, указали ли вы путь к файловой системе или URL-путь, проверив, есть ли первый сегмент path существует в корне файловой системы. Например, если вы указываете строку Substitution of/www/file.html
, тогда это будет рассматриваться как URL-путь , если не каталог с именемwww
существует в корне или в вашей файловой системе (или, в случае используя перезапись в.htaccess
относительно корень вашего документа), и в этом случае он будет рассматриваться как путь к файловой системе. Если желаете другие Директивы сопоставления URL-адресов (например,Alias
), применяемые к результирующий URL-путь, используйте флаг[PT]
как описано ниже. - Абсолютный URL
- Если указан абсолютный URL,
mod_rewrite
проверяет, имя хоста совпадает с текущим хостом.Если да, то схема и имя хоста удаляется, и результирующий путь обрабатывается как URL-путь. В противном случае выполняется внешнее перенаправление для данный URL. Чтобы принудительно выполнить внешнее перенаправление обратно на текущий хост, см. флаг[R]
ниже. -
-
(черточка) - Прочерк означает, что замену выполнять нельзя. (существующий путь пройден нетронутым). Это используется когда необходимо применить флаг (см. ниже) без изменения тропинка.
В дополнение к обычному тексту строка подстановки может включать
- обратных ссылок (
$ N
) на RewriteRule узор - обратных ссылок (
% N
) до последнего сопоставленного Шаблон RewriteCond - серверных переменных как в тестовых строках условий правила
(
% {VARNAME}
) - вызовов функций отображения
(
$ {mapname: key | default}
)
Обратные ссылки — это идентификаторы формы
$
н. ( N = 0..9), который будет заменен по содержанию N -й группы соответствует Образец . Переменные сервера такие же как для TestString изRewriteCond
директива. Функции отображения происходят изRewriteMap
директивы и объясняются там. Эти три типа переменных раскрываются в указанном выше порядке.Правила перезаписи применяются к результатам предыдущей перезаписи правила, в том порядке, в котором они определены в файле конфигурации.URL-путь или путь к файловой системе (см. «Что соответствует?» Выше) полностью равен . заменен на Замена и процесс перезаписи продолжается до тех пор, пока не будут применены все правила, или он явно прекращается
L
флаг, или другой флаг, который подразумевает немедленное прекращение, напримерКОНЕЦ
илиФ
.Изменение строки запроса
По умолчанию строка запроса передается без изменений.Ты однако может создавать URL-адреса в строке подстановки, содержащей часть строки запроса. Просто поставьте вопросительный знак внутри строка подстановки, чтобы указать, что следующий текст должен быть повторно введенным в строку запроса. Когда вы хотите стереть существующей строки запроса, завершите строку подстановки просто вопросительный знак. Чтобы объединить новые и старые строки запроса, используйте
[QSA]
флаг.Дополнительно вы можете установить специальные действия, которые должен выполнять добавление
[
флаги]
в качестве третьего аргументаRewriteRule
директива. Флаги — список, разделенный запятыми, заключенный в квадрат скобки любого из флагов в следующей таблице. Более детали и примеры для каждого флага доступны в документе Rewrite Flags.B Экранировать не буквенно-цифровые символы в обратных ссылках с до применяя преобразование. подробнее … backrefnoplus | BNP Если обратные ссылки экранируются, пробелы должны быть преобразованы в % 20 вместо +.Полезно, когда обратная ссылка будет использоваться в компонент пути, а не строку запроса. подробнее … цепь | C Правило привязано к следующему правилу. Если правило не работает, связанные с ним правила будут пропущены. подробнее … cookie | CO = NAME : VAL Устанавливает cookie в клиентском браузере. Полный синтаксис: CO = ИМЯ : VAL : домен [: время жизни [: путь [: безопасный [: httponly ]]]] сведения… discardpath | DPI Указывает, что часть PATH_INFO перезаписанного URI отброшен. подробности … КОНЕЦ Немедленно остановить процесс перезаписи и не применять никаких больше правил. Также предотвращает дальнейшее выполнение правил перезаписи в контексте каталога и .htaccess. (Доступно в 2.3.9 и новее) подробнее … env | E = [!] VAR [: VAL ] Вызывает установку переменной среды VAR (в значение VAL , если предусмотрено).Форма ! VAR причины переменная среды VAR должна быть отключена. подробнее … запрещено | F Возвращает ответ 403 FORBIDDEN клиентскому браузеру. подробнее … пропало | G Возвращает ответ 410 GONE браузеру клиента. подробнее … Обработчик | H = Обработчик содержимого Вызывает отправку результирующего URI на указанный Обработчик содержимого для обработки. подробнее … последняя | L Немедленно остановить процесс перезаписи и не применять никаких больше правил. Особенно обратите внимание на предостережения для каждого каталога и Контекст .htaccess (см. также флаг КОНЕЦ). подробнее … следующая | N Повторно запустите процесс перезаписи, начиная с первого правило, используя результат набора правил в качестве начального точка. подробности … nocase | NC Делает сравнение шаблонов без учета регистра. подробнее … noescape | NE Запретить mod_rewrite применить экранирование шестнадцатеричного кода специальные символы в результате перезаписи. подробнее … nosubreq | NS Вызывает пропуск правила, если текущий запрос внутренний подзапрос. подробнее … прокси | P Принудительно отправлять заменяемый URL-адрес внутри как прокси-сервер запрос. подробности … сквозной | PT Принудительно передает полученный URI обратно в URL механизм сопоставления для обработки других URI-to-filename переводчики, такие как Alias
илиПеренаправление
. подробнее …qsappend | QSA Добавляет любую строку запроса из исходного URL-адреса запроса в любая строка запроса, созданная в цели перезаписи. подробнее … qsdiscard | QSD Отменить любую строку запроса, прикрепленную к входящему URI. подробности … qslast | QSL Интерпретировать последний (самый правый) вопросительный знак как строку запроса разделитель вместо первого (самого левого), как обычно. Доступно в версии 2.4.19 и новее. подробности … редирект | R [= код ] Принудительно выполняет внешнее перенаправление, необязательно с указанным Код состояния HTTP. подробнее … пропустить | S = число Указывает механизму перезаписи пропустить следующий номер rules, если текущее правило совпадает. подробнее … тип | T = MIME-тип Принудительно указать MIME-тип целевого файла быть указанным типом. подробнее … Расширение домашнего каталога
Когда строка подстановки начинается со строки наподобие «/ ~ user» (через явный текст или обратные ссылки),
mod_rewrite
выполняет расширение домашнего каталога независимо от наличия или конфигурации изmod_userdir
.localpath (. *) http: // otherhost / otherpath $ 1 [P]http: // otherhost / otherpath / pathinfo через внутренний прокси Настоящая стоимость перезаписи
Ваш код сложен, и работать с ним сложно. За годы разработки и исправления ошибок вы готовы объявить о банкротстве по своему техническому долгу и начать все с нуля. Это так здорово — оставить все свои прошлые ошибки и начать все сначала, используя новую технологию, и на этот раз сделать все правильно. Прежде чем сделать такой решительный шаг, давайте внимательно посмотрим, каковы на самом деле фактические затраты на то, чтобы начать заново.
Модель оценки затрат на перезапись
Вы можете перечислить все функции в своем приложении и построить оценку разработки и график восстановления этих функций. Большинство людей сделают этот шаг до того, как решатся переписать программное приложение. Почему же тогда проект перезаписи программного обеспечения, как известно, работает в 4, 8 или даже 10 раз дольше, чем предполагалось? Есть три ключевых фактора, которые вызывают резкий рост попыток перезаписи. Эти факторы обычно игнорируются при предварительном подсчете затрат на перезапись: затраты на наверстывание существующего приложения, стоимость неоткрытой области и стоимость усовершенствований, необходимых для принятия.
догнать
Первый фактор — это стоимость наверстывания. Если вы заменяете полезную программную систему (зачем вам заменять систему, которая не использовалась?), Тогда вы будете знать, что для поддержания работоспособности существующего продукта требуется немало усилий. Клиенты делают новые запросы, обнаруживаются ошибки и совершаются новые продажи, требующие новых функций. В большинстве случаев команда не может остановить разработку текущей системы, чтобы перестроить новую.
Когда вы намереваетесь перестроить систему, вы можете сделать оценку этих усилий только на основе того, что вы знаете о текущей системе.Вы не можете учитывать функции, которые группа обслуживания добавит, пока новая группа выполняет восстановление. Эти функции еще даже не запрашивались.
Однако мы можем сделать предположение, основываясь на предположении о производительности новой команды по сравнению со старой. Например, если новая команда разработчиков выпускает функции в два раза быстрее, чем старая команда, им потребуется в два раза больше ваших первоначальных оценок, чтобы догнать существующую группу разработчиков. Если они работают в 5 раз быстрее, коэффициент наверстывания равен 1.25X. В приведенной ниже таблице показано, сколько времени потребуется, чтобы догнать существующую команду приложения, по сравнению с темпами команды восстановления.
Неизвестный объем
Второй фактор, значительно увеличивающий сроки проекта перезаписи, — это неоткрытая область, скрывающаяся внутри существующего приложения. Системы, которые могут быть восстановлены, часто довольно старые. Они накопили годы и годы функций и исправлений ошибок и часто пережили несколько групп продуктов и разработчиков.По мере того, как люди уходят из команды, функции забываются и неправильно понимаются; но пока эти функции продолжают работать, клиенты будут продолжать зависеть от них.
Если вы попытаетесь выпустить на этом этапе цикла разработки, выпуск будет иметь значение , меньшее, чем (см. Диаграмму выше). Он может содержать все, что вы планировали построить, но по-прежнему будет иметь меньше возможностей, чем оригинал, и вам, вероятно, придется пойти дальше и создать недостающие функции.
Этот объем обычно упускается из виду при первоначальном учете стоимости реконструкции.Это довольно сложно измерить, но вы можете, по крайней мере, сделать предположение относительно своей первоначальной оценки того, какой объем будет обнаружен командой переписчиков, когда они исследуют продукт. Это значение лучше всего выражается в виде процента от обнаруженного объема, который первоначально оценивается командой, который затем добавляется обратно к общей оценке. Мы назовем этот фактор F us , неоткрытый фактор объема.
Улучшения принятия
Последнее препятствие, с которым сталкиваются перестроенные продукты, заключается в том, что как только они получат соотношение между функциями и (см. Диаграмму выше) со старым приложением, их клиенты просто не захотят рисковать, переключаясь на новый продукт.Если вы никоим образом не улучшали продукт, то какая выгода от перехода на конечного пользователя? Это особенно верно, когда ваше программное обеспечение глубоко интегрировано в бизнес-процессы другой организации. Использование вашей старой системы может быть проблемой, но ваш клиент, вероятно, стал экспертом в ее решении. Они развили мышечную память о том, как выполнять свои задачи, и разработали собственный способ работы с вашей системой. Если вы просите их выбросить весь свой опыт и начать сначала, им просто не стоит переключаться.
Таким образом, даже после того, как команда переписчиков догнала все известные и неизвестные функции старого приложения, они все равно должны продолжать добавлять функции до тех пор, пока новое предложение не станет достаточно убедительным для перехода существующих клиентов.
Это снова сложная цифра, но вы можете, по крайней мере, сделать предположение и включить его в общую временную шкалу как процент от предполагаемой стоимости. Этот фактор мы будем называть F как , коэффициент расширения усыновления.
Собираем все вместе
Эти три фактора: догнать (F cu ), нераскрытый объем (F us ) и расширение внедрения (F ae ) в совокупности приводят к тому, что проекты по восстановлению программного обеспечения во много раз превышают первоначальные оценки. Общая стоимость, выраженная в ваших первоначальных оценках, для разработки перезаписи, составляет:
Истинная стоимость = T est + (F cu * T est ) + (F us * T est ) + (F ae * T est )
Приведем пример.Допустим, вы собрали команду для оценки усилий, необходимых для завершения переписывания вашего основного продукта. Команда заявила, что команде из четырех разработчиков потребуется один год, чтобы переписать приложение. Эта оценка за один год становится вашим T est .
А теперь сделаем еще одно предположение. Допустим, вы думаете, что команда по переписыванию может выпускать функции в три раза быстрее, чем команда, обслуживающая старый продукт. P r — это три. Это означает, что ваш коэффициент наверстывания равен 3 / (3 — 1) или 1.5. Итак, вы уже добавили к проекту еще 50% или шесть месяцев, просто учитывая время, которое потребуется новой команде, чтобы догнать старую.
Как насчет неоткрытой области? Что есть в старом приложении в процентах от общего набора функций, о чем вы даже не знаете? Вы можете подумать, сколько лет разрабатывалось приложение и сколько раз команда менялась за это время. Давайте предположим, что наш F us равен 25%.
Теперь давайте посмотрим, что нужно сделать, чтобы продукт принял существующие клиенты.Какие запросы функций находятся в вашем бэклоге? Что нужно сделать, чтобы обеспечить достаточную ценность, чтобы убедить существующих клиентов переключиться? Помните, что если вы попытаетесь принудительно переключиться на клиента, ему может быть так же легко переключиться на конкурента! Для нашего примера предположим, что F ae будет составлять 30%, чтобы создать достаточно функций, чтобы наш продукт был принят.
Истинная стоимость (в годах) = 1 + 0,5 + 0,25 + 0,3 = 2,05 года.
Вы можете видеть, как даже при довольно обширном наборе предположений наша первоначальная оценка увеличилась более чем вдвое.F cu , наверстывающая стоимость, является одной из самых нестабильных. Что произойдет, если мы вызовем новую команду только в два раза быстрее, чтобы добавить функции? F cu удвоит нашу первоначальную смету, а общая истинная смета составит 2,55!
Прежде чем проводить анализ затрат и выгод при переписывании приложения, найдите время, чтобы оценить истинную стоимость этих усилий. Я думаю, вы обнаружите, что подобный подход к переписыванию почти никогда не окупается.
Что лучше? Я предложу вам альтернативу в своем следующем сообщении в блоге!
Похожие сообщения
Еще сообщения этого автора
Защитите себя от бесплатных перезаписчиков — знайте свои права
АРБИТРАЖ БЕСПЛАТНОГО ПЕРЕПИСКА
В 2004 году арбитр постановил, что продюсеры НЕ являются агентами студий.Таким образом, если продюсер просит писателя внести изменения в черновик, студия не обязана оплачивать эти изменения, если писатель не доставит законченный литературный материал лицу, уполномоченному принимать доставку в письменном контракте. Если писатель хочет, чтобы ему заплатили, он или она должны доставить черновик руководителю, указанному в контракте с писателем, и потребовать оплаты за предоставленный материал.
ПРОЧИТАТЬ ПРАВИЛО (.pdf)
ПИСАТЕЛЬ ИМЕЕТ ПРАВО РЕШИТЬ, КОГДА ПОСТАВИТЬ
Наконец-то.Вы закончили с черновиком. И у вас, наконец, есть время, чтобы записать некоторые мысли для вашей речи на церемонии вручения наград WGA Awards. Однако затем вам сообщают, что ваш черновик не готов к «официальной» доставке, и вас заставляют провести дальнейшую «настройку». Какие у вас права?
Согласно MBA, только писатель имеет право определять, когда литературный материал готов к доставке и подлежит оплате. Одно дело для писателя — добровольно искать заметки в рамках совместного процесса.Однако для продюсера, руководителя студии или директора совершенно другое дело — требовать написания без компенсации.
Что, если продюсер скажет вам, что студии не понравится ваш текущий проект, если вы настаиваете на его выпуске без дальнейшей работы?
Согласно MBA, оплата не может зависеть от субъективных критериев, то есть от того, одобряет ли Компания ваши литературные материалы. MBA гарантирует, что решение о сдаче или отказе остается за вами.
В ВАШЕМ ДОГОВОРЕ ДОЛЖНО УКАЗАТЬ ЛИЦО, УПОЛНОМОЧЕННОЕ ЗАПРОСИТЬ ДОПОЛНИТЕЛЬНЫЕ УСЛУГИ ПИСЬМЕНА
Кто может попросить вас предоставить дополнительные письменные услуги?
Возьмите свой контракт и найдите, кто уполномочен Компанией запрашивать дополнительную работу. Программа MBA требует, чтобы эта информация была в вашем контракте. Если никто не назначен или вы еще не получили контракт, обратитесь в юридический отдел WGAW по телефону (323) 782-4521 для получения дополнительной помощи.
Что делать, если вы не видите имя этого человека в своем контракте? Или этот человек назван, и вы хотите выполнить свой текущий шаг?
Если запрашивающее лицо не является лицом, уполномоченным запрашивать дополнительные услуги, Компания займет позицию, согласно которой они не обязаны оплачивать вам какую-либо дополнительную работу, которую вы выполняете.
Если это лицо уполномочено запрашивать дополнительные услуги, вы должны четко дать понять, что вы доставляете сценарий и вас просят начать следующий шаг.
В ВАШЕМ ДОГОВОРЕ ДОЛЖНО УКАЗАТЬ ЛИЦО, УПОЛНОМОЧЕННОЕ ПРИНИМАТЬ ПОСТАВКУ
Как вы даете понять, что выполняете поставку?
Во-первых, в вашем контракте должно быть указано лицо, уполномоченное принимать доставку. Доставьте этому человеку и отправьте ему счет. Если никто не назначен или вы еще не получили контракт, обратитесь в юридический отдел WGAW по телефону (323) 782-4521 для получения дополнительной помощи.
Вы выполнили все эти шаги и все еще ждете выплаты.Что вы должны сделать?
По программе MBA оплата подлежит оплате в течение 48 часов после доставки. Проценты по ставке 1,5% в месяц начисляются на любую невыплаченную первоначальную компенсацию, начиная с 7 дней после доставки.
Свяжитесь с юридическим отделом WGAW по телефону (323) 782-4521, как только поймете, что вам не заплатили вовремя, или воспользуйтесь онлайн-формой Late Pay Form .
Определение перезаписи на Dictionary.com
[глагол ree-rahyt; существительное ree-rahyt] SHOW IPA
/ глагол riˈraɪt; существительное ˈriˌraɪt / PHONETIC RESPELLING
глагол (используется с объектом), переписал, переписал, переписал.
писать в другой форме или другим способом; пересмотреть: переписать всю книгу.писать еще раз.
писать (новости, представленные корреспондентом) для включения в газету.
существительное
новость переписана.
что-то написанное в другой форме или в другой форме; редакция: Им понравился переписанный текст, и они сказали, что это будет блокбастер!ВОПРОСЫ
ПОДГОТОВИТЕСЬ К СТАРШЕЙ ШКОЛЕ С ЭТОЙ ВИКТОРИНОЙ VOCAB ДЛЯ 9-ГО КЛАССА
Готов ли ваш ребенок к старшей школе? Предложите им пройти этот подготовленный учителями практический тест для 9-х классов, чтобы проверить, соответствует ли их словарный запас.
Вопрос 1 из 10
актив
Происхождение перезаписи
Впервые зарегистрировано в 1560–1570 годах; re- + writeДРУГИЕ СЛОВА ОТ rewrite
re · writer · er, существительноеСлова рядом переписать
переписать, переписать, переработать, переработать ископаемое, переработать шерсть, переписать, переписать, переписать, переписать правило, rex, rex begoniaDictionary.com Несокращенный На основе Несокращенного словаря Random House, © Random House, Inc. 2021
Примеры предложений из Интернета для перезаписи
Как бы то ни было, Джин и я очень много работали, и переписывание заняло около трех месяцев.
Если вы начнете рассказ о приятеле, лучше приготовьтесь переписать кокетливый отрывок на ходу.
Примите неудачу как суть процесса и перепишите свой путь через нее.
Сегодня я написал 103 и 104, все совершенно неправильно, и мне придется их переписать.
Каждый из librri будет писать и переписывать назначенные ему части, пока не будет сделано необходимое количество копий.
Более молодой и более обнадеживающий человек увидел в нем большие элементы популярности и призвал его переписать его.
Карлайлу пришлось переписать свою книгу, но его материалы остались; все его великие картины были в его памяти.
Текст очень неуравновешенный, видимо, писцы и редакторы не стеснялись при случае переписывать его.
Определения Британского словаря для перезаписи
глагол (riːˈraɪt) -writes, -writing, -write or -written (tr)
to write материал) снова, особенно изменение слов или формы
вычисления для возврата (данных) в магазин, когда они были стерты во время чтения
существительное (ˈriːˌraɪt)
Collins English Dictionary — Complete & Unabridged 2012 Digital Edition © William Collins Sons & Co.Ltd. 1979, 1986 © HarperCollins Издатели 1998, 2000, 2003, 2005, 2006, 2007, 2009, 2012
Перепишите определение и значение | Словарь английского языка Коллинза
Примеры «переписать» в предложении
переписать
Эти примеры были выбраны автоматически и могут содержать конфиденциальный контент.Подробнее… Это могло бы также переписать научные книги.Times, Sunday Times (2016)
Все, что я хочу сделать, это продолжить переписывать историю здесь.The Sun (2016)
Вам будет предложено написать, переписать и написать снова, пока вы, наконец, не получите все правильно.Христианство сегодня (2000)
Думать о будущем было опасно, потому что это означало попытку переписать божественный сценарий.Times, Sunday Times (2011)
Для этого ему придется переписать учебники истории.Солнце (2013)
Это приведет к переписыванию истории.Times, Sunday Times (2015)
Процесс написания и переписывания проясняет их мысли и укрепляет их понимание собственных идей.Мариус, Ричард Краткое руководство по написанию статей об истории (1995)
Погода в прошлом месяце переписала книги рекордов.Times, Sunday Times (2016)
Это сотрудничество переписывает нашу национальную историю.Times, Sunday Times (2007)
Ключ к хорошему письму — это переписывание.Гошгарян, Гэри Исследуя язык (6-е изд) (1995)
Подробнее …
Испании придется переписать учебники истории после поражения в первом матче.Солнце (2010)
Никакие попытки переписать историю не могут изменить этот факт.Times, Sunday Times (2013)
Кроме того, что должно помешать последующему правительству переписывать конституцию, когда дело доходит до власти?Times, Sunday Times (2015)
Если нынешняя команда поднимется, они могут снова переписать историю.Times, Sunday Times (2008)
Вы бы не хотели, чтобы я переписывал ваш сценарий.Times, Sunday Times (2007)
Актеры часто полностью переписывали сценарии, сказал он.Times, Sunday Times (2012)
Скрипт переписан, поэтому ему не нужно двигаться.