5 примеров использования mod_rewrite


Содержание

Что такое mod_rewrite

Что такое mod_rewrite

RewriteEngine On — директива включает модуль.
RewriteBase — указывает путь от корня сайта до файла .htaccess. Если .htaccess лежит в корне, то указывать этот параметр нужно как в примере, если во внутреннем каталоге, то указываем путь к этому каталогу, например /images.

Принцип работы модуля mod_rewrite

Работа модуля основана на наборе правил и условий, согласно которым производится преобразование. При получении запроса, Apache передает в mod_rewrite путь к файлу начиная от того места, где находится файл .htaccess, остальная часть пути обрезается. Если поступил запрос http://some-url.com/cat/cat2/file.html, а .htaccess лежит в корне, то в mod_rewrite попадет cat/cat2/file.html (без слеша в начале). Если .htaccess лежите в директории /cat, то в mod_rewrite попадет cat2/file.html. Далее mod_rewrite анализирует правила в .htaccess и действует согласно этих правил. Стоит знать, что mod_rewrite работает не со ссылками и не с URL адресами, а с обычными строками. То есть адрес, который нужно преобразовать, передается mod_rewrite как обычная строка, и эту строку можно преобразовать как угодно. Для построения правил используются две директивы, RewriteCond и RewriteRule (более детально эти директивы описаны ниже).​
RewriteCond — в этой директиве определяются условия, при которых сработает правило преобразования RewriteRule. Если условие в RewriteCond выполнено, выполняем правило в RewriteRule. Таких условий перед правилом RewriteRule может быть неограниченное количество. RewriteCond не является обязательной директивой для создания правила преобразования и может отсутствовать.
RewriteRule — здесь уже указывается само правило для преобразования, которое для конкретного преобразования должно быть единственным.
Пример, как это выглядит в .htaccess:

Несмотря на то, что директива RewriteCond стоит выше, чем правило RewriteRule, mod_rewrite сначала проверяет строку на соответствие с шаблоном в RewriteRule, и если строка совпадает с шаблоном, он смотрит на указанные выше условия в RewriteCond. Если условия тоже совпадают, происходит преобразование согласно правилу RewriteRule. Рассмотрим подробней синтаксис и предназначение директив RewriteCond и RewriteRule.

RewriteCond

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

RewriteCond [строка_для_сравнения] [условие] [флаг]
RewriteCond % !.(ico|css|js|txt)$ [NC]

В этом примере правило условие будет выполнено, если запрос пользователя не содержит расширение ​ico,css,js или txt.
Строка для сравнения — кроме обычного текста может содержать регулярное выражение, обратные RewriteCond и RewriteRule связи и переменные сервера. На практике здесь используются переменные сервера и иногда регулярные выражения.
Условие — собственно это то, с чем сравнивается строка для сравнения. Может содержать текст, регулярные выражения и специальные символы:

  • «-d» — проверяет правильность пути (его существование) и является ли этот путь, путем к каталогу.
  • «-f» — проверяет правильность пути (его существование) и является ли этот путь, путем к обычному файлу.
  • «-s» — то ж, что и -f, но дополнительно проверяет, что размер файла больше 0 (ноля).
  • «-l» — проверяет правильность пути (его существование) и является ли этот путь символической ссылкой.
  • «-F» — проверяет через внутренний подзапрос, является ли сравниваемая строка реально существующим файлом, при этом используются все существующие списки контроля доступа сервера. Это негативно сказывается на производительности, стоит использовать осторожно.
  • «-U» — проверяет через внутренний подзапрос, является ли сравниваемая строка реально URL адресом, при этом используются все существующие списки контроля доступа сервера. Это негативно сказывается на производительности, стоит использовать осторожно.

Дополнительно, перед условием, допускается использование логических символов:

  • «!» — инвертирование значения, указывает на то, что сравниваемая строка должна не соответствовать шаблону условия.
  • » « — лексически больше.
  • «=» — равенство, используется по умолчанию.

Флаг — необязательный параметр, в котором указываются дополнительные опции (через запятую, если их несколько). Указывается в конце правила в квадратных скобках [].

  • [NC] — регистронезависимый, то есть регистр (A-Z или a-z) в строке для сравнения или в условии не имеет значения.
  • [OR] — логическое ИЛИ. Используется, когда перед директивой RewriteRule находится несколько директив RewriteCond и правило в RewriteRule должно быть выполнено при совпадении одного из RewriteCond.​ Если флаг OR не указан, RewriteRule сработает только при соответствии всех директив RewriteCond.

RewriteRule

​В RewriteRule указывается правило для преобразования, то, как мы хотим изменить URL. По факту эта директива также содержит условие, при совпадении которого, будет произведено преобразование. Это шаблон, с которым сверяется полученная mod_rewrite строка. Стоит отметить, что если ничего подставлять не нужно, а такие случаи иногда происходят, в новом значении необходимо указать прочерк «-«. Схематически правило RewriteRule выглядит следующим образом:

RewriteRule [шаблон] [новое_значение] [флаг]
RewriteRule ^(.*)$ /index.php [L]

Шаблон — то, с чем будет сравниваться исходная строка. Исходная строка необязательно является той, которую запросил пользователь. Она могла быть ранее изменена другими правилами RewriteRule. Может содержать обычный текст, регулярные выражение и обратные RewriteCond и RewriteRule связи. Исходная строка, это путь от файла .htaccess до файла, доменного имени там нет.
Новое значение — это значение, на которое будет изменена исходная строка после преобразования. Может содержать обычный текст, регулярные выражение, обратные RewriteCond и RewriteRule связи и переменные сервера.
Флаг — ​необязательный параметр, в котором указываются дополнительные опции, (через запятую, если их несколько). Указывается в конце правила в квадратных скобках [].

  • [R=code] — редирект. code — это код ответа браузеру, по умолчанию используется 302 (временно перемещен), поэтому для постоянного редиректа используйте код 301.
  • [F] — запрет доступа к URL, Forb , secure — если установлено 1 или true, куки будут действительны только при https (безопасном) соединении, httponly — если установлено 1 или true, куки будут доступны для JavaScript.

Обратные связи RewriteCond и RewriteRule

Обратные связи, это возможность использования группы символов (заключенные в скобки «()») для их последующей подстановки. Например в скобках можно указать определенное регулярное выражение и таким образом охватить большое количество адресов.
$N — позволяет использовать группу символов из шаблона директивы RewriteRule.
%N — позволяет использовать группу символов из шаблона директивы RewriteCond.
Вместо символ «N» в обоих случаях используется число от 1 до 9.
На практике это выглядит следующим образом. Рассмотрим простой пример.
Есть адрес с определенной вложенность, http://some-url.com/cat1/cat2/cat3/cat4/page.html. Есть желание сделать страницу http://some-url.com/cat1/cat2/cat3/cat4/page.html доступной по адресу http://some-url.com/page.html, но кроме page.html, там есть куча других файлов с расширением html, которые также должны быть доступны по новому адресу. Это решается очень просто:

Теперь, при обращении к по адресу http://some-url.com/page.html, будет отображаться информация с адреса http://some-url.com/cat1/cat2/cat3/cat4/page.html и так со всеми адресами вида http://some-url.com/*.html. Точно также, с использованием «%N», можно подставлять группы символов из шаблона для RewriteCond. В данном примере, вместо $1 подставляется группа символов в скобках из шаблона.

Переменные сервера

​Переменные сервера могут содержать много полезной информации, которую можно и нужно использовать для построения правил. Ниже приведен список этих переменных:
HTTP_USER_AGENT — дает информацию о браузере и ОС пользователя. При посещении сайта пользователь, передается User Agent, по факту это обозначает ПО, с помощью которого производится доступ к сайту.
HTTP_REFERER — адрес страницы, с которой был осуществлен переход на сайт.
HTTP_COOKIE — список cookie, которые передает браузер.
HTTP_FORWARDED — адрес страницы, с который был переход. Большой разницы с HTTP_REFERER я не заметил.
HTTP_HOST — адрес сервера (сайта).
HTTP_ACCEPT — это пожелания клиента, по типу документа, который он хочет получить. На деле это выглядит так, браузер отправляет на сервер в http заголовке типы файлов, которые он хочет получить (обычно это относится к изображениям и другим медиа файлам), то есть сообщает, какой тип файла он может обработать.
REMOTE_ADDR — IP адрес посетителя.
REMOTE_HOST — адрес (хост) пользователя, который отдается командой «host» по IP адресу.
REMOTE_IDENT — имя пользователя в формате имя.хост.
REMOTE_USER — то же самое что и REMOTE_IDENT, но не содержит хост пользователя.
​REQUEST_METHOD — тип запроса к сайту (GET, POST, HEAD).
SCRIPT_FILENAME — полный путь к запрошенному файлу или адресу.
PATH_INFO — данные, которые передавались в скрипт.
QUERY_STRING — строка, переданная как запрос в CGI скрипт, GET параметры.
AUTH_TYPE — тип идентификации пользователя.
DOCUMENT_ROOT — путь к корневой директории сервера.
SERVER_ADMIN — email администратора сервера.
SERVER_NAME — адрес (имя) сервера, отдаваемый командой host.
SERVER_ADDR — IP вашего сайта.
SERVER_PORT — порт, га котором работает Apache.
SERVER_PROTOCOL — версия http протокола.
SERVER_SOFTWARE — используемая версия Apache.
TIME_YEAR, TIME_MON, TIME_DAY, TIME_HOUR, TIME_MIN, TIME_SEC, TIME_WDAY, TIME — время.
API_VERSION —версия API модуля Apache.
THE_REQUEST — строка содержит весь http запрос, отправленный браузером на сервер (GET /index.html HTTP/1.1). Здесь не включены дополнительные заголовки.
REQUEST_URI — адрес, запрошенный в http заголовке.
REQUEST_FILENAME — полный путь к запрошенному файлу, по факту содержит те же данные, что и SCRIPT_FILENAME.
IS_SUBREQ — проверка на подзапрос. Если да — ответ true, если нет — ответ false.
Список переменных вашего сервера, вы можете легко узнать поместив в корень сайта php файл с кодом:

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

Наглядное руководство по htaccess и mod_rewrite для новичков

Содержание статьи:

Автор: Патрик Элтофт
Перевод: Всеволод Козлов

Несмотря на то, что статей и руководств, освещающих .htaccess и mod_rewrite, в Сети, мягко говоря, немало, многие веб-мастера до сих пор испытывают нехватку знаний по этому вопросу. Многим из них просто непонятно то, что говорится в этих мануалах, т.к. там это все сложно для их понимания.

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

Не будем терять времени, приступаем!

Сперва давайте разберемся, что же такое файл .htaccess и mod_rewrite.

.htaccess – файл-конфигуратор Apache-серверов.

Mod_rewrite – модуль, используемый веб-серверами для преобразования URL ’ов.

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

Удаление дублей страниц

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


Яркий пример – главная страница любого сайта обычно доступна по 4-ем адресам:

  • http://www.site.ru/
  • http://site.ru/
  • http://www.site.ru/index.html
  • http://site.ru/index.html

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

Решение этой проблемы предельно простое и выглядит так:

Таким образом, мы получим редирект всех страниц-дублей на http://www.site.ru/

Меняем расширение html на php

Иногда бывает так, что у Вас статичный веб-сайт, а Вам необходимо, чтобы на нем срабатывал какой-нибудь php-скрипт. Для этого Вам необходимо сказать серверу, чтобы он обрабатывал эту страницу как php-файл.

AddHandler application/x-httpd-php .html

Этот прием можно использовать и для других расширений файлов:

AddHandler application/x-httpd-php .xml
AddHandler application/x-httpd-php .asp

Задаем собственные страницы ошибок

О необходимости создания собственной страницы ошибок я уже неоднократно рассказывал:

Задать же собственную страницу ошибок можно следующим образом:

ErrorDocument 404 http://www.site.ru/404.php

Индексация директорий и поддиректорий

Чтобы избежать индексации поисковыми системами директорий и поддиректорий, необходимо прописать такую строку, к примеру:

Лично я предпочитаю переадресовывать с пустых директорий либо на главную страницу сайта, либо на какую-либо другую подходящую страницу. Например, директорию www.site.ru/images/ можно переадресовать на www.site.ru, а www.site.ru/forum/ на www.site.ru/forum/index.php.

Переадресация страниц

Простое правило, позволяющее переадресовывать с одной страницы на другую:

redirect 301 /old-page.php http://www.site.ru/new-page.php

Переадресация Вашего фида на Feedburner

RewriteCond % !FeedBurner
RewriteRule ^your-feed\.xml$ http://feeds.feedburner.com/your-feed [R,L]

Защита изображений от скачивания

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

RewriteEngine on
RewriteCond % .
RewriteCond % !^http://([^.]+\.)?site\. [NC]
RewriteCond % !google\. [NC]
RewriteCond % !search\?q=cache [NC]
RewriteCond % !msn\. [NC]
RewriteCond % !yahoo\. [NC]
RewriteCond % !^/hotlinker\.gif$
RewriteRule \.(gif|jpg|png)$ /hotlinker.gif [NC,L]

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

Создание ЧПУ (человеко-понятных урлов) с помощью mod_rewrite

C его помощью можно преобразовать, например, www.site.ru/product.php? >

RewriteEngine on
RewriteRule ^product/([^/\.]+)/?$ product.php? >

В другом примере преобразуем www.site.ru/script.php?product=123 в www.site.ru/cat/product/123/:

RewriteRule cat/(.*)/(.*)/$ /script.php?$1=$2

Избавляемся от QUERY_STRING

Некоторые веб-мастера делают ссылки вида www.site.ru/index.php?source=blogstorm, чтобы знать, откуда идут посетители. Из-за этого появляется дублированный контент, от которого надо избавляться:

RewriteCond % ^source= RewriteRule (.*) /$1? [R=301,L]

Шпаргалка по mod_rewrite

Синтаксис регулярных выражений

Коды перенаправления и ошибок


Флаги RewriteRule

Флаги RewriteCond

Примеры правил

Серверные переменные

Директивы mod_rewrite

10 Комментариев »

  1. Спасибо! Полезная табличка.

Комментарий от saahov — Август 25, 2006 @ 3:31 am

Спасибо! Использовал на сайте!

Комментарий от MStars — Октябрь 11, 2006 @ 5:05 am

Комментарий от dexpl — Ноябрь 8, 2006 @ 5:19 pm

Комментарий от Passenger — Декабрь 2, 2006 @ 2:25 am

Thanks! i will recomnd this file to my friends!

Комментарий от ozono — Декабрь 10, 2006 @ 2:23 pm

+1
www.ilovejackdaniels.com — наткнулся на него пару месяцев назад, нашел для себя много полезного

Комментарий от bersy — Февраль 10, 2007 @ 4:10 pm

www.beget.ru/art10.html — хорошие примеры использования mod_rewrite

Комментарий от Alexey — Май 12, 2008 @ 5:44 pm

Спасибо))) Полезная инфа)

Комментарий от готовые фирмы — Январь 3, 2009 @ 7:37 pm

Спизжено с англ сайта. Убейся, поганый вор. Твой говносайт всё равно кроме быдла никому не нужен.

Комментарий от Николай — Март 7, 2009 @ 1:01 am

Благодарю, осталось только цветной принтер найти

Комментарий от Kvadrat — Март 12, 2009 @ 3:03 am

Примеры использования mod_rewrite

Подробное описание модуля mod_rewrite можно найти здесь.

Посетители веб-сайта авторизуются при помощи стандартной авторизации (AuthType BasicAuth). Необходимо по ссылке /home/первая буква логина/ показывать содержимое их домашних каталогов.

Жесткий запрет посещений нашего веб-сайта для робота поисковой системы Google

Закрыть доступ к веб-сайту в рабочее время


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

и для определенных типов файлов

В связи с неоднозначностью записи расширения HTML файлов (.htm или .html), некоторые пользователи могут ошибочно набрать адрес страницы. Для автоматического исправления такого рода ошибок, можно воспользоваться mod_rewrite.

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

Перенаправление несуществующих URL на другой веб-сервер

Проблема здесь в том, что это будет работать только для страниц, находящихся внутри DocumentRoot. Тогда, так как вы можете добавить больше условий (например, ещё и для управления домашними каталогами, и т.д.), есть лучший вариант:

Сайт перенесен с одного домена на другой с domain.com на domain2.com

Часто хостинговые провайдеры накладывают ограничение на количество уникальных сайтов, и зачастую под это ограничение попадают и поддомены. Данное ограничение можно обойти средствами .htaccess. Например, мы хотим направить поддомен forum.yourdomain.net на директорию /forum . Для этого необходимо направить нужные поддомены на папку с основным сайтом и создать вложенную директорию, например forum

Удачной работы! Если возникнут вопросы — напишите нам, пожалуйста, тикет из Панели управления аккаунта, раздел «Помощь и поддержка«.

htaccess — 47 наглядных примера серверного редиректа

Наглядные примеры .htaccess

В начало .htaccess ставят:

Первая строка включает обработку правил, вторая — обрезает полный путь (от корня сервера) до корня сайта.
/home/papka-s-saitom/public_html/razdel/podrazdel/ — таким был путь до RewriteBase /
/razdel/podrazdel/ — таким станет после

Благодаря «RewriteBase /» удобнее делать преобразования URI (убирается привязка к физическому расположению файлов сайта на сервере).

Давайте рассмотрим самые распространенные примеры:

1. Простой редирект

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

2. Реврайт без редиректа

Иногда требуется, чтобы был редирект без смены адреса, т.е. реврайт без редиректа. Для этого просто не указываем флаг редирект (R), и получаем желаемый результат, теперь по адресу news/happy получим news.html, а в адресной строке останется news/happy

3. Редирект с сохранением рейтинга страницы

4. Редирект для домена с www.site.com на site.com

Убираем у всех запросов вначале «WWW.»

5. Редирект для домена с site.com на www.site.com

6. Редирект с index.php (html,htm) на главную страницу

7. Редирект с index.html на папку (удаление из строки браузера index.html)

8. Заменить все .htm файлы на .html файлы

9. Чтобы вместо page.htm загружался файл page.html

10. Переезд с одного домена на другой

11. Редирект всех файлов в папке на один файл

Например вы больше не нуждаетесь в разделе сайта «old» и хотите перенаправить все запросы к папке /old на один файл /new.php. Для этого добавляем в .htaccess следующий код.

12. Задание типа индексной страницы (php, html, htm и другие)

Указывается порядок загрузки типов индексного файла, лежащих в корне каталога.

Проверяем доменное имя, если оно начинается с www, то сработает правило: «все, на http://%1/$1». Здесь %1 это наш домен без www (взят из условия), а $1 это адрес (взят из самого правила).

13. Убираем у всех запросов в конце index.php. Переадресуем на страницу без index.php

Поисковые системы плохо относятся к дубрям страниц. Чтобы этого избежать нужно удалить (склеить) страницы вида http://ваш_домен/ и http://ваш_домен/index.php

14. Определение кодировки, в которой сервер «отдает» файлы

Варианты: KOI8-R, UTF-8, Windows-1251

15. Определение кодировки на загружаемые файлы


Варианты: KOI8-R, UTF-8, Windows-1251

16. Кэширование для всех типов файлов по времени доступа

17. Кэширование для всех типов файлов по времени изменения

18. Кэширование для определённых типов файлов

19. Главная страница без дублирования

Обычно код главной страницы физически расположен в файле index.html или index.php, но сайт должен открываться по любому из запросов: site.com, site.com/index.html, www.site.com и www.site.com/index.html. Но для поисковых систем это четыре разных URL! Если не настроить .htaccess верно, поисковик добавит в свой индекс четыре одинаковых страницы. Это признак некачественного сайта. Избежать этой проблемы можно с помощью такого кода в .htaccess:

20. Редирект страниц без слэша в конце URL на слеш

Чтобы предотвратить ситуацию с индексированием страниц www.site.com/about и www.site.com/about/ как разных, ставим следущий код: Со страниц без слэша будет установлен редирект на «слэшевые».

21. Принудительная постановка замыкающего слеша

Следующий код всегда будет добавлять слеш в адрес URL вашего сайта, что хорошо помогает в области SEO сайта.

22. Удалить слеш в конце

23. Удаляем «category» из URL

Для изменения ссылки site.com/category/blue на site.com/blue, просто добавьте следующий код в конце вашего .htaccess файла.

24. Редирект URL страницы с папки в корень сайта

Например страница лежит на сервере в site.com/category/blue.html, но надо чтобы страница работала по запросу site.com/blue.html

25. Редирект от GET параметров

Например, нужно что бы со страницы /?action=page& >

26. Редирект на мобильную версию сайта

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

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

Второй строкой проверяем что мы находимся на нужном домене (т.к. пример не универсальный)

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

27. Редирект на мобильную версию сайта (Универсальная версия)

28. Обработка ошибок Apache

29. Сохранение (загрузка) файлов вместо открытия

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

30. Переадресация с www.site.com/index.php? >В этом примере запрос вида: index.php ? parameter=some
преобразуется в: parameter.php ? some

33. Убираем переменные php из запроса

(вырезаем из URI всё, что находится после знака вопроса)

34. Заперт входа на сайт

Запрещаем вход на сайт Интернет Експлореру (вернее, кто себя так определяет) и пользователям с определённого IP-адреса (xxx.xxx.xxx.xxx).

35. Закрываем от всех

36. Закрываем конкретный файл от всех

37. Разрешаем доступ только с одного ip

38. Запрещаем доступ с конкретных ip

39. Убираем из Урла (URL) расширение файла

php можно заменить другим расширением. Например: html, htm, shtml, asp

40. При запросе файла .htaccess говорим, что он не существует (410, GONE).


41. Запрещаем отображать содержимое директории, если нет индексного файла

Вы скорее всего хоть раз видели текст Index of и список файлов. Так происходит в том случае, когда в директории нет индексного файла (например index.php), а система предлагает выбрать файл для дальнейшего открытия. Минус этого заключается в том, что случайный пользователь может увидеть список и содержание всех файлов директории.

42. Перенаправление с HTTPS на http

43. Редиректы в зависимости от времени

Когда нужно применять уловки типа содержания зависящего от времени масса вебмастеров все ещё используют CGI скрипты которые производят редиректы на специальные страницы. Как это может быть сделано через mod_rewrite?

Есть много переменных названных TIME_xxx для условий редиректа. В связке со специальными лексикографическими образцами для сравнения STRING и =STRING мы можем производить редиректы зависящие от времени:

Это выдает содержимое foo.day.html при запросе URL foo.html с 07:00 до 19:00 а в оставшееся время содержимое foo.night.html.

44. Редирект в URL с подчеркивания в дефис

45. Редирект в URL с больших символов на маленькие

46. Массовый редирект новых файлов

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

old_id INT new_url VARCHAR (255)

Далее пишем код который свяжет ваши старые id с новыми URL-ами
После этого, добавляем следующую строчку в .htaccess:

Что такое RewriteRule и для чего он нужен

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

mod_rewrite – является модулем сервера Apache, он служит для разнообразной манипуляции над URL.

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

К примеру, пользователь вводит: //semantica.in/blog/redirekt-navodit-porjadci-bnmvx.html

Можно предположить, что Apache отправит пользователю обратно содержание файла redirekt-navodit-porjadci-bnmvx.html. Но благодаря Apache mod_rewrite можно отправить данные с другого файла, например:

Изменение адреса происходит внутри сервера Apache.

Визуально URL в браузере никак не изменится, он останется таким же, как и был //semantica.in/blog/redirekt-navodit-porjadci-bnmvx.html . Но содержание будет с другой страницы. В этом и заключается отличие от перенаправления HTTP, которое показывает URL страницы информатора.

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

Самые жирные функции, которые можно реализовать с помощью mod_rewrite

1. Создание «Дружественных» URL адресов, которые используются для маскировки «кривых» URL

При написании скрипта example.php, например, для вывода статей, вы можете оформить ссылку на статью, используя такой URL:

Данный URL выглядит некрасиво и запрос (?exaple >

Преобразовать URL в таком случае нам поможет mod_rewrite. Что нам нужно сделать? В корне сайта находится файл .htaccess, допишем в него:

Теперь рассмотрим правило RewriteRule подробнее:

    ^articles/([^/]+)/?$ — регулярное выражение, имеющее соответствие с любым URL адресом в формате articles/ (article >

2. Блокировка возможности использования ссылок в изображениях на сайте

Также модуль mod_rewrite может запретить использовать ссылки на изображения. Допустим, существует страница вашего сайта //semantica.in/page.html, в которой содержится такой тег img:

Любой другой ресурс может позаимствовать вашу картинку:

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

Чтобы избежать таких проблем, в файле .htaccess дописываем:

Разберем как работает этот код:

  • RewriteEngine on — включаем mod_rewrite
  • RewriteCond % !^$- RewriteCond — директива mod_rewrite. Директива устанавливает условие, которое выполняется для обработки URL следующим правилом RewriteRule. В нашем случае условием будет значение в переменной HTTP_REFERER.
  • RewriteCond % !^http://(www.)?semantica.in/.*$ [NC] — вторая директива ставит условие — значение переменной HTTP_REFERER не должно начинаться с http://www.semantica.in/ или //semantica.in/. [NC] — флаг устанавливает чувствительность к регистру символов.
  • RewriteRule .+.(gif|jpg|png)$ — [F]— правило пропускается, если два условия RewriteCond не выполнены. Само же правило возвращает ошибку «403 Forbidden»

3. Исключение ошибки 404 в период реорганизации сайта


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

Здесь нам опять поможет модуль Apache mod_rewrite, предназначенный для реализации 301 редиректа. HTTP отсылает браузеру старый адрес, информируя, что у страницы новый адрес URL.

Необходимо дописать в файл .htaccess:

Далее рассмотрим подробнее как работает правило RewriteRule в этом случае:

  • ^semantica.html$ — регулярное выражение, значению которого соответствует старый адрес URL страницы. Значение шаблона: «соответствует началу адреса (^), за которым будет текст ‘ semantica.html’, за которым будет символ окончания адреса ($).»
  • /new_semantica.html — вторая часть описывает, на какое выражение нужно менять. В нашем случае это /new_semantica.html.
  • [R=301,L] — используется 2 флага: R=301 означает «301 редирект на новый URL»; L – флаг для прекращения последующей обработки этого URL адреса.

Разберем подробнее как работает mod_rewrite

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

Чтобы понять как работает RewriteRule, необходимо знать с чем он работает. Для этого рассмотрим, как Apachе получает строку, которая передается на обработку RewriteRule в .htaccess.

Поначалу кажется, что mod_rewrite работает с ссылками, но в случае mod_rewrite htaccess это не так.

На самом деле в RewriteRule передается не ссылка, а путь к файлу.

Из-за своей внутренней архитектуры сервер Apache в момент, когда работает .htaccess, mod_rewrite, может манипулировать путем файла, который должен быть обработан. Это происходит из-за других модулей, которые могли изменить запрос до передачи в модуль . Поэтому в mod _ rewrite передается абсолютный путь файла. А также модуль знает путь до .htaccess в котором заданы правила RewriteRule . Для того чтобы из пути сделать ссылку, модуль отрезает от абсолютного пути часть до .htaccess.

Путь, от которого отрезан .htaccess, передается в первый rewriteRule . Пример :

  • Запрос: //semantica.in/wp-content/themes/semantica/i/sidebar/logo.png
  • Documentroot: /var/www/ semantica.in
  • Путь файла: /var/www/ semantica.in/wp-content/themes/semantica/i/sidebar/logo.png
  • Путь .htaccess: /var/www/semantica.in/ wp-content/.htaccess
  • В первый RewriteRule передается: themes/semantica/i/sidebar/logo.png

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

Пример того, как делать не надо

RewriteRule ^/index.php$ /my-index.php – начинается с /

RewriteRule ^example.com/.* http://www.semantica. in – RewriteRule не анализирует название сайта

RewriteRule index.php\?newspage=([0-9]+) news.php?page=$1 in – аргументы не попадают в RewriteRule

Вот , что из себя представляет htaccess RewriteRule. Надеюсь, было полезно

– Только качественный трафик из Яндекса и Google
– Понятная отчетность о работе и о планах работ
– Полная прозрачность работ

Примеры использования mod_rewrite для перенаправлений и настройки чпу

Несколько примеров использования mod_rewrite на веб сервере apache2 для перенаправления , настройки чпу на веб сайтах использующих php и MySQL , и вставки ключевых слов в url`ы статей, все директивы прописанные в данной статье прописываются в файле .htaccess который обычно находится в корне вашего сайта , хотя в некоторых cms он есть практически в каждой в папке но это уже совсем другая история….

Ниже приведены 5 примеров использования данного модуля:

1) Переделываем «product.php? >

Это простое перенаправление, в котором расширение .php спрятано из адресной строки браузера и динамический УРЛ (с знаком вопроса «?») преобразован в статический адрес

2) Переделываем «product.php? >

Эксперты SEO всегда предлагают показывать главное ключевое слово в УРЛе. В пример Вы можете видеть название продукта в УРЛе.

3) Перенаправление адресов без www URL на адреса с www — редирект

Если Вы введете yahoo.com в браузере, Вас перенаправит на www.yahoo.com. Для проделывания такой же операции на Вашем сайте добавьте следующий код в файл .htaccess:

УРЛ сайта, конечно же, поменяйте на свой. Для чего делать такой редирект? Чтобы избежать дублирования сайта поисковиками с www и без www.

4) Переделываем «yoursite.com/user.php?username=xyz» в «yoursite.com/xyz»

В файл .htaccess добавляем следующие строки:

5) Перенаправление домена на новый поддомен или папку.


Допустим, Вы сделали редизайн на сайте и обновленный сайт находится в папке “new” в корне сайта. То есть новый сайт доступен по адресу “test.com/new”. Перенос файлов из одного места в другое может быть довольно трудоемким процесом, так что просто добавьте следующие строки в файл .htaccess и разместите его в корневой папке:

Теперь при обращение к «www.test.com» все файлы будут браться из “test.com/new”

mod_rewrite: статический ЧПУ-адрес с одной переменной

Итак, в этой статье я говорил, что сайты на PHP и MySQL имеют адреса следующего формата:

Как правило, такие адреса называют динамическими. Вот мы сейчас и займёмся преобразованием динамических адресов в ЧПУ.

Допустим, нужно преобразовать из lis.php? >

То есть в нашем случае получаем следующее:

Теперь вместо адреса lis.php? >

mod_rewrite: статический ЧПУ-адрес с множеством переменных

Рассмотрим такую ситуацию, когда нужно преобразовать адрес с множеством переменных. Например, из lis.php? >

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

mod_rewrite: архивный ЧПУ-адрес

Многие архивы на сайте имеют адрес archive.php?year=2003&month=10. Мы же преобразуем его в archive/2003/10/. Получаем следующую строку:

mod_rewrite: ЧПУ-адрес для тегов

Сейчас теги присутствуют почти на каждом блоге и сайте. Попробуем изменить адрес для тега winter — posts.php?tag=winter в posts/tags/winter/. Имеем следующее выражение:

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

Настройка работы модуля mod_rewrite веб-сервера Apache

Очень часто при администрировании веб-сервера Apache возникает необходимость настройки режимов обработки адресов URL. Например необходимо, чтобы запросы автоматически перенаправлялись с одного адреса на другой. Также, если нужно, чтобы веб-приложения работали на «чистых» ссылках, то для этого также необходима настройка модуля mod_rewrite. В данной статье на простых примерах будут рассмотрены базовые приёмы обработки перезаписи URL, реализуемой модулем mod_rewrite, на основе которых можно легко построить свои собственные правила и режимы обработки ссылок.

Включение модуля mod_rewrite и управление его работой

Обычно модуль mod_rewrite уже имеется в базовой поставке Apache и устанавливать его дополнительно не нужно. Остаётся его только включить. Например, для Ubuntu:

Управление работой самого модуля mod_rewrite осуществляется при помощи файла .htaccess. Этот файл предназначен для активации и задействования директив веб-сервера Apache индивидуально для каждого из виртуальных хостов (или доменов).
Итак, для начала необходимо удостовериться, что Apache разрешает обработку файлов .htaccess. В конфигурационном файле Apache /etc/apache2/apache2.conf директива AllowOverride должна иметь значение All в блоке:

Следует заметить, что вместо «/var/www/html» может быть указан и другой каталог, в зависимости от того, как и где настроено расположение корневого каталога виртуальных хостов Apache. Также необходимо проверить, что в файле /etc/sites-enabled/000-default.conf не содержится лишних директив (а лучше их убрать) AllowOverride, противоречащих тем, что установлены в файле apache2.conf. После сохранения всех изменений необходимо перезапустить веб-сервер:

Далее, в начало файла .htaccess нужно добавить директиву:

Она указывает, что Apache должен использовать модуль mod_rewrite для обработки условий и правил перезаписи URL.
Файл .htaccess может быть создан, как уже отмечалось, отдельно для каждого из виртуальных хостов. Обычно его помещают в корневой каталог, в котором находятся файлы требуемого виртуального хоста. В данном руководстве для расположения файла .htaccess будет использоваться каталог /var/www/html/ для глобальной обработки URL на веб-сервере.

Пример создания простой страницы и перезаписи URL для неё

Для демонстрации работы модуля mod_rewrite по перезаписи URL страницы, можно эту самую страницу создать (в самом простом варианте) и применить к ней (точнее, к её адресу) простой шаблон перезаписи.

Итак, нужно создать файл HTML-страницы hello.html, которая будет размещаться в каталоге /var/www/html/hello.html со следующим содержимым:

Эта страница будет доступна по адресу ip_server/hello.html . Здесь «ip_server»– это IP-адрес сервера, на котором работает Apache. Вместо IP-адреса также можно использовать и доменное имя при должных настройках.

Особенность в том, что эта страница доступна только если вводить адрес, содержащий «hello.html». Любое другое написание, например «hello» приведёт к ошибке 404 — нет такого документа. Чтобы иметь возможность получать доступ к странице hello.html по «hello» нужно всего лишь настроить перезапись адреса. Редактирование файла .htaccess:

После ранее добавленной строки «RewriteEngine on» нужно добавить следующую:

Только после этих изменений в веб-браузере по адресу ip_server/hello страница hello.html будет доступна.

Синтаксис добавленной записи следующий:

  • ^hello$ — это шаблон подстановки, который должен совпадать с частью URL, вводимого в веб-браузере. Здесь символ (^) обозначает начало фразы шаблона, а символ ($) — его окончание;
  • hello.html – это действительный путь к исходной странице hello.html;
  • [NC] – флаг, отключающий зависимость написания URL символами разного регистра.

В результате, теперь страница hello.html будет доступна по следующим адресам: ip_server/hello, ip_server/Hello и ip_server/hello.html.

Таким образом и происходит перезапись URL модулем mod_rewrite по инструкциям из .htaccess.

Применение общих шаблонов перезаписи

Выражения в файле .htaccess, применённые в предыдущей главе — это ничто иное, как правила перезаписи. В общем виде они имеют следующий синтаксис:


Здесь RewriteRule – это, собственно, сама директива, pattern – шаблон, задаваемый регулярным выражением. Он предназначен для поиска подстроки. Далее, substitution – это целевой действительный URL. А flags – флаги опций, которые задают определённое специфическое поведение правил.

Самым наглядным и общим примером является перезапись (точнее, упрощение) строки дополнительного запроса. Они используются веб-приложениями для передачи параметров скриптам, по которым нужно получить соответствующий результат. Строки запроса начинаются с символа «?» и заканчиваются символом «&». Например:

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

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

  • простая замена;
  • группирование и сопоставление;
  • сопоставление наборов символов;

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

В результате подстрока URL «results.php?item=shoes&season=summer» будет переписываться строкой «shoes/summer».
Второй случай используется, когда нужно оптимизировать используемое правило так, чтобы оно являлось универсальным для разных строк запросов, т. е. с разными параметрами. Для данного примера пусть требуется, чтобы правило обрабатывало строку запросов для нескольких сезонов, а не только для «summer». Для этого нужно сначала определить набор самих параметров, которые должны разделяться символом вертикальной черты «|». После этого можно в регулярном выражении ссылаться на эту группу параметров, используя переменную $1, где «1» — это номер набора. Например:

Сопоставление набора символов используется обычно, когда нужно, чтобы пользователи могли открывать чистые ссылки любых других разделов сайта, а не только «shoes», как в данном примере. Для этого нужно:

  1. составить регулярное выражение, определяющее все буквенные и цифровые символы, которые могут повторяться неограниченное число раз. Такое выражение заключается в квадратные скобки, объединяемыми знаком плюса «+»;
  2. это выражение нужно заключить в группу (в круглые скобки) и присвоить его переменной $2 – группа №2.

В результате получится следующее правило:

Полученное правило перепишет URL:

в следующую чистую ссылку:

Задание условий RewriteCond для работы правил

Если задать определённое условие с помощью директивы RewriteCond, то если оно выполняется, Apache запустит выполнение правила, следующего сразу за этим условием. Синтаксис RewriteCond следующий:

Здесь tststr – строка, с которой сравнивается условие. А condition – шаблон, с которым сравнивается строка, заданная в tststr. Дополнительные параметры задаются с помощью флагов flags.

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

Здесь выражение % выполняет проверку строки запроса. Далее, оператор (!), означающий условие «не», предписывает, что отсутствие требуемого в запросе файла (-f) должно указывать Apache запускать в обработку следующее за этим условием правило перенаправления. Далее выполняется само правило переадресации, которое перенаправляет все запросы на страницу /admin/home .

Пример блокировки всего трафика, кроме поступающего с определённого IP-адреса:

Здесь флаг «F» запрещает доступ, а флаг «L» – указывает, что данное правило должно выполниться последним.

Для обратного эффекта, т. е. для разрешения запросов с любых IP-адресов кроме 12.38.57.123 нужно перед регулярным выражением записи IP-адреса в определении условия убрать оператор «не» — символ восклицательного знака (!):

Заключение

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Apache Mod Rewrite. Правила и примеры

Модуль mod_rewrite предназначен для использования правил перенаправления запросов к Apache по условиям. Например для создания ЧПУ (как еще называют псевдостатики) и прочих редиректов, ограничения доступа, подмены параметров в URL. В статье приведены правила и частые примеры использования mod_rewrite Этот модуль был придуман и написан еще в апреле 1996 и эксклюзивно подарен The Apache Group в июле 1997.

Активация модуля

Чтобы активировать этот модуль необходимо выполнить команду:

Или создать символическую ссылку файла rewrite.load :

что, в принципе, одно и то же. Также необходимо разрешить использование mod_rewrite для virtualhosts ( All или FileInfo ):

Пример .htaccess

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

Синтаксис mod_rewrite

Способы преобразования

  1. RewriteCond — условие, при выполнении которого будет проверяться следующее правило. Пример, проверки на тип браузера (если Firefox то правило RewriteRule расположенное ниже сработает):
  2. RewriteRule — подменить URL согласно RegExp выражению;

  3. RewriteMap ;

Правила преобразования

Правило преобразования URL содержит 2 выражения разделённые пробелами или табом ЧТО (условие сравнения) КУДА (адрес назначения) перенаправить. Правила преобразования будет проще понять из следующего синтаксиса:

При описании УСЛОВИЯ СРАВНЕНИЯ доступны переменные сервера, окружения, HTTP-заголовки, время и запросы к внешним базам данных. Например для доступа к переменной сервера HTTP_HOST используется такая конструкция: % .

Запомните важные моменты:

  • URL перенаправления всегда задаются относительно каталога, в котором расположен .htaccess ;
  • Описывая путь к файлу (каталогу) первый слэш указывать не нужно;
  • При описании правила преобразования разделять условия «ЧТО» и «ЧЕМ» заменяется можно и пробелом и табуляцией;
  • Файлы всегда имеют больший приоритет чем правила перенаправления! Например если есть каталог module/ , а в этом каталоге файл page.html , то не получится перенаправить http://domain.com/module . Поскольку Apache наталкивается на каталог module/ и не будет обрабатывать ваше правило.
  • Возможны некоторые ограничения регулярных выражений ( PCRE ) до Apache 2.0 . Лучше использовать такие аналогии: \d как 0-9 , \w как a-zA-Z_- etc..;

Дополнительные параметры

В доп. параметрах устанавливаются флаги (несколько параметров записываются через запятую):

  • L — аналог оператора break, прервать проверку следующих правил;
  • NC — не учитывать регистр при сравнении условий;
  • OR — если это условие не выполняется, проверяется следующее за ним;
  • U — проверка существования URL;
  • F — проверка существования файла;
  • QSA (query string append) — добавлять строку запроса (все, что после ‘?’)
  • Еще флаги;

Примеры

Перенаправить все запросы media/* в другой каталог uploads/media/ :

Запрос вида http://site.net/shop/50/ будет рассматриваться сервером как http://site.net/index.php?dir=shop&s=50 :

Запретить доступ для IP адресов 89.19.99.99 и 156.68.54.122:

Перенаправление на информационную страницу (при обновлении например):

Передать входящие GET параметры можно так:

#apache, #rewrite, #redirect

Сообщения

Україна — «50 відтінків кавового» На корпоративі метеорологів було від 5 арбузовому 10 гостей. Місцями арбузовому 12. Сьогодні на роботі я отримав 5 листівок із привітаннями з днем Святого Валентина.
Шкода, що глухому нашому колективі немає жінок.

Краще сім разів покритися потом, ніж один раз інеєм! Хірург — щось середнє між терапевтом і патологоанатомом. Також пропоную почитати — Чому людей обєднують спільні мрії, детальніше тут http://belosnet.dn.ua/chomu-lyudej-obyednuyut-spilni-mriyi/, тут багато цікавого. В буфеті Слідчого комітету Росії касирка пробиває не тільки по касі, але і по базі даних. Одружується треба на німий сироті! — Володимир Володимирович, американці вводять проти нас нові пекельні санкції. Чим ми відповімо?
— Новими райськими контрсанкциями. Вино і жінки — це для вас не горілка і баби! Все, що не робиться — до кращого. Просто не завжди до вашого.

Бажаю звернути вашу увагу на або, що для виконання команди «Кругом!» треба розвернутися півколом. Ми живемо в брехні! Кримінальникам-атеїстам на спині наколюють просто вдома. Люди діляться на тих, хто п’є чай без цукру, і тих, хто п’є без чаю.

Я вже глухому тому віці, коли і сковорідка відмінний подарунок. Глухому Москві пройшов «Марш материнського гніву». Кілька поліцейських отримали ременя. — А правда, що тату на все життя?
— Ні, трошки довше. Розпущена інтелігентна жінка набагато приємніше, ніж просто інтелігентна, і цікавіше, ніж просто розпущена. Їсти чи не їсти — ось глухому ніж головне питання жіночої логіки. Вечірні новини завжди починаються зі слів «Добрий вечір!» а потім починається розповідь — чому це не так. — Чому блондиночкам не дають обідньої перерви?
— Бо надто довго вчити їх заново.

— Тато, ти можеш вирішити за мене завдання з математики?
— Ні, синку, це буде некоректно.
— Гаразд, ти хоча б спробуй! Фахівці гідрометеоцентру Рязані попереджають — не такі вони вже й фахівці! Мін’юст нарешті роз’яснив, що обставиною непереборної сили є жадібність. Дружина глухому молодості так танцювала, що тепер тільки допікає. Якщо існують домашні господині, значить, десь повинні бути й дикі. 3 недели назад

Примеры использования mod_rewrite

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

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

Важно! Для того чтобы mod_rewrite работал, необходимо в заголовок файла .htaccess добавить:

Обратите внимание, что правила применяются для каталога, в котором расположен файл .htaccess и зависят от наличия файла .htaccess в корневой папке.

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

  1. Жесткий запрет посещений веб-сайта для робота поисковой системы Google (при вызове возвращает ошибку 403):

Другой вариант возвращает вместо ошибки 403 (FORBIDDEN) ошибку 404 (NOT_FOUND)

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

и для определенных типов файлов:

  1. Автоматическое исправление ошибки при наборе адреса веб-страницы пользователем (связи с неоднозначностью записи расширения HTML файлов (.htm или .html)):
  1. Если необходимо запрос любой страницы сайта отправлять на одну (при вызове возвращает ошибку 403), но в то же время нужно оставить его открытым для поисковых машин. То есть для клиентов сайт закрыт, а для индексации — открыт:
  1. Перенаправление несуществующих URL на другой веб-сервер:
  1. Перенаправление сайта с одного домена на другой после переноса домена (Например, с domain.com на domain2.com):

Подробная информация об использовании .htaccess дана в официальной документации Apache.

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

Другие документы на эту тему

Тарифные планы «Виртуальный хостинг» — от размещения статических HTML-страниц, до поддержки PHP, Python, CGI скриптов (Shell, Perl), SSI, Ruby. В рамках тарифных планов предоставляется доступ к серверам баз данных MySQL или PostgreSQL.

Цукерберг рекомендует:  Взлом - Нужен спикер по теме компьютерной безопасности
Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих