Содержание

Как сделать автоматический рерайт текста онлайн с высоким процентом уникальности

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

И хотя бы для общего развития стоит знать, что существуют программы, которые автоматически делают текст уникальным.  Они заменяют слова на синонимы, переставляют их местами, добавляют разные вводные конструкции, или, наоборот, убирают. О чём идёт речь? Давайте разберёмся.

Содержание

  • 1 Программы для автоматического рерайта: зачем они нужны?
  • 2 Какие бывают программы для автоматического рерайта?
  • 3 Оцениваем результаты автоматического рерайта: проверка уникальности
  • 4 Автоматический рерайт текста: преимущества и недостатки

Программы для автоматического рерайта: зачем они нужны?

В основе своей все программы для рерайтинга действуют одинаково: они берут текст и меняют его для поисковиков, подбирая синонимы, разбивая длинные предложения на короткие или объединяя, переставляя местами некоторые конструкции. В итоге удаётся добиться неплохого процента уникальности.

Программы по автоматическому рерайтингу привлекают контент-менеджеров тем, что:

  • экономят время;
  • зачастую бесплатны;
  • дают результат вне зависимости от сложности исходного текста.

Однако нужно учесть, что такое машинное изменение статьи нуждается в доработке.

Заработок для копирайтеровЗаработок на копирайтинге и переводе текстов ✍️ — заказы на различные тематики для новичков и профи

Какие бывают программы для автоматического рерайта?

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

Что касается платного, то он тоже бывает разным. Но обычно отличается большим словарным запасом, наличием техподдержки и расширенным функционалом. Кроме того, разработчики часто предлагают пакетную обработку статей (сразу несколько). И они снимают ограничение на объём работы, которое встречается  у бесплатных версий.

Среди самых популярных бесплатных программ для автоматического рерайта стоит выделить:

  1. SeoGenerator — синонимайзер, программа, в которой ставка сделана на подбор синонимов. Она даёт возможность работать онлайн и оффлайн, преобразует большие по объёму тексты, позволяет выбрать определённый шаблон.
  2. BIPOD — полифункциональный софт с постоянно увеличивающейся базой синонимов. Отличается понятным и простым интерфейсом, встроенным переводчиком Google. Присутствует интеграция с сервисом WordPress. Но саму по себе программу можно назвать только условно бесплатной, поскольку без оплаты обработать получится только 500 знаков.
  3. ReWrite Suite — уникальное ПО, переделывающее тест прямо онлайн. Программа фиксирует количество символов с пробелами и без. Есть платная версия, где можно найти похожие слова, поменять размер шрифта и цвет окон, сравнить получившийся текст и оригинальный.
  4. Usyn — ещё один вариант, доступный онлайн. Впрочем, при желании его можно загрузить на ПК. Показывает количество символов, потраченное время и число замен. Кроме того, всё подчеркивается. А вот возможности менять текст прямо в окне нет. Пользоваться довольно просто, специальные знания не нужны.
  5. Synonyma — софт, который даёт возможность работать с текстом онлайн, самостоятельно выбирая синонимы и словарь. Из достоинств стоит отметить простой интерфейс и большую скорость обработки материала. Из минусов — необходимость вводить капчу.

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

Как начать работу копирайтером?Начните написание статей ✍️ по ТЗ или продавайте свои готовые тексты

Оцениваем результаты автоматического рерайта: проверка уникальности

Контент-менеджеру важна уникальность текста: то, ради чего это всё затевалось. Для оптимизации сайта она должна быть не ниже 80%, но иногда от рерайтера требуют 90-95% и даже больше.  Чтобы проверить результат, можно использовать такие популярные среди веб-мастеров и профессиональных рерайтеров программы как:

  1. Advego Plagiatus. Показывает не только уникальность, но и распознает машинный рерайт, а также может учесть другие показатели (тошноту текста и т.п) . Похожие места программа сразу же подчёркивает жёлтым, что удобно. Текст можно править прямо в окне. Но есть и минусы – софт нужно скачивать, часто требуется ввести капчу. А ещё результаты при разных проверках тоже могут отличаться.
  2. Content-watch. Удобный вариант, доступный онлайн. Показывает процесс проверки (правда, без уточнения времени). Но даёт возможность посмотреть только уникальность, ничего больше. Кроме того, количество бесплатных проверок ограничено.
  3. Text.ru. Формирует очередь текстов на проверку и уточняет, сколько осталось ждать. Также здесь можно посмотреть самые грубые ошибки, увидеть прямо в окне количество символов, показатели воды и спама. К минусам относится возникающее при частых проверках требование стать автором или заказчиком на бирже сервиса. В итоге приходится делать паузы.

Многие также используют Etxt.com. Однако большинству веб-мастеров прогона по вышеназванным программам хватает, чтобы установить процент уникальности текста.

Автоматический рерайт текста: преимущества и недостатки

Автоматический рерайт, безусловно, экономит деньги и время. Однако качество полученного таким способом текста оставляет желать лучшего. Иногда даже трудно понять, о чём говорится, а о стилистике текста и речи не идёт.

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

Рекомендуем: Биржа копирайтинга Text.ru Это достойный заработок для копирайтеров и возможность заказать текст у профессиональных авторов. Здесь вы можете реализовать свой творческий потенциал или приобрести уникальные статьи для нужд своего сайта.

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

Чем отличается копирайтинг от рерайтинга, разница


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


Мы раскроем оба эти понятия и дадим вам более четкое понимание отличий между ними.

Что такое копирайтинг?

Копирайтинг


Копирайтингом (в переводе с англ. copyright – «авторское право») называется написание авторской уникальной статьи. Копирайтер пишет «из головы», основываясь на тех знаниях и опыте, которыми он обладает. Иногда в качестве первоисточников могут служить различные статистические данные, официальные документы, статьи и т. д., без которых написание качественного материала невозможно.


Рерайтингом (в переводе с англ. rewrite – «переписать, переработать») называется переписывание готовой статьи другими словами, сохраняя при этом смысл исходного текста.


Отличия

Чем отличается рерайтинг и копирайтинг

Отличия рерайтинга и копирайтинга


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


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


В рерайтинге же все несколько проще. Источником является статья, которая уже содержит определенное смысловое наполнение. Автору не нужно придумывать что-то новое, ему надо лишь изложить те же самые мысли и идеи по-другому (в соответствии с заданными требованиями).


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


Исходя из всего вышесказанного, сам собой напрашивается вывод, что рерайт – более простая услуга, чем копирайт. И почти всегда так оно и есть. Даже стоимость услуг говорит сама за себя. Почему «почти всегда»? Потому что иногда заказчики требуют провести глубокий рерайтинг, который может потребовать не меньших усилий, чем обычный копирайтинг.


Итак, давайте обозначим основную разницу рерайтинга и копирайтинга.


  • Количество источников (для рерайта один, для копирайтинга не менее трех либо вообще без них).


  • Приемы написания статей (написание «из головы» или перефразирование готовых мыслей).


  • Стоимость услуги (копирайтинг дороже, чем рерайт).


  • Возможность оставления за собой авторского права (для рерайтинга такой возможности нет).


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


Кому нужен копирайтинг


Наполнение нового ресурса

Контент-маркетинг

Наполнение сайта контентом


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


Зачастую, веб-мастера либо просто копируют готовый материал (подставляя название своей компании), либо заказывают рерайт. Такой подход не обеспечит наличия авторского контента, а посетитель не найдет для себя ничего нового.


Сайт содержит текст, нацеленный только на поисковые системы


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


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


То же самое касается и просто плохо написанного текста, проблемы которого не решить обычным рерайтингом.


Информирование пользователей (клиентов)


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


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


Когда используется рерайтинг


Оформление текста

Форматирование текста

Оформление текста


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


Смысловое и идейное содержание остается прежним, изменяется лишь структура повествования и оформление текста. Он делается более читабельным и привлекательным, а также более способным завлечь, удержать посетителя.


Изменение характера и стиля написания


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


СЕО-оптимизация текста

CEO-оптимизация текстов

SEO-оптимизация текстов


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


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


Обновление информации


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


Преимущества


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


  • Копирайтинг позволяет получить уникальный авторский контент, содержащий то, чего нет в других подобных статьях. Копировать будете не вы, а у вас.


  • Рерайтинг стоит дешевле (плюс для заказчиков). Вы получите статьи с высоким показателем уникальности по меньшей стоимости.


  • Копирайтинг стоит больше (плюс для исполнителей). За каждую написанную авторскую статью вам заплатят больше.


  • Рерайт выполняется быстрее. Наполнение сайта осуществляется в кратчайшие сроки, при этом получают уникальный и СЕО-оптимизированный текст.


  • Копирайтинг позволяет создавать тексты, адаптированные к конкретной фирме, услуге и т. д.


  • Рерайтингу легче научиться. Молодым авторам куда проще начать свою карьеру с рерайтов, переделывая готовые тексты, чем создавать полноценные статьи с нуля.


  • В копирайтинге проще добиться высокой уникальности. Когда тексты пишутся «из головы», они не будут совпадать с другими статьями в интернете.


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


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

Программы для рерайта | ReWrite4You — Рерайт для вас

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

Маленькая искорка надежды, что есть программка, способная все сделать за меня, быстро потухла. А детальное изучение вопроса со временем укрепило меня в мысли, что халявы не будет.

 

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

В святой вере в силу Яндекса помноженную на могущество Гугла я проверил выдачу первых двух десятков сайтов по интересующей меня тематике и … не увидел ни чего приличного. Жестокий мир. Бесплатные и онлайн синнимайзеры до такой степени уродовали тексты, что проще было переписать их с нуля, чем пытаться реанимировать несчастный текстик, по которому прокатилась машина синонимирования.

Результатом было появление своей собственной разработки. Моя программа для рерайта текстов  (Синонимайка) не претендует на замену вашего мозга. Это было бы не правильно и нереально. Однако с моей стороны сделано все возможное, что бы процесс рерайта текста стал максимально комфортным. Почему я это так вижу вы можете прочитать на странице Синонимайки.

Авторы статей о программах для рерайта в большинстве своем складывают все имеющееся в сети программное «добро» в кучу для солидности и и с важным видом заявляют, что специально для вас они собрали все Это в одном месте. Только, что это за г-но, и из какого места оно вынуто, при этом не уточняется. В этом плане радует честность одного из авторов подобных программ, окрестившего такую програмку «Говноклёп».

Какие виды программ нужны для комфортной работы в рерайтинге и копирайтинге:

  1. Хороший текстовый редактор.
  2. Программа проверки грамотности (орфография и грамматика)
  3. Программа для подбора синонимов.
  4. Энциклопедические словари для понимания о чем речь и возможности вставки определений для сложных понятий при разбавлении текстов.
  5. Программы для проверки уникальности получившегося текста.

Отдельно хочется отметить такие программы:

  1. ПунтоCвитчер (PuntoSwitcher) — автоматическая смена раскладки клавиатуры. Пользуюсь уже несколько лет. Рекомендую после установки отключить автопереключение и запомнить 2 горячие клавиши: Break — меняет раскладку последнего набранного слова. Shift+Break — меняет раскладку выделенного фрагмента.
  2. Стамина (Stamina) — клавиатурный тренажер. Большая скорость набора не увеличивает заработок, но добавляет свободное время для жизни. В сравнении с наиболее раскрученным конкурентом «Соло на клавиатуре» этот тренажер выигрывает своей бесплатностью и комфортностью. Однообразие упражнений соло на клавиатуре — это приемлемое испытание только для людей с отсутствующими нервами.

А теперь давайте внимательно присмотримся к программам, которые нам нужны для рерайта.

  • Вспомогательные программы просто скачиваем устанавливаем и пользуемся.
  • При наличии доступа в интернет энциклопедические программы меркнут на фоне онлайн энциклопедий и возможностей поисковых систем.
  • Для первых 3х пунктов идеальным решением является MS Word любой версии. «Это наше всё» — правильно было подмечено одним из профессиональных копирайтеров. Нет необходимости иметь разные программы, нет необходимости загружаться в онлайн сервисы. Всё необходимое для работы с текстом в одной оболочке. А небольшая доработка возможностей с помощью программы Синонимайка

Из тех немногих программных продуктов, что представлены в Интернете для обеспечения синонимизации текстов хочу отдельно рассказать что понравилось: НИ-ЧЕ-ГО. Некоторые из них вполне могут использоваться для плошенького контента для сайтов однодневок, но  о долгосрочных результатах можно и не мечтать.

А вот на самом деле: как можно в одиночку сделать нечто лучшее, чем программа разработка и отладка которой идет командой профессионалов уже не один десяток лет? Я про MS Word в сравнении с разного рода доморощенными программами и онлайн-сервисами для рерайтинга. Именно по этому, создавая программу для рерайта «Синонимайка», я не стал грести против течения, а просто сделал работу с  мощным инструментарием Ворда более комфортной.

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

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

  1. Зачем нужен рерайт?
  2. Заработок на рерайтинге.
  3. Рерайт против копирайта.

 

 

HTTP-сервер Apache, версия 2.2

Обратите внимание

Этот документ относится к версии Apache httpd 2.2 , которая больше не поддерживается. Здесь задокументирован активный выпуск. Если вы еще не обновились, перейдите по этой ссылке для получения дополнительной информации.

Вы можете перейти по этой ссылке, чтобы перейти к текущей версии этого документа.

Сводка

В этом модуле используется механизм перезаписи на основе правил (на основе
парсер регулярных выражений) для перезаписи запрошенных URL-адресов на
летать.Он поддерживает неограниченное количество правил и
неограниченное количество условий присоединенного правила для каждого правила, чтобы
обеспечить действительно гибкое и мощное управление URL
механизм. Манипуляции с URL могут зависеть от различных тестов,
переменных сервера, переменных среды, HTTP
заголовки или отметки времени. Даже поиск во внешней базе данных в
различные форматы могут использоваться для получения высокодетализированных URL
соответствие.

Этот модуль работает с полными URL-адресами (включая
часть информации о пути) как в контексте сервера
( httpd.conf ) и контекст для каждого каталога
( .htaccess ) и может генерировать строку запроса
детали по результату. Переписанный результат может привести к внутреннему
подобработка, перенаправление внешнего запроса или даже на
пропускная способность внутреннего прокси.

Более подробная информация, обсуждение и примеры приведены в
подробная документация по mod_rewrite.

Темы

Директивы

См. Также

Начиная с Apache 1.3.20, специальные символы в
TestString и Подстановка строк могут быть
экранированные (то есть рассматриваются как обычные символы без их
обычное специальное значение), добавив к ним обратную косую черту (‘\’)
персонаж. Другими словами, вы можете включить фактический
знак доллара в строке Замена на
используя ‘ \ $ ‘; это не позволяет mod_rewrite пытаться
рассматривать его как обратную ссылку.

Этот модуль отслеживает два дополнительных (нестандартных)
Переменные среды CGI / SSI с именем SCRIPT_URL
и SCRIPT_URI .Они содержат
логический Web-просмотр текущего ресурса, а
стандартные переменные CGI / SSI SCRIPT_NAME и
SCRIPT_FILENAME содержит физический
Системный просмотр.

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

Пример

 SCRIPT_NAME = / sw / lib / w3s / tree / global / u / rse / .www / index.html
SCRIPT_FILENAME = / u / rse / .www / index.html
SCRIPT_URL = / u / rse /
SCRIPT_URI = http: //en1.engelschall.com/u/rse/ 

По умолчанию mod_rewrite конфигурация
настройки из основного контекста сервера не наследуются
виртуальные хосты. Чтобы основные настройки сервера применялись к виртуальному
hosts необходимо разместить следующие директивы в каждом разделе :


RewriteEngine на
RewriteOptions Inherit

Директива RewriteBase определяет
Префикс URL, который будет использоваться для каталога (htaccess)
RewriteRule директивы, заменяющие
путь.

Эта директива требуется при использовании относительного пути
в подстановке в контексте каталога (htaccess), если только
из следующих условий:

  • Исходный запрос и замена находятся под
    Корень документа
    (в отличие от доступа другими способами, такими как
    Псевдоним ).
  • Файловая система Путь к каталогу, содержащему
    RewriteRule с суффиксом относительного
    подстановка также действительна как URL-путь на сервере
    (это редко).

В приведенном ниже примере требуется RewriteBase
чтобы не переписывать на http://example.com/opt/myapp-1.2.3/welcome.html
поскольку ресурс не относился к корню документа. Этот
неправильная конфигурация обычно заставляет сервер искать «opt»
каталог в корне документа.

 DocumentRoot /var/www/example. index \.html $ welcome.html
 

Директива RewriteCond определяет
условие правила. Один или несколько RewriteCond
может предшествовать RewriteRule
директива. Следующее правило используется только в том случае, если оба
текущее состояние URI соответствует его шаблону, и , если эти условия выполнены.

TestString — строка, которая может содержать
следующие расширенные конструкции в дополнение к обычному тексту:

  • Обратные ссылки RewriteRule : Это
    обратные ссылки формы $ N
    (0 <= N <= 9), которые обеспечивают доступ к сгруппированным части (в скобках) выкройки, от RewriteRule , на которое распространяется текущий
    набор условий RewriteCond ..
  • Обратные ссылки RewriteCond : Это
    обратные ссылки формы % N
    (1 <= N <= 9), которые предоставляют доступ к сгруппированным части (опять же, в скобках) шаблона, начиная с последней совпавшей RewriteCond в текущем наборе
    условий.
  • Расширения RewriteMap : Это
    расширения формы $ {mapname: key | default} .Документацию для
    RewriteMap для более подробной информации.
  • Server-Variables : Это переменные
    форма
    % { НАЗВАНИЕ_OF_VARIABLE
    }

    где NAME_OF_VARIABLE может быть взятой строкой
    из следующего списка:

    Заголовки HTTP: соединение и запрос:
    HTTP_USER_AGENT
    HTTP_REFERER
    HTTP_COOKIE
    HTTP_FORWARDED
    HTTP_HOST
    HTTP_PROXY_CONNECTION
    HTTP_ACCEPT
    REMOTE_ADDR
    REMOTE_HOST
    REMOTE_PORT
    REMOTE_USER
    REMOTE_IDENT
    REQUEST_METHOD
    SCRIPT_FILENAME
    PATH_INFO
    QUERY_STRING
    AUTH_TYPE
    внутреннее устройство сервера: дата и время: специальные:
    DOCUMENT_ROOT
    SERVER_ADMIN
    SERVER_NAME
    SERVER_ADDR
    SERVER_PORT
    SERVER_PROTOCOL
    SERVER_SOFTWARE
    TIME_YEAR
    TIME_MON
    TIME_DAY
    TIME_HOUR
    TIME_MIN
    TIME_SEC
    TIME_WDAY
    TIME
    API_VERSION
    THE_REQUEST
    REQUEST_URI
    REQUEST_FILENAME
    IS_SUBREQ
    HTTPS

    Все эти переменные
    соответствуют одноименному HTTP
    MIME-заголовки, переменные C сервера Apache или
    struct tm полей системы Unix.Большинство из них задокументировано в других разделах Руководства или в
    спецификация CGI.

    SERVER_NAME и SERVER_PORT зависят от значений
    UseCanonicalName и
    UseCanonicalPhysicalPort
    соответственно.

    Специально для mod_rewrite — перечисленные ниже.

    IS_SUBREQ
    Будет содержать текст «истина», если запрос
    в настоящее время обрабатывается подзапрос,
    иначе «ложь».Подзапросы могут быть созданы
    модулями, которым необходимо разрешить дополнительные файлы
    или URI для выполнения своих задач.
    API_ВЕРСИЯ
    Это версия API модуля Apache.
    (внутренний интерфейс между сервером и
    модуль) в текущей сборке httpd, как определено в
    включить / ap_mmn.h. Версия API модуля
    соответствует используемой версии Apache (в
    релизная версия Apache 1.3.14, для
    Например, это 199: 10), но в основном это
    интерес для авторов модуля.
    THE_REQUEST
    Полная строка HTTP-запроса, отправленная
    браузер на сервер (например, « GET
    /index.html HTTP / 1.1
    «). Это не
    включать любые дополнительные заголовки, отправленные
    браузер. Это значение не было отменено
    (декодировано), в отличие от большинства других переменных ниже.
    REQUEST_URI
    Компонент пути запрошенного URI,
    например «/index.html». Это, в частности, исключает
    строка запроса, которая доступна как собственная переменная
    с именем QUERY_STRING .
    ИМЯ_ФАЙЛА ЗАПРОСА
    Полный путь локальной файловой системы к файлу или
    сценарий, соответствующий запросу, если он уже
    было определено сервером в то время
    REQUEST_FILENAME указан.В противном случае,
    например, при использовании в контексте виртуального хоста, то же самое
    значение как REQUEST_URI .
    HTTPS
    Будет содержать текст «on», если соединение
    с использованием SSL / TLS или «выключено» в противном случае. (Эта переменная
    можно безопасно использовать независимо от того,
    mod_ssl загружен).

Еще вам следует знать:

  1. Переменные SCRIPT_FILENAME и REQUEST_FILENAME
    содержат одно и то же значение — значение
    имя_файла поле внутреннего
    request_rec структура сервера Apache.Первое имя — это общеизвестное имя переменной CGI.
    в то время как второй является подходящим аналогом
    REQUEST_URI (который содержит значение
    uri поле request_rec ).

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

    Если используется в контексте сервера (, т.е. , перед
    запрос отображается в файловую систему) SCRIPT_FILENAME и
    REQUEST_FILENAME не может содержать полную локальную файловую систему
    path, поскольку на данном этапе обработки путь неизвестен.Обе переменные изначально будут содержать значение REQUEST_URI
    в таком случае. Чтобы получить полную локальную файловую систему
    путь запроса в контексте сервера, используйте URL-адрес
    вперед % {LA-U: REQUEST_FILENAME} для определения
    последнее значение REQUEST_FILENAME.

  2. % {ENV: переменная} , где переменная может быть
    любая переменная окружения также доступна.
    Это ищется через внутренний
    Структуры Apache и (если их там нет) через
    getenv () из процесса сервера Apache.
  3. % {SSL: переменная} , где переменная — это
    имя среды SSL
    переменная, может использоваться независимо от того,
    mod_ssl загружен, но всегда будет расширяться до
    пустая строка, если это не так. Пример:
    % {SSL: SSL_CIPHER_USEKEYSIZE} может расширяться до
    128 . Эти переменные доступны даже без
    установка опции StdEnvVars для
    SSLOptions директива.
  4. % {HTTP: заголовок} , где заголовок может быть
    любое имя HTTP-заголовка MIME, всегда можно использовать для получения
    значение заголовка, отправленного в HTTP-запросе.
    Пример: % {HTTP: Proxy-Connection} — это
    значение заголовка HTTP
    « Прокси-соединение: ».

    Если заголовок HTTP используется в условии, этот заголовок добавляется к
    заголовок Vary ответа в случае, если условие оценивается
    значение true для запроса.Это , а не добавлено, если
    условие оценивается как ложное для запроса. Добавление заголовка HTTP
    to the Vary заголовок ответа необходим для правильного кеширования.

    Следует иметь в виду, что условия следуют за коротким замыканием.
    логика в случае флага ‘ ornext | OR
    так что некоторые условия могут вообще не оцениваться.

  5. % {LA-U: variable} можно использовать для упреждающего просмотра,
    внутренний (на основе URL) подзапрос для определения окончательного
    значение переменной .Это можно использовать для доступа
    переменная для перезаписи, недоступная в данный момент
    этап, но будет установлен на более позднем этапе.

    Например, переписать по
    REMOTE_USER переменная изнутри
    для каждого сервера (файл httpd.conf ) необходимо
    используйте % {LA-U: REMOTE_USER} — это
    переменная устанавливается этапами авторизации, которые наступают
    после фазы преобразования URL (во время которой mod_rewrite
    работает).

    С другой стороны, поскольку mod_rewrite реализует
    его контекст для каждого каталога (файл .htaccess ) через
    фаза исправления API и потому что авторизация
    фазы приходят с до эта фаза, вы просто можете использовать
    % {REMOTE_USER} в этом контексте.

  6. % {LA-F: variable} может использоваться для выполнения внутреннего
    (на основе имени файла) подзапрос, чтобы определить окончательное значение
    переменной .В большинстве случаев это то же самое, что и
    LA-U выше.

CondPattern — шаблон условия,
регулярное выражение, которое применяется к
текущий экземпляр TestString .
TestString сначала оценивается, а затем сравнивается с
КондПаттерн .

Помните: CondPattern — это
Perl-совместимое регулярное выражение с некоторыми
дополнений:

  1. Вы можете префикс строки шаблона с помощью
    «! ‘(восклицательный знак), чтобы указать
    не -соответствующий образец.
  2. Есть несколько специальных вариантов CondPatterns .
    Вместо настоящих строк регулярных выражений вы также можете
    используйте одно из следующих:

    • ‘ (лексикографически
      предшествует)
      Обрабатывает CondPattern как обычную строку и
      сравнивает его лексикографически с TestString . Верно, если
      TestString лексикографически предшествует
      КондПаттерн .
    • > CondPattern ‘ (лексикографически
      следует)
      Обрабатывает CondPattern как простую строку и
      сравнивает его лексикографически с TestString . Верно, если
      TestString лексикографически следует
      КондПаттерн .
    • = CondPattern ‘ (лексикографически
      equal)
      Обрабатывает CondPattern как простую строку и
      сравнивает его лексикографически с TestString .Верно, если
      TestString лексикографически равна
      CondPattern (две строки точно
      равно, символ для персонажа). Если CondPattern
      это "" (две кавычки) это
      сравнивает TestString с пустой строкой.
    • -d ‘ (есть
      d irectory)
      Обрабатывает TestString как путь и тесты
      независимо от того, существует он или нет, и является ли он каталогом.
    • -f ‘ (штатный
      f ile)
      Обрабатывает TestString как путь и тесты
      независимо от того, существует он или нет, и является ли он обычным файлом.
    • -s ‘ (обычный файл, с
      s ize)
      Обрабатывает TestString как путь и тесты
      независимо от того, существует он или нет, и является ли он обычным файлом с размером больше
      чем ноль.
    • -l ‘ (символическое
      л чернил)
      Обрабатывает TestString как путь и проверяет
      независимо от того, существует он или нет, и является ли он символической ссылкой.
    • -x ‘ (имеет e x вырезанный
      разрешений)
      Обрабатывает TestString как путь и проверяет
      независимо от того, существует он или нет, и имеет ли он права на выполнение.
      Эти разрешения определяются в соответствии с
      базовая ОС.
    • -F ‘ (существующий файл, через
      подзапрос)
      Проверяет, является ли TestString допустимым файлом,
      доступны через все настроенные в данный момент серверы
      контроль доступа для этого пути.Это использует внутренний
      подзапрос на выполнение проверки, поэтому используйте его осторожно —
      это может повлиять на производительность вашего сервера!
    • -U ‘ (существующий URL, через
      подзапрос)
      Проверяет, является ли TestString действительным URL-адресом,
      доступны через все настроенные в данный момент серверы
      контроль доступа для этого пути. Это использует внутренний
      подзапрос на выполнение проверки, поэтому используйте его осторожно —
      это может повлиять на производительность вашего сервера!

      Этот флаг только возвращает информацию о вещах
      например, контроль доступа, аутентификация и авторизация.Этот флаг
      не возвращает информацию о коде статуса
      настроенный обработчик (статический файл, CGI, прокси и т. д.) будет иметь
      вернулся.

    Примечание:

    Все эти тесты могут
    также иметь префикс восклицательного знака (‘!’) перед
    отрицать их значение.

  3. Вы также можете установить специальные флаги для
    CondPattern путем добавления
    [ флаги ]
    в качестве третьего аргумента для RewriteCond
    директива, где flags — это разделенный запятыми список любых
    следующие флаги:

    • без корпуса | NC
      ( n o c ase)
      Это делает тест нечувствительным к регистру — различия
      между «A-Z» и «a-z» игнорируются, как в
      расширены TestString и CondPattern .Этот флаг эффективен только для сравнения между
      TestString и CondPattern . Нет
      влияние на файловую систему и проверки подзапросов.
    • или следующий | OR
      ( или следующее условие)
      Используйте это, чтобы объединить условия правила с локальным ИЛИ
      вместо неявного И. Типичный пример:

       RewriteCond% {REMOTE_HOST} = host1 [ИЛИ]
      RewriteCond% {REMOTE_HOST} = host2 [ИЛИ]
      RewriteCond% {REMOTE_HOST} = host3
      RewriteRule.... кое-что особенное для любого из этих хостов ... 

      Без этого флага вам пришлось бы написать условие / правило
      пара трижды.

    • новары | NV
      ( n o v ary)
      Если в условии используется заголовок HTTP, этот флаг предотвращает
      этот заголовок не будет добавлен в заголовок Vary ответа.
      Использование этого флага может нарушить правильное кеширование ответа, если
      представление этого ответа зависит от значения этого заголовка./ $ /homepage.std.html [L]

      Объяснение: Если вы используете браузер, который идентифицирует себя
      как «Mozilla» (включая Netscape Navigator, Mozilla и т. д.), то вы
      получить максимальную домашнюю страницу (которая может включать фреймы или другие специальные
      функции).
      Если вы используете браузер Lynx (который основан на терминале), то
      вы получите минимальную домашнюю страницу (которая может быть версией, предназначенной для
      простой текстовый просмотр).
      Если ни одно из этих условий не применимо (вы используете любой другой браузер,
      или ваш браузер идентифицирует себя как нечто нестандартное), вы получите
      стандартная домашняя страница.

      Директива RewriteEngine разрешает или
      отключает механизм перезаписи среды выполнения. Если установлено значение
      выкл. этот модуль не выполняет обработку во время выполнения.
      все. Он даже не обновляет SCRIPT_URx
      переменные среды.

      Используйте эту директиву для отключения модуля вместо
      комментируем все директивы RewriteRule !

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

      RewriteMap директивы типа prg
      не запускаются во время инициализации сервера, если они определены в
      контекст, для которого не установлено значение RewriteEngine
      по

      Эта директива устанавливает имя файла для синхронизации
      файл блокировки, который mod_rewrite необходим для связи с RewriteMap
      программ .Установите этот файл блокировки на локальный путь (не на
      Устройство, подключенное к NFS), если вы хотите использовать перезапись
      карта-программа. Не требуется для других типов перезаписи
      карты.

      Директива RewriteLog устанавливает имя
      файла, в который сервер записывает любые действия по перезаписи
      выполняет. Если имя не начинается с косой черты
      (‘/‘), то предполагается, что он относится к
      Корень сервера . Директива должна использоваться только один раз за
      конфигурация сервера.

      Чтобы отключить ведение журнала
      перезаписывающие действия не рекомендуется устанавливать
      Имя файла с по / dev / null , потому что
      хотя механизм перезаписи затем не выводит на
      logfile он по-прежнему создает вывод файла журнала внутри.
      Это замедлит работу сервера без каких-либо преимуществ
      админу!
      Чтобы отключить ведение журнала, либо
      удалить или закомментировать RewriteLog
      или используйте RewriteLogLevel 0 !

      Формат файла журнала RewriteLog следующий.
      следует:

      Описание Пример
      IP-адрес удаленного хоста 192.168.200.166
      Имя удаленного входа в систему Обычно будет «-»
      Имя авторизации пользователя HTTP Имя пользователя или «-» при отсутствии авторизации
      Дата и время запроса [28 / Август 2009: 13: 09: 09 —0400]
      Идентификатор виртуального хоста и виртуального хоста [www.example.com/sid#84a650]
      Идентификатор запроса, и является ли это подзапросом [ rid # 9f0e58 / subreq]
      Уровень важности записи журнала (2)
      Текстовое сообщение об ошибке форсирует пропускную способность прокси с http: // 127.0.0.1: 8080 / index.html

      Безопасность

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

      Пример


      # Войти в файл:
      RewriteLog "/usr/local/var/apache/logs/rewrite.log"

      # Войти в канал:
      RewriteLog «| /path/to/parser.pl»

      Директива RewriteLogLevel устанавливает
      уровень детализации файла журнала перезаписи.Уровень по умолчанию 0
      означает отсутствие регистрации, а 9 или более означает, что практически все
      действия регистрируются.

      Для отключения записи действий перезаписи просто установите
      Уровень с до 0. Это отключает все операции перезаписи.
      журналы.

      Использование высокого значения для
      Уровень замедлит ваш сервер Apache
      резко! Используйте файл журнала перезаписи на
      Уровень больше 2 только для отладки!

      Пример


      RewriteLogLevel 3

      Директива RewriteMap определяет
      Карта переписывания , которую можно использовать внутри правила
      строки подстановки с помощью функций отображения на
      вставить / заменить поля с помощью поиска по ключу.Источник
      этот поиск может быть разных типов.

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

      $ { Имя карты :
      LookupKey }
      $ { Имя карты :
      LookupKey | Значение по умолчанию
      }

      Когда возникает такая конструкция, карта MapName
      выполняется консультация и выполняется поиск ключа LookupKey .Если
      ключ найден, конструкция функции карты заменяется на
      SubstValue . Если ключ не найден, значит, он
      заменяется на DefaultValue или на пустую строку
      если не было указано DefaultValue . Пустые значения
      вести себя так, как если бы ключ отсутствовал, поэтому это невозможно
      чтобы различать ключи с пустыми значениями и отсутствующие ключи.

      Например, вы можете определить
      RewriteMap как:


      RewriteMap examplemap txt: / путь / к / файлу / карте./ex/(.*) $ {examplemap: $ 1}

      Следующие комбинации для MapType и
      MapSource можно использовать:

      • Стандартный простой текст
        MapType: txt , MapSource: файловая система Unix
        путь к действующему обычному файлу

        Это стандартная функция карты перезаписи, где
        MapSource — это простой файл ASCII, содержащий
        либо пустые строки, либо строки комментариев (начинающиеся с ‘#’
        символ) или пары, подобные приведенным ниже — по одному на
        линия.

        MatchingKey
        SubstValue

        Пример

         ##
        ## map.txt - переписываем карту
        ##
        
        Ральф С. Энгельшалл rse # Ублюдочный оператор из ада
        Мистер Джо, средний Джо # мистер Средний 


        RewriteMap в реальном тексте для пользователя: /path/to/file/map.txt

      • Randomized Plain Text
        MapType: rnd , MapSource: файловая система Unix
        путь к действующему обычному файлу

        Это идентично варианту Standard Plain Text
        выше, но со специальной функцией постобработки: После
        поиск значения, которое анализируется в соответствии с содержащимся
        ` | » символов, которые имеют значение
        « или ».Другими словами, они обозначают набор
        альтернативы, из которых фактическое возвращаемое значение
        выбирается случайным образом. Например, вы можете использовать следующую карту
        файл и директивы для обеспечения случайной балансировки нагрузки между
        несколько внутренних серверов через обратный прокси. Изображения отправлены
        на один из серверов в «статическом» пуле, а все
        else отправляется в один из «динамических» пулов.

        Пример:

        Перезаписать файл карты

         ##
        ##  карта./(.*) http: // $ {серверы: динамические} / $ 1 [P, L]
         

      • Хеш-файл
        Тип карты: dbm [= тип ] , MapSource: файловая система Unix путь к действующему обычному файлу

        Здесь источником является файл DBM двоичного формата, содержащий то же содержимое, что и файл формата Plain Text , но в специальном представлении, оптимизированном для действительно быстрый поиск. Тип может быть sdbm, gdbm, ndbm или db в зависимости от времени компиляции настройки.Если тип опущен, будет выбрано значение по умолчанию для времени компиляции.

        Чтобы создать файл dbm из исходного текстового файла, используйте утилиту httxt2dbm.

        $ httxt2dbm -i mapfile.txt -o mapfile.map

      • Внутренняя функция
        MapType: int , MapSource: внутренний Apache функция

        Здесь источником является внутренняя функция Apache. Авторы модуля могут предоставить дополнительные внутренние функции, зарегистрировав их с помощью API ap_register_rewrite_mapfunc .По умолчанию предоставляются следующие функции:

        • toupper :
          Преобразует ключ в верхний регистр.
        • tolower :
          Преобразует тональность во все строчные буквы.
        • escape :
          Преобразует специальные символы в ключе в шестнадцатеричные кодировки.
        • unescape :
          Преобразует шестнадцатеричное кодирование ключа обратно в специальные символы.
      • Внешняя программа перезаписи
        MapType: prg , MapSource: файловая система Unix путь к действующему обычному файлу

        Здесь источником является программа, а не файл карты. Чтобы создать его, вы можете использовать любой язык по вашему выбору, но результатом должна быть исполняемая программа (либо объектный код или скрипт с фокусом на волшебное печенье ' #! / Путь / к / интерпретатору ' в качестве первого линия).

        Эта программа запускается один раз, когда сервер Apache запускается, а затем связывается с механизмом перезаписи через его stdin и stdout файлы-дескрипторы. Для каждого поиска функции карты будет получить ключ для поиска в виде строки, завершающейся новой строкой на stdin . Затем он должен вернуть искомое значение в виде строки, завершающейся новой строкой на stdout или четырехсимвольная строка `` NULL '' в случае сбоя ( i.е. , там не соответствует значению для данного ключа). Банальный программа, которая реализует карту 1: 1 (, т.е. , ключ == значение) может быть:

        Внешние программы перезаписи не запускаются, если они определены в контекст, для которого не установлено значение RewriteEngine по .

         #! / Usr / bin / perl
        $ | = 1;
        пока () {
            # ... вставьте сюда любые преобразования или поиски ...
            print $ _;
        } 

        Но будьте осторожны:

        1. `` Будь простым, глупым '' (KISS).Если эта программа зависает, это приведет к зависанию Apache
          при попытке использовать соответствующее правило перезаписи.
        2. Распространенной ошибкой является использование буферизованного ввода-вывода на
          стандартный вывод . Избегайте этого, поскольку это вызовет тупик!
          `` $ | = 1 '' используется выше, чтобы предотвратить это.
        3. Директива RewriteLock может
          использоваться для определения файла блокировки, который mod_rewrite может использовать для синхронизации
          связь с картографической программой.По умолчанию таких
          синхронизация происходит.

      Директива RewriteMap может встречаться более чем
      один раз. Для каждой функции отображения используйте один
      RewriteMap директива для объявления его перезаписи
      mapfile. Хотя вы не можете объявить карту в
      контекст для каждого каталога, конечно, можно
      использует эту карту в контексте каталога.

      Примечание

      Для файлов в формате обычного текста и DBM
      найденные ключи кэшируются в ядре до mtime
      mapfile изменяется или сервер перезагружается.Таким образом вы можете иметь
      map-функции в правилах, которые используются для каждые
      запрос. Это не проблема, потому что внешний поиск выполняется только
      один раз!

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

      наследовать

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

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

      AllowAnyURI

      Когда RewriteRule
      используется в VirtualHost или контексте сервера с
      версия 2.2.23 или новее httpd, mod_rewrite
      будет обрабатывать правила перезаписи только в том случае, если URI запроса является URL-путем. Это позволяет избежать
      некоторые проблемы безопасности, когда определенные правила могут позволить
      "неожиданные" расширения паттернов (см. CVE-2011-3368
      и CVE-2011-4317).
      Чтобы снять ограничение на соответствие URL-пути,
      AllowAnyURI опция может быть включена, и
      mod_rewrite применит набор правил к любому
      запрос строки URI, независимо от того, соответствует ли эта строка
      грамматика URL-пути, требуемая спецификацией HTTP.

      Предупреждение системы безопасности

      Включение этой опции сделает сервер уязвимым для
      проблемы безопасности при использовании с правилами перезаписи, которые не
      тщательно написано. Настоятельно рекомендуется
      что этот вариант не используется. В частности, остерегайтесь ввода
      строки, содержащие символ " @ ", который может
      изменить интерпретацию преобразованного URI в соответствии с
      над именами CVE.

      MergeBase

      С этой опцией значение RewriteBase копируется из того места, где оно явно определено
      в любой подкаталог или подкаталог, который не определяет свой собственный
      RewriteBase .Не копировать
      было значением по умолчанию до 2.2.22. В версии 2.2.23 копирование было по умолчанию.
      Флаг для явного управления доступен для Apache HTTP.
      Сервер 2.2.24 и новее.

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

      Образец есть
      совместимый с Perl обычный
      выражение. В первом RewriteRule оно применяется к (% -декодированному)
      URL-путь запроса;
      последующие шаблоны применяются к выходу последнего согласованного
      RewriteRule.

      Что соответствует?

      В контексте VirtualHost ,
      Образец первоначально будет сопоставлен с частью
      URL-адрес после имени хоста и порта и перед строкой запроса (например,грамм. "/app1/index.html").

      В каталоге и контексте htaccess,
      образец первоначально будет сопоставлен с
      файловая система путь после удаления префикса, который вел сервер
      на текущий RewriteRule (например, "app1 / index.html"
      или "index.html" в зависимости от того, где определены директивы).

      Если вы хотите сопоставить имя хоста, порт или строку запроса, используйте
      RewriteCond с
      % {HTTP_HOST} , % {SERVER_PORT} или
      % {QUERY_STRING} переменных соответственно.

      Перезапись для каталога

      • Механизм перезаписи может использоваться в файлах .htaccess и в разделах , с некоторыми дополнительными
        сложность.
      • Чтобы включить механизм перезаписи в этом контексте, вам необходимо установить
        « RewriteEngine на » и
        « Options FollowSymLinks » должен быть включен. Если твой
        администратор отключил переопределение FollowSymLinks для
        каталог пользователя, то вы не можете использовать механизм перезаписи.Этот
        ограничение требуется по соображениям безопасности.
      • При использовании механизма перезаписи в файлах .htaccess
        префикс для каждого каталога (который всегда одинаков для определенного
        каталог) автоматически удаляется для соответствия шаблону RewriteRule
        и автоматически добавляется после любого родственника (не начиная с
        косая черта или имя протокола) при замене встречается конец набора правил.
        См. RewriteBase
        директива для получения дополнительной информации о том, какой префикс будет добавлен обратно к
        относительные замены./ никогда
        совпадает в контексте каталога.
      • Хотя правила перезаписи синтаксически разрешены в разделах и , это
        никогда не должны быть необходимы и не поддерживаются.

      Для некоторых подсказок по обычному
      выражения, см.
      mod_rewrite
      Введение.

      В mod_rewrite символ НЕ
      ('! ') также доступен как возможный шаблон
      префикс. Это позволяет вам отрицать образец; сказать, например:
      `` , если текущий URL-адрес НЕ соответствует
      узор
      ''.Это можно использовать в исключительных случаях, когда
      легче сопоставить отрицательный образец, или как последний
      правило по умолчанию.

      Примечание

      При использовании символа NOT для отрицания шаблона вы не можете включать
      сгруппированные части с подстановочными знаками в этом шаблоне. Это потому, что когда
      шаблон НЕ совпадает (т. е. совпадение отрицания), нет
      содержание для групп. Таким образом, если используются отрицательные шаблоны, вы
      нельзя использовать $ N в строке подстановки!

      Замена а
      правило перезаписи - строка, заменяющая исходный URL-путь,
      соответствует Образец . Замена может
      быть:

      путь к файловой системе
      Обозначает место в файловой системе ресурса.
      для доставки клиенту. Замены только
      рассматривается как путь к файловой системе, когда правило настроено в
      сервер (виртуальный хост) контекст и первый компонент
      путь в подстановке существует в файловой системе
      URL-путь
      A DocumentRoot - относительный путь к
      ресурс, который будет обслуживаться.Обратите внимание, что mod_rewrite
      пытается угадать, указали ли вы путь к файловой системе
      или URL-путь, проверив, есть ли первый сегмент
      path существует в корне файловой системы. Например, если
      вы указываете строку Substitution
      /www/file.html , тогда это будет рассматриваться как
      URL-путь , если не каталог с именем www
      существует в корне или в вашей файловой системе (или, в случае
      используя перезапись в .htaccess относительно
      корень вашего документа), и в этом случае он будет
      рассматриваться как путь к файловой системе. Если желаете другие
      Директивы сопоставления URL-адресов (например, Псевдоним ), которые будут применяться к
      результирующий URL-путь, используйте флаг [PT] как
      описано ниже.
      Абсолютный URL
      Если указан абсолютный URL,
      mod_rewrite проверяет,
      имя хоста совпадает с текущим хостом.Если да, то схема и
      имя хоста удаляется, и результирующий путь обрабатывается как
      URL-путь. В противном случае выполняется внешнее перенаправление для
      данный URL. Чтобы принудительно выполнить внешнее перенаправление обратно на
      текущий хост, см. флаг [R] ниже.
      - (черточка)
      Прочерк означает, что замену выполнять нельзя.
      (существующий путь пройден нетронутым). Это используется
      когда необходимо применить флаг (см. ниже) без изменения
      тропинка.

      В дополнение к обычному тексту строка Substition может включать

      1. обратные ссылки ( $ N ) на RewriteRule
        узор
      2. обратных ссылок (% N ) на последнюю совпавшую
        RewriteCond узор
      3. серверных переменных, как в тестовых строках условий правила
        (% {VARNAME} )
      4. вызовов функций отображения
        ( $ {mapname: key | default} )

      Обратные ссылки - это идентификаторы формы
      $ N
      ( N = 0..9), который будет заменен
      по содержанию N -й группы
      соответствует Образец . Переменные сервера такие же
      как для TestString из RewriteCond
      директива. Функции отображения происходят из
      RewriteMap и объясняются там.
      Эти три типа переменных раскрываются в указанном выше порядке.

      Правила перезаписи применяются к результатам предыдущей перезаписи
      rules, в том порядке, в котором они определены в файле конфигурации.URL-адрес полностью
      заменил
      на Замена и
      процесс перезаписи продолжается до тех пор, пока не будут применены все правила,
      или он явно завершается
      L флаг,
      или другой флаг, который подразумевает немедленное прекращение, например
      Ф .

      Изменение строки запроса

      По умолчанию строка запроса передается без изменений. Вы
      однако может создавать URL-адреса в строке подстановки, содержащей
      часть строки запроса.Просто поставьте вопросительный знак внутри
      строка подстановки, чтобы указать, что следующий текст должен
      быть повторно введенным в строку запроса. Когда вы хотите стереть
      существующей строки запроса, завершите строку подстановки просто
      вопросительный знак. Чтобы объединить новые и старые строки запроса, используйте
      [QSA] флаг.

      Дополнительно вы можете установить специальные действия, которые должен выполнять
      добавление [ флаги ]
      в качестве третьего аргумента RewriteRule
      директива. Флаги - список, разделенный запятыми, заключенный в квадрат.
      скобки любого из флагов в следующей таблице. Больше
      детали и примеры для каждого флага доступны в документе Rewrite Flags.

      Флаг и синтаксис Функция
      B Отмена буквенно-цифровых символов перед применением
      преобразование. подробнее ...
      цепь | C Правило привязано к следующему правилу.Если правило не работает,
      связанные с ним правила будут пропущены. подробнее ...
      cookie | CO = NAME : VAL Устанавливает cookie в клиентском браузере. Полный синтаксис:
      CO = ИМЯ : VAL : домен [: время жизни [: путь [: безопасный [: httponly ]]]] подробности ...
      discardpath | DPI Указывает, что часть PATH_INFO перезаписанного URI
      отброшен. детали
      ...
      env | E = [!] VAR [: VAL ] Вызывает установку переменной среды VAR
      значение VAL , если предусмотрено). Форма ! VAR причины
      переменная окружения VAR должна быть отключена. подробнее ...
      запрещено | F Возвращает ответ 403 ЗАПРЕЩЕНО браузеру клиента.
      деталей...
      пропало | G Возвращает ответ 410 GONE браузеру клиента. подробнее ...
      Обработчик | H = Обработчик содержимого Отправляет результирующий URI на указанный
      Контент-обработчик для обработки. подробнее ...
      последняя | L Немедленно остановить процесс перезаписи и не применять никаких
      больше правил.Особенно обратите внимание на предостережения для каждого каталога и
      .htaccess контекст. подробнее ...
      следующая | N Повторно запустите процесс перезаписи, начиная с первого
      правило, используя результат набора правил в качестве начального
      точка. детали
      ...
      без корпуса | NC Делает сравнение шаблонов без учета регистра.
      подробнее ...
      noescape | NE Запретить mod_rewrite применить экранирование шестнадцатеричного кода
      специальные символы в результате перезаписи. подробнее ...
      nosubreq | NS Вызывает пропуск правила, если текущий запрос
      внутренний подзапрос. подробнее ...
      прокси | P Принудительно пересылать заменяемый URL-адрес в качестве прокси-сервера
      запрос. детали
      ...
      сквозной | PT Принудительно передает полученный URI обратно в URL
      механизм сопоставления для обработки других URI-to-filename
      переводчики, такие как Alias ​​ или
      Перенаправление . подробнее ...
      qsappend | QSA Добавляет любую строку запроса из исходного URL-адреса запроса в
      любая строка запроса, созданная в цели перезаписи. подробнее ...
      редирект | R [= код ] Вызывает внешнее перенаправление, необязательно с указанным
      Код состояния HTTP. подробнее ...
      пропустить | S = число Указывает механизму перезаписи пропустить следующий номер
      rules, если текущее правило совпадает. подробнее ...
      тип | T = MIME-тип Принудительно указать MIME-тип целевого файла
      быть указанным типом. подробнее ...

      Расширение домашнего каталога

      Когда строка подстановки начинается со строки
      напоминая «/ ~ пользователь» (через явный текст или обратные ссылки), mod_rewrite выполняет
      расширение домашнего каталога независимо от наличия или конфигурации
      из mod_userdir .

      Это расширение не происходит, когда PT
      флаг используется в RewriteRule
      директива. локальный путь (.localpath (. *) http: // otherhost / otherpath $ 1 [P] http: // otherhost / otherpath / pathinfo
      через внутренний прокси

      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), если
      из следующих условий:

      • Исходный запрос и замена находятся под
        Корень документа
        (в отличие от доступа другими способами, такими как
        Псевдоним ).
      • Файловая система Путь к каталогу, содержащему
        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_AGENT
        AUTH_TYPE
        CONN_REMOTE_ADDR
        CONTEXT_PREFIX
        CONTEXT_DOCUMENT_ROOT
        IPV6
        PATH_INFO
        QUERY_STRING
        REMOTE_ADDR
        REMOTE_HOST
        REMOTE_IDENT_
        REMOTE_IDENT
        REMOTE_IDENT
        REMOTE_POD70
        REMOTE_IDENT
        REMOTE_IDENT
        REMOTE_POD70

        внутреннее устройство сервера: дата и время: специальные:
        DOCUMENT_ROOT
        SCRIPT_GROUP
        SCRIPT_USER
        SERVER_ADDR
        SERVER_ADMIN
        SERVER_NAME
        SERVER_PORT
        SERVER_PROTOCOL
        SERVER_SOFTWARE
        TIME_YEAR
        TIME_MON
        TIME_DAY
        TIME_HOUR
        TIME_MIN
        TIME_SEC
        TIME_WDAY
        TIME
        API_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
      флаг не указан.

      Еще вам следует знать:

      1. Переменные 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.

      2. % {ENV: переменная} , где переменная может быть
        любая переменная окружения также доступна.
        Это ищется через внутренний
        Структуры Apache httpd и (если их там нет) через
        getenv () из процесса сервера Apache httpd.
      3. % {SSL: переменная} , где переменная — это
        имя среды SSL
        переменная, может использоваться независимо от того,
        mod_ssl загружен, но всегда будет расширяться до
        пустая строка, если это не так. Пример:
        % {SSL: SSL_CIPHER_USEKEYSIZE} может расширяться до
        128 . Эти переменные доступны даже без
        установка опции StdEnvVars для
        SSLOptions директива.
      4. % {HTTP: заголовок} , где заголовок может быть
        любое имя HTTP-заголовка MIME, всегда можно использовать для получения
        значение заголовка, отправленного в HTTP-запросе.
        Пример: % {HTTP: Proxy-Connection} — это
        значение заголовка HTTP
        « Прокси-соединение: ».

        Если заголовок HTTP используется в условии, этот заголовок добавляется к
        заголовок Vary ответа в случае, если условие оценивается
        значение true для запроса.Это , а не добавлено, если
        условие оценивается как ложное для запроса. Добавление заголовка HTTP
        to the Vary заголовок ответа необходим для правильного кеширования.

        Следует иметь в виду, что условия следуют за коротким замыканием.
        логика в случае флага ‘ ornext | OR
        так что некоторые условия могут вообще не оцениваться.

      5. % {LA-U: переменная}
        может использоваться для прогнозирования, которое выполняет
        внутренний (на основе URL) подзапрос для определения окончательного
        значение переменной .Это можно использовать для доступа
        переменная для перезаписи, недоступная в данный момент
        этап, но будет установлен на более позднем этапе.

        Например, переписать по
        REMOTE_USER переменная изнутри
        для каждого сервера (файл httpd.conf ) необходимо
        используйте % {LA-U: REMOTE_USER} — это
        переменная устанавливается этапами авторизации, которые наступают
        после фазы преобразования URL (во время которой
        mod_rewrite работает).

        С другой стороны, поскольку mod_rewrite реализует
        его контекст для каждого каталога (файл .htaccess ) через
        фаза исправления API и потому что авторизация
        фазы приходят с до эта фаза, вы просто можете использовать
        % {REMOTE_USER} в этом контексте.

      6. % {LA-F: variable} может использоваться для выполнения внутреннего
        (на основе имени файла) подзапрос, чтобы определить окончательное значение
        переменной .В большинстве случаев это то же самое, что и
        LA-U выше.

      CondPattern — шаблон условия,
      регулярное выражение, которое применяется к
      текущий экземпляр TestString .
      TestString сначала оценивается, а затем сравнивается с
      КондПаттерн .

      CondPattern обычно
      Perl совместимое регулярное выражение , но есть
      дополнительный синтаксис для выполнения других полезных тестов против
      Teststring :

      1. Вы можете префикс строки шаблона с помощью
        «! ‘(восклицательный знак), чтобы отрицать результат
        состояния, независимо от того, какой тип CondPattern используется.
      2. Вы можете выполнять лексикографические сравнения строк:

        Лексикографически предшествует
        Обрабатывает CondPattern как простую строку и
        сравнивает его лексикографически с TestString . Верно, если
        TestString лексикографически предшествует
        КондПаттерн .
        > CondPattern
        Лексикографически следует за
        Обрабатывает CondPattern как простую строку и
        сравнивает его лексикографически с TestString .Верно, если
        TestString лексикографически следует
        КондПаттерн .
        = 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" 
      3. Вы можете выполнять целочисленные сравнения:

        -экв
        Числовое значение эквивалент до
        TestString рассматривается как целое число и
        численно по сравнению с CondPattern . Верно, если
        они численно равны.
        -ge
        Численно g reater than или e qual to
        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 . Верно, если
        они численно различны. Это эквивалентно
        ! -Экв .
      4. Вы можете выполнять различные тесты атрибутов файлов:
        -d
        Is d irectory.
        Обрабатывает TestString как путь и тесты
        независимо от того, существует он или нет, и является ли он каталогом.
        Штатная ф ил.
        Обрабатывает TestString как путь и тесты
        независимо от того, существует он или нет, и является ли он обычным файлом.
        -F
        Существующий файл через подзапрос.
        Проверяет, является ли TestString допустимым файлом,
        доступны через все настроенные в данный момент серверы
        контроль доступа для этого пути.Это использует внутренний
        подзапрос на выполнение проверки, поэтому используйте его осторожно —
        это может повлиять на производительность вашего сервера!
        -h
        — это символическая ссылка, соглашение bash.
        См. -l .
        Символьный л чернил.
        Обрабатывает TestString как путь и тесты
        независимо от того, существует он или нет, и является ли он символической ссылкой.Может также
        используйте соглашение bash -L или
        -h , если есть возможность путаницы
        например, при использовании -lt или
        -ле тестов.
        -L
        — это символическая ссылка, соглашение bash.
        См. -l .
        Обычный напильник, с размером .
        Обрабатывает TestString как путь и тесты
        независимо от того, существует он или нет, и является ли он обычным файлом с размером больше
        чем ноль.
        -U

        Существующий URL через подзапрос.
        Проверяет, является ли TestString действительным URL-адресом,
        доступны через все настроенные в данный момент серверы
        контроль доступа для этого пути. Это использует внутренний
        подзапрос на выполнение проверки, поэтому используйте его осторожно —
        это может повлиять на производительность вашего сервера!

        Этот флаг только возвращает информацию о вещах
        например, контроль доступа, аутентификация и авторизация.Этот флаг
        не возвращает информацию о коде статуса
        настроенный обработчик (статический файл, CGI, прокси и т. д.) будет иметь
        вернулся.

        Имеет x снимаемых разрешений.
        Обрабатывает TestString как путь и тесты
        независимо от того, существует он или нет, и имеет ли он права на выполнение.
        Эти разрешения определяются в соответствии с
        базовая ОС.(. +) / other / archive / 1 доллар США [R]

      5. Если TestString имеет специальное значение expr ,
        CondPattern будет рассматриваться как
        ap_expr.

        В приведенном ниже примере -strmatch используется для
        сравните REFERER с именем хоста сайта,
        чтобы заблокировать нежелательные хотлинкинг. / $» «/ homepage./ $ «» /homepage.std.html «[L]

        Объяснение: Если вы используете браузер, который идентифицирует себя
        в качестве мобильного браузера (обратите внимание, что пример неполный, так как
        есть много других мобильных платформ), мобильная версия
        домашняя страница обслуживается. В противном случае обслуживается стандартная страница.

        Директива RewriteEngine разрешает или
        отключает механизм перезаписи среды выполнения. Если установлено значение
        выкл. этот модуль не выполняет обработку во время выполнения.
        все.Он даже не обновляет SCRIPT_URx
        переменные среды.

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

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

        RewriteMap директив
        типа прг
        не запускаются во время инициализации сервера, если они определены в
        контекст, для которого не установлено значение RewriteEngine
        по

        Описание: Определяет функцию сопоставления для поиска по ключу
        Синтаксис: RewriteMap MapName MapType : MapSource
        [ MapTypeOptions ]
        Контекст: конфигурация сервера, виртуальный хост
        Статус: Расширение
        Модуль: mod_rewrite
        Параметр совместимости: Доступен только третий параметр Apache
        2.4.29 и более поздние версии

        Директива RewriteMap определяет
        Карта переписывания , которую можно использовать внутри правила
        строки подстановки с помощью функций отображения на
        вставить / заменить поля с помощью поиска по ключу. Источник
        этот поиск может быть разных типов.

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

        $ { Имя карты :
        LookupKey }
        $ { Имя карты :
        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 может изменить это поведение,
          например, используя настройку Inherit .
        • 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 в строке подстановки!

        Замена а
        правило перезаписи — строка, заменяющая исходный URL-путь,
        соответствует Образец . Замена может
        быть:

        путь к файловой системе
        Обозначает место в файловой системе ресурса.
        для доставки клиенту. Замены только
        рассматривается как путь к файловой системе, когда правило настроено в
        сервер (виртуальный хост) контекст и первый компонент
        путь в подстановке существует в файловой системе
        URL-путь
        A DocumentRoot — относительный путь к
        ресурс, который будет обслуживаться.Обратите внимание, что mod_rewrite
        пытается угадать, указали ли вы путь к файловой системе
        или URL-путь, проверив, есть ли первый сегмент
        path существует в корне файловой системы. Например, если
        вы указываете строку Substitution
        /www/file.html , тогда это будет рассматриваться как
        URL-путь , если не каталог с именем www
        существует в корне или в вашей файловой системе (или, в случае
        используя перезапись в .htaccess относительно
        корень вашего документа), и в этом случае он будет
        рассматриваться как путь к файловой системе. Если желаете другие
        Директивы сопоставления URL-адресов (например, Псевдоним ), которые будут применяться к
        результирующий URL-путь, используйте флаг [PT] как
        описано ниже.
        Абсолютный URL
        Если указан абсолютный URL,
        mod_rewrite проверяет,
        имя хоста совпадает с текущим хостом.Если да, то схема и
        имя хоста удаляется, и результирующий путь обрабатывается как
        URL-путь. В противном случае выполняется внешнее перенаправление для
        данный URL. Чтобы принудительно выполнить внешнее перенаправление обратно на
        текущий хост, см. флаг [R] ниже.
        - (черточка)
        Прочерк означает, что замену выполнять нельзя.
        (существующий путь пройден нетронутым). Это используется
        когда необходимо применить флаг (см. ниже) без изменения
        тропинка.

        В дополнение к обычному тексту строка Substitution может включать

        1. обратные ссылки ( $ N ) на RewriteRule
          узор
        2. обратных ссылок (% N ) на последнюю совпавшую
          RewriteCond узор
        3. серверных переменных, как в тестовых строках условий правила
          (% {VARNAME} )
        4. вызовов функций отображения
          ( $ {mapname: key | default} )

        Обратные ссылки — это идентификаторы формы
        $ N
        ( N = 0..9), который будет заменен
        по содержанию N -й группы
        соответствует Образец . Переменные сервера такие же
        что касается TestString из
        RewriteCond
        директива. Функции отображения происходят из
        ОбновитьКарта
        директивы и объясняются там.
        Эти три типа переменных раскрываются в указанном выше порядке.

        Правила перезаписи применяются к результатам предыдущей перезаписи
        правила, в том порядке, в котором они определены
        в файле конфигурации.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 ЗАПРЕЩЕНО браузеру клиента.
        подробнее …
        пропало | G Возвращает ответ 410 GONE браузеру клиента. подробнее …
        Обработчик | H = Обработчик содержимого Отправляет результирующий URI на указанный
        Контент-обработчик для обработки. подробнее …
        последняя | L Немедленно остановить процесс перезаписи и не применять никаких
        больше правил. Особенно обратите внимание на предостережения для каждого каталога и
        Контекст .htaccess (см. также флаг КОНЕЦ). подробнее …
        следующая | N Повторно запустите процесс перезаписи, начиная с первого
        правило, используя результат набора правил в качестве начального
        точка. детали
        без корпуса | 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 через внутренний прокси

        Перенаправление и переопределение с помощью mod_rewrite

        Самый лучший способ решить эту проблему — вообще не использовать mod_rewrite,
        а скорее использует Redirect
        директива, размещенная на виртуальном хосте для неканонических
        имя (а) хоста.

         
          ServerName undesired.example.com
          ServerAlias ​​example.com notthis.example.com
        
          Перенаправить "/" "http://www.example.com/"
        
        
        
          ServerName www.example.com
         

        Вы также можете сделать это, используя

        директива:

         <Если "% {HTTP_HOST}! = 'Www.example.com'">
            Перенаправить "/" "http://www.example.com/"
         

        Или, например, чтобы перенаправить часть вашего сайта на HTTPS, вы
        может сделать следующее:

         <Если "% {SERVER_PROTOCOL}! = 'HTTPS'">
            Перенаправить "/ admin /" "https: // www./?(.*) "" http: //www.% {HTTP_HOST} / $ 1 "[L, R, NE] 

        Эти наборы правил будут работать либо в конфигурации вашего основного сервера.
        файл или файл .htaccess , помещенный в DocumentRoot сервера.

        Создание правил перезаписи для модуля перезаписи URL

        • 6 минут на чтение

        В этой статье

        Руслана Якушева

        Модуль перезаписи URL — это расширение IIS, которое доступно для загрузки для вашего автономного сервера IIS, а также предварительно установлено на любом веб-сайте на веб-сайтах Windows Azure (WAWS) и доступно для вашего использования.В этом пошаговом руководстве вы узнаете, как создать и протестировать набор правил перезаписи для модуля перезаписи URL.

        Предварительные требования

        Для этого пошагового руководства требуются следующие предварительные условия:

        1. IIS 7 или выше с включенной службой ролей ASP.NET.
        2. Установлен модуль перезаписи URL. Для получения дополнительной информации см. Использование модуля перезаписи URL.

        Настройка тестовой веб-страницы

        Чтобы продемонстрировать, как работает модуль перезаписи URL, мы будем использовать простой тестовый ASP.NET-страницу. Эта страница считывает переменные веб-сервера и выводит их значения в браузер.

        Скопируйте следующий код ASP.NET и поместите его в папку% SystemDrive % \ inetpub \ wwwroot \ в файле с именем article.aspx :

          <% @ Page Language = "C #"%>
        
        
        
        
         Тест модуля перезаписи URL 
        
        
              

        Тестовая страница модуля перезаписи URL

        <таблица> Переменная сервера Значение Исходный URL: <% = Запрос.ServerVariables ["HTTP_X_ORIGINAL_URL"]%> Конечный URL: <% = Request.ServerVariables ["SCRIPT_NAME"] + "?" + Request.ServerVariables ["QUERY_STRING"]%>

        После копирования этого файла перейдите по адресу http: //localhost/article.aspx и проверьте, правильно ли отображается страница в браузере.

        Создание правила перезаписи

        Мы создадим простое правило перезаписи, которое перезапишет URL-адреса в следующем формате:

        http: // localhost / article / 342 / some-article-title
        to:
        http: //localhost/article.aspx? Id = 342 & title = some-article-title .

        Мы создадим правило перезаписи с помощью пользовательского интерфейса перезаписи URL в диспетчере IIS. Для этого выполните следующие действия:

        1. Перейдите в диспетчер IIS.
        2. Выберите Веб-сайт по умолчанию .
        3. В представлении функций щелкните Перезаписать URL-адрес .
        4. На панели Действия справа щелкните Добавить правила…
        5. В диалоговом окне Добавить правила выберите Пустое правило и нажмите ОК.

        Теперь вы должны определить фактическое правило перезаписи. В модуле перезаписи URL-адреса правило перезаписи определяется указанием четырех необходимых частей информации:

        • Название правила.
        • Шаблон, используемый для сопоставления строки URL.
        • Необязательный набор условий.
        • Действие, выполняемое, если шаблон соответствует и все ли проверки условий успешны.

        Именование правила

        В текстовом поле Имя введите имя, которое будет однозначно определять правило, например: «Заменить на article.aspx».

        Определение шаблона

        В текстовом поле Pattern введите следующую строку:

          ^ article / ([0-9] +) / ([_ 0-9a-z -] +)
          

        Эта строка представляет собой регулярное выражение, которое указывает, что шаблон будет соответствовать любой строке URL-адреса, удовлетворяющей следующим условиям:

        1. Начинается с последовательности символов «статья /».
        2. Содержит один или несколько цифровых символов после первого «/».
        3. Содержит один или несколько буквенно-цифровых символов или символов «_» или «-» после второго «/».

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

        Определение действия

        Поскольку создаваемое нами правило должно перезаписывать URL-адрес, выберите тип действия Rewrite , который указан в поле группы Action .В текстовом поле Rewrite URL: введите следующую строку:

          article.aspx? Id = {R: 1} & title = {R: 2}
          

        Эта строка задает новое значение, на которое нужно переписать входной URL. Обратите внимание, что для значений параметров строки запроса мы использовали {R: 1} и {R: 2}, которые являются обратными ссылками на группы захвата, которые были определены в шаблоне правила с помощью круглых скобок.

        Оставьте значения по умолчанию для всех остальных настроек. Страница свойств Edit Inbound Rule должна выглядеть следующим образом:

        Сохраните правило, щелкнув Применить справа.

        Просмотр правила перезаписи в файле конфигурации

        Правила перезаписи хранятся либо в файле ApplicationHost.config, либо в файлах Web.config. Чтобы проверить конфигурацию только что созданного правила, откройте файл Web.config, расположенный в% SystemDrive % \ inetpub \ wwwroot. В этом файле вы должны увидеть раздел , содержащий это определение правила:

          <перезапись>
          <правила>
            
              
            
          
        
          

        Приведенный выше синтаксис также применим к настройке перезаписи URL-адресов в Web.config на веб-сайтах Windows Azure (WAWS).

        Проверка правила перезаписи

        Чтобы проверить правильность перезаписи URL-адресов правилом, откройте веб-браузер и запросите следующий URL-адрес:

        http: // localhost / article / 234 / some-title

        Вы должны увидеть, что правило перезаписи на вашем веб-сервере изменило исходный URL-адрес на Article.aspx и передал «234» и «some-title» в качестве значений параметров строки запроса.

        Создание правила перенаправления

        Теперь мы создадим правило перенаправления, которое будет перенаправлять все URL-адреса в следующем формате:

        http: // localhost / blog / some-other-title / 543
        в следующий формат:
        http: // localhost / article / 543 / some-other-title

        Правило перенаправления позволяет нескольким URL-адресам указывать на одну веб-страницу.

        Для этого откройте пользовательский интерфейс просмотра функции перезаписи URL в диспетчере IIS.blog / ([_ 0-9a-z -] +) / ([0-9] +) (Этот шаблон будет соответствовать строке URL-адреса, которая начинается с «blog» и захватывает второй и третий сегменты URL-адреса в обратном направлении. ссылки.)

      6. Действие: Перенаправить (Действие перенаправления приведет к отправке ответа перенаправления обратно в браузер.)
      7. URL-адрес перенаправления: article / {R: 2} / {R: 1} (Эта строка подстановки будет использоваться в качестве URL-адреса перенаправления; обратите внимание, что она использует обратные ссылки для сохранения и переупорядочивания частей исходного URL-адреса, захваченных во время сопоставления с шаблоном .)

    Введите имя, шаблон и действие, как показано ниже:

    Введите URL-адрес перенаправления, как показано ниже:

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

    Проверка правила перенаправления

    Чтобы проверить, что правило перенаправляет запросы правильно, откройте веб-браузер и запросите следующий URL-адрес:

    http: // localhost / blog / some-other-title / 323

    Вы должны увидеть, что браузер был перенаправлен на http: // localhost / article / 323 / some-other-title в результате выполнения правила перенаправления, а затем запрос был переписан в соответствии с правилом перезаписи, которое вы создали ранее.

    Создание правила блокировки доступа

    Третье правило, которое мы создадим, используется для блокировки всех запросов к веб-сайту, если для этих запросов не задан заголовок хоста. Этот тип правила полезен, когда вы хотите предотвратить попытки взлома, которые выполняются путем отправки HTTP-запросов на IP-адрес сервера вместо использования имени хоста.

    Мы создадим это правило без использования диспетчера IIS. Откройте файл Web.config в папке % SystemDrive% \ inetpub \ wwwroot \ , которую вы использовали для статьи.aspx тестовый файл в начале этой статьи. Найдите раздел . Вставьте следующее правило в коллекцию , чтобы оно было первым правилом в коллекции:

      
      
      <условия>
        
      
      
    
      

    Раздел должен выглядеть следующим образом:

      <перезапись>
      <правила>
        
          
          
        
      
    
      

    Давайте проанализируем правило, чтобы понять, что оно делает.

      
      

    Элемент выше говорит, что правило будет соответствовать любой строке URL.

      
      

    Приведенный выше элемент добавляет условие к правилу, которое извлекает значение заголовка хоста путем чтения переменной сервера HTTP_HOST, сопоставляет его с шаблоном «localhost» и затем отменяет результат сопоставления.Другими словами, условие проверяет, что заголовок хоста не соответствует «localhost».

      
      

    Указанный выше элемент сообщает модулю перезаписи URL-адреса завершить HTTP-запрос.

    Проверка правила блокировки доступа

    Чтобы проверить это правило, откройте веб-браузер и отправьте запрос по адресу http://127.0.0.1/article/234/some-title . Вы должны увидеть браузер, который не получает ответа от сервера. Однако, если вы запросите http: // localhost / article / 234 / some-title , тогда веб-сервер ответит успешно.

    Неудачное отображение будет следующим:

    Успешное отображение будет следующим:

    Сводка

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

    Введение в модуль au Apache mod_rewrite

    CE документ является дополнением к документации по модулю
    mod_rewrite . Il dcrit les concept de base dont la
    connaissance est ncessaire pour l’utilisation de
    mod_rewrite . D’autres документы entrent d’avantage dans
    les dtails, mais celui-ci devrait aider le dbutant se mouiller les
    пестрые.

    Le module Apache mod_rewrite является мощным модулем
    и софистично, чтобы разрешить критичность URL-адресов.Grce lui, vous
    pouvez effectuer quasiment tous les types de rcriture d’URLs dont vous
    авез бесоин. Il est cependant ассес комплекс, et peut paratre
    устрашающий au dbutant. Определенные австралийские тренеры
    rgles de rcriture com des incantations magiques, et les utiliser
    sans vraiment comprendre leur manire d’agir.

    Документ

    CE: «За амбиции, суффизаммент, явный залить»
    permettre la comprhension, et non la copy en aveugle, de ce qui suit.

    Gardez l’esprit que de nombreuses tches de Manage d’URLs
    courantes n’ont pas besoin de la puissance et de la complexit de
    mod_rewrite .Вылейте все простые вещи, вуар
    mod_alias и документация по Mise и соответствующие URL-адреса
    systme de fichiers.

    Enfin, avant de procder, assurez-vous d’avoir configur le niveau de
    журналистика mod_rewrite un des niveaux de trace
    через директиву la LogLevel . Bien que
    ceci risque de vous submerger sous une normal Quantit d’informations,
    база данных проблем с конфигурацией
    mod_rewrite est ce prix car vous verrez alors
    точный комментарий chaque rgle est traite.

    mod_rewrite использует словарь рациональных выражений, совместимых с Perl.
    Ce document n’a pas pour prtention d’tre une rfrence dtaille des
    выражения rationnelles. Это эффективные, ноусрекомендуемые страницы руководства PCRE, страницы руководства
    выражения rationnelles Perl, et l’ouvrage Mastering
    Регулярные выражения, Джеффри Фридл.

    Dans ce document, nous avons pour but de vous fournir suffisamment de
    словарь выражений rationnelles pour vous mettre le pied
    l’trier, sans tre dpass, en esprant que les directives RewriteRule vous devicerontcom des
    Formules scientifiques, plutt que com des incantations magiques.

    Словарь rationnelles

    Vous Trouverez dans ce qui suit le минимум connatre pour tre en
    Замените выражения rationnelles et des rgles RewriteRule . Ceci ne reprsente
    уверенность в словарном запасе выражений rationnelles complete,
    mais constitue un bon point de dpart, et devrait vous aider
    dchiffrer les выражений rationnelles simples, et crire vos propres
    выражения.

    Мотив Значение Пример
    . Соответствует всем характеристикам уникальный к.т. корреспондент кот ,
    детская кроватка , разрез и т. Д.
    + Rpte le caractre de correance
    prcdent une ou plusieurs fois
    a + соответствуют a , aa ,
    aaa и т. Д.
    * Rpte le caractre de correance
    prcdent zro ou plusieurs fois
    a * соответствует tout ce quoi соответствует
    a + , mais соответствует австралийскому видео.a соответствует тому моменту, когда начинается номинал
    a
    $ L’autre ancrage, соответствует fin de
    ла чан.
    и долл. США соответствует условию по номинальной стоимости
    а .
    () Regroupe plusieurs caractres en une
    seule entity, et conserve une correance des fins d’utilisation
    dans une rfrence arrire.
    (ab) +
    соответствует ababab — savoir, le +
    s’applique au groupe./] t соответствует cat ou
    c = t mais pas c / t

    Avec mod_rewrite , le caractre ! peut
    prfixer une expression rationnelle afin d’en exprimer la ngation.
    Autrement dit, un chane ne correra que si elle ne compare pas
    l’expression situe aprs le ! .

    Disponibilit des rfrences
    arrires dans les выражений rationnelles

    Vous devez vous souvenir d’une выбрал importante: chaque fois
    que vous utilisez des phses dans un Modle ou dans
    un des modles de conditions , des rfrences arrires
    sont cres en interne et peuvent tre rappeles via les chanes
    $ N и % N (voir ci-dessous).Ces
    rfrences sont disponibles lors de la cration
    директива de la chane de substitution d’une
    RewriteRule ou de la
    директива chane de test d’une RewriteCond .

    Лес фиксирует в моделях директив RewriteRule sont paradoxalement
    disponibles dans toutes les directives RewriteCond qui prcdent, car
    les выражений des директив RewriteRule sont values ​​avant
    les индивидуальные условия.

    La figure 1 montre quels endroits les
    rfrences arrires sont suceptibles
    d’tre dveloppes, et illustre le flux des compilation
    выполняет правила RewriteRule et al.
    RewriteCond. Dans les chapitres suivants, nous excinerons comment
    Утилизатор ces rfrences arrires, donc ne vous affolez pas si
    elles vous paraissent un peu exotiques au premier abord.


    Рисунок 1: Le cheminement d’une rfrence arrire
    траверс не горит.
    Dans cet instance, une Requte pour / test / 1234 serait
    трансформация en
    /admin.foo?page=test&id=1234&host=admin.example.com .

    Une rgle de rcriture RewriteRule est constitue de trois
    аргументы spars par des espaces. Les arguments sont:

    1. Модель : модель дополнительных URL-адресов
      s’appliquer;
    2. Замена : vers quoi la requte correante doit tre
      трансформировать;
    3. [drapeaux] : параметры, влияющие на запись.

    Le Modle est une expression
    rationnelle. Au sein de la premire rgle de rcriture, ou jusqu ‘
    ce qu’une замена Survienne, elle est compare au chemin de
    l’URL de la requte entrante (la
    partie situe aprs le nom d’hte mais avant tout point d’interrogation
    qui indique le dbut d’une chane de paramtres de
    Requte) ou, dans un context de rpertoire, au chemin de la
    Требуемое отношение к работе для чтения
    rgle est dfinie. Lorsqu’une замена на eu lieu, les
    rgles suivantes Effeuent leurs Comparisons par rapport la valeur
    подстановка./produits/(.*)/view$ «» / var / web / produitsdb / $ 1 «

    La variable $ 1 sera remplace par tout текст
    Соответствующее выражение situe entre les круглые скобки в dans le
    Модель . Par example, une Requte pour
    http://example.com/produits/r14df/vue соответствует au
    Chemin / var / web / produitsdb / r14df .

    S’il y a plus d’une, выражение в скобках, elle seront
    доступ к selon leur ordre d’apparition через переменные les
    $ 1 , $ 2 , $ 3 и т. Д.puppy.html «» petitchien.html «[NC]

    Pour une liste des drapeaux disponibles, leurs values, et des
    образцы, документ Drapeaux de
    rcriture.

    Директивы Il est possible d’utiliser une ou plusieurs RewriteCond pour restreindre les types
    de Requtes auxquelles devra s’appliquer la rgle RewriteRule suivante. Le Premier
    аргумент есть переменная dcrivant une caractristique de la Requte,
    второй аргумент есть выражение рациональное
    qui doit соответствует переменной, et un troisime аргумент optionnel
    est une liste de drapeaux qui modifient la manire dont la
    Соответствие оценочной стоимости.10 \ .2 \. »
    RewriteRule «(. *)» «Http: //intranet.example.com$1»

    Si vous spcifiez plus d’une, директива RewriteCond , директивы ces
    сделать все, что удовлетворительно, чтобы применить приложение RewriteRule RewriteRule . Например,
    для того, чтобы межадресные запросы, которые содержались в "взломе" в чане
    de Requte, sauf si elles contiennent aussi un cookie contenant le mot
    "go", vous pouvez utiliser:

     RewriteCond "% {QUERY_STRING}" "hack"
    RewriteCond "% {HTTP_COOKIE}" "! Вперед"
    RewriteRule "."" - "[F] 

    Примечания к восклицательному знаку, указывающему на соответствие отрицательному
    ; Ainsi, la rgle n'est applique que si le cookie ne contient pas "go"

    Соответствия в выражениях rationnelles contenues dans
    les директивы RewriteCond
    действительный учредитель партий Замена
    de la rgle RewriteRule через
    меньшие переменные % 1 , % 2 и т. д. Пар.
    Пример, ce qui suit va diriger la Requte vers un rpertoire diffrent
    en fonction du nom d'hte utilis pour accder au site:

     RewriteCond "% {HTTP_HOST}" "(./(.*) "" / sites /% 1 / $ 1 "

    Требуется концерт http://example.com/foo/bar ,
    alors % 1 contiendrait example.com et al.
    $ 1 contiendrait foo / bar .

    La rcriture est en gnral dfinie au niveau de la configuration du
    Главный сервер (en dehors de toute section ) или раздел . Il s'agit l de la
    manire la plus simple de mettre en oeuvre la rcriture et nous la
    Рекомендации.Il est possible, cependant, de mettre en oeuvre la
    rcriture au sein d'une section ou d'un fichier .htaccess ; ce type de
    конфигурация есть cependant плюс комплекс. Cette техника est appele
    rcriture par rpertoire.

    La Principale diffrence avec les rcritures au niveau du serveur rside
    dans le fait que le prfixe du chemin du rpertoire contenant le fichier
    .htaccess est supprim avant la mise en correance dans
    la rgle RewriteRule .Де
    плюс, в doit utiliser la директива RewriteBase для обеспечения безопасности
    Requte est correctement mise en correcance.

    определение перезаписи по The Free Dictionary

    Фамилия была написана карандашом, и Эми объяснила, что он должен переписать его чернилами и надлежащим образом запечатать для нее. Пусть теперь читатель представит, какие вложения средств потребуются, чтобы переписать архитектурную книгу; чтобы тысячи строений снова заросли на земле; вернуться в те эпохи, когда толпа памятников была такой, согласно заявлению очевидца, «что можно было бы сказать, что мир, сотрясаясь, сбросил свои старые одежды, чтобы прикрыться белым одеянием. церквей.«Erat enim ut si mundus, ipse excutiendo semet, rejecta vetustate, Candida ecclesiarum vestem Indueret. Хотя он и впредь продолжал в значительной степени повторять идеи« Sartor Resartus », теперь он обратился от биографии, эссе и литературной критики к истории. и впервые опубликовал «Французскую революцию». Он почти в отчаянии решил отказаться от литературы и поставил на нее свое состояние; но когда первый том был случайно уничтожен рукописью, он с большим мужеством приступил к его переписыванию и опубликовал всю книгу в 1837 году.Полный энтузиазма, несмотря на его чисто механическое участие в великой идее, двадцатилетний парень переписывал целые страницы ради единственной кляксы и считал своей славой подправить текст, считая его элементом благородного предприятия. Граф g называется нормальной формой для леволинейного TRS R, если R не вызывает какого-либо шага переписывания g [стрелка вправо] g '. Это означает, что как федеральное, так и провинциальное правительства должны будут переписать сотни законов, уже написанных American Computer Software LLC, 6911 Mangrove Lane, 3rd Floor Madison, WI 53713 Телефон: (608) 221-9449 Название приложения: Management + Plus Аппаратные платформы: IBM-совместимая Крупнейшая установка: 150 объектов, 1300 активных арендаторов / арендаторов Основной / Дополнительный Типы собственности: Смешанное использование Диапазон затрат: от 3 000 до 10 000 долларов Дата последней редакции и версия приложения: 1 марта 1997 г. Версия 9 Дата следующей крупной перезаписи: август 1997 г. Графическая перезапись Общее количество установок: 1 500 + Например: Возьмите приговор ce «После тщательного рассмотрения мы определили, что финансовая осмотрительность требует, чтобы мы воздерживались от принятия мер в это время», и переписали его: «Мы тщательно обдумали и определили, что с финансовой точки зрения действовать в настоящее время неразумно.