Зачем нужен файл htaccess, где он находится и за что отвечает
Доброго времени суток, дорогие читатели!
Сегодня я расскажу про файл htaccess, который выполняет очень важную роль на сайте. Именно через этот конфиг вы будете настраивать различные редиректы, прописывать используемый протокол и выполнять другие важные задачи. Без него нормальный ресурс просто не будет работать должным образом.
В материале мы поговорим об этом чуть подробнее. Также я расскажу о том, как создать и настроить этот конфиг. Давайте начинать!
Что такое htaccess
Этот файл очень важен для любого сайта, потому что именно с его помощью воспроизводится настройка очень важных параметров. Для статейных ресурсов этот конфиг тоже имеет очень большое значение, потому что тут есть определенные функции, которые помогают корректировать работу ресурса.
Если вы будете оптимизировать свой ресурс под поисковые системы, то тщательная настройка htaccess станет неотъемлемой частью данного процесса. Именно с помощью этого файла вы сможете настраивать конфигурацию сервера, на котором расположен ваш сайт. Делается это при помощи специальных команд, которые вносятся напрямую в конфиг.
Htaccess – это обычный конфигурационный файл, где содержатся настройки определенного типа. Обычно там размещают информацию о редиректах (например, переадресацию на защищенный протокол https), параметры сервера и компонентов, которые на нем установлены и т. д.
Также с помощью него вы сможете настраивать доступ к файлам сайта, изменять параметры перенаправлений на страницу 404 (когда на ресурсе нет какого-то документа, он должен отдавать страницу с ошибкой 404, где будет указана эта информация), блокировать определенные IP-адреса и т. д.
Чаще всего htaccess создается автоматически. Например, если вы установите WordPress на виртуальный хостинг, то этот конфиг появится сам собой, так как платформой предусмотрено использование параметров, которые занесены в базовую версию этого файла. Обычно там указываются стандартные рекомендованные параметры хостинга для комфортной работы CMS.
При желании вы можете изменить эти параметры, но если что-то сделать не так, то ресурс может попросту перестать работать. Именно поэтому этот небольшой файлик должен настраивать понимающий человек. Он должен четко понимать, за что отвечает каждая строка конфигурационных команд.
В других платформах и CMS htaccess тоже очень часто создается автоматически. Именно с теми параметрами, которые нужны для комфортной работы системы.
Если говорить конкретно о WordPress, то чаще всего прямая настройка данного конфига не требуется. Стандартный вариант подходит для большинства ресурсов. Иногда изменения в этот конфиг вносят различные плагины или сам WordPress, если вы будете менять настройки. Сам же пользователь обычно и не подозревает о том, что у него есть такой конфиг.
В некоторых случаях этот файл нельзя изменить. Обычно подобное встречается на дешевых маломощных серверах, где владельцы пытаются вытрясти со своих пользователей деньги даже за возможность редактирования htaccess. Сайт не будет адекватно работать на таком хостинге, потому что в некоторых случаях может понадобиться изменение конфига.
А если этого будет сделать нельзя, то вы просто не сможете установить какой-то плагин, настроить редирект или прописать любой другой параметр. Лучше всего найти нормальный хороший хостинг по приемлемой цене, чтобы подобных проблем не возникало.
Подведем промежуточные итоги, чтобы вам было понятнее. С помощью htaccess вы сможете:
- Настраивать редиректы (переадресацию) на различные адреса вашего ресурса. Пользователь будет заходить по одному какому-то адресу, его будет переадресовывать на другой. Полезно, когда у документа (статьи или страницы) сменился URL, и вы не хотите, чтобы пользователи получали ошибку 404 при обращении на этот адрес.
- Настраивать редиректы на другие домены. Это может понадобиться в случае, если вы хотите перенести свой ресурс на другой домен, но при этом не хотите терять существующую аудиторию, которая попытается перейти на сайт по старому домену. Через htaccess вы сможете настроить простую переадресацию, которая будет переводить пользователей на нужный вам новый домен.
- Сделать переадресацию на домен с www или без него. По умолчанию многие проекты доступны по нескольким вариантам одного домена. Например, условный site.ru можно открыть как просто , так и . Это порождает лишние дубли и очень негативно влияет на поисковое продвижение. С помощью конфига вы сможете настроить переадресацию на основной вариант.
- Сделать редирект на https. После установки SSL-сертификата ваш ресурс будет доступен уже по четырем разным вариантам адреса. К предыдущему пункту прибавится еще версия с https-протоколом. Htaccess поможет вам сделать основной только одну версию. То есть сделать редирект сразу же на нужный вариант адреса с нужным протоколом.
- Настроить кэширование файлов вашего ресурса. Этот шаг необходим для ускорения работы вашего проекта. С помощью данного конфигурационного конфига вы сможете сделать кэширование. Тогда вся информация с сайта будет сжиматься до оптимальных размеров и подаваться пользователям в упрощенном виде. Им не придется всегда заново нагружать ваш сервер и скачивать все файлы. Кэширование очень важно для SEO, потому что оно помогает ускорить ресурс. Также кэширование помогает снизить нагрузку на хостинг.
- Сделать ЧПУ-ссылки. Обычно все файлы ресурса имеют ссылки, которые не так-то просто запомнить. Это могут быть какие-то последовательности из символов или что-то другое. С помощью htaccess вы сможете сделать понятные человеку варианты ссылок, которые будут состоять из слов на латинице. В WordPress для создания ЧПУ вам достаточно просто активировать нужный параметр в настройках, в самописных же сайтах придется делать это самостоятельно через этот самый файлик.
- Блокировать доступ с определенных IP-адресов. Очень часто на сайты нападают разного рода злоумышленники, которые спамят флудом, пытаются вывести этим хостинг проекта из строя или просто активируют большое количество ботов, которые отправляют различный рандомный текст в комментарии к записям или в формы сбора заявок. Используя определенные команды, которые будут заноситься в этот конфиг, вы сможете блокировать IP-адреса спамеров, и они больше не смогут заходить на сайт. Также вы сможете настроить закрытый ресурс, который будет доступен только определенным IP-адресам. То есть это такие своеобразные белые и черные списки.
- Регулировать поведение поисковых роботов на сайте. Обычно параметры для поисковиков настраиваются через robots.txt, но в htaccess вы также можете указать несколько настроек, которые помогут вам управлять поведением роботов поисковых систем.
- Настраивать доступ к определенным файлам и папкам. Вы можете устанавливать пароли на определенные директории и файлы. Это поможет вам установить контроль посещаемости и делать документы видимыми только для ограниченного количества людей. Подобные функции помогают вам защитить свой проект от атак хакеров и повысить уровень безопасности.
- Устанавливать более тонкие настройки сервера. С помощью конфигурации вы сможете устанавливать настройки сервера. Например, если у сервера есть какие-то лимиты на загрузку конфигов, с помощью htaccess вы сможете изменить их. Также вы сможете менять и другие параметры сервера, используя для этого различные команды.
В общем, у htaccess есть и несколько других возможностей. Например, вы сможете настроить индексацию, изменить код сайта и т. д. По сути, это очень важный конфиг, который определяет работу сервера. Но это не основной набор настроек. Есть и другой файл, который содержит в себе уже все параметры сервера. Доступ к нему имеют только администраторы хостинга. Простой вебмастер не сможет получить к нему доступ.
Но с помощью htaccess он все же сможет влиять на работу сервера, используя для этого простые команды. То есть данный файл нужен как раз для вебмастеров, которые хотят что-то настроить на арендованном ими хостинге. Доступ к основным параметрам не требуется, вебмастер не сможет поломать сам сервер и навредить кому-то еще в случае, если он использует виртуальный хостинг.
Все параметры конфига имеют определенный вид: ключ и определенное значение, которое и определяет настройки для того сайта, где находится этот конфиг. Обычно htaccess помещается прямо в корень ресурса. Если переместить его в какой-то каталог, то настройки будут действовать исключительно на него. То есть параметры, которые заносятся в этот конфигурационный документ, действуют на те файлы и папки, которые расположены с ним в одном месте.
Помещаем документ в корень, и он действует на весь проект (все папки и их содержимое), помещаем куда-то внутрь, и будет работать только с теми папками и файлами, которые расположены с ним на одном уровне или ниже.
Где расположен htaccess
Обычное дефолтное расположение этого документа – корень сайта. Каких-то примеров локального использования конфига только для определенных папок внутри сайта я не видел. Чтобы обнаружить этот документ, вам достаточно зайти в файловый менеджер вашего хостинга или же воспользоваться FTP-клиентом.
Htaccess будет расположен прямо в корне (/public_html, если это виртуальный хостинг). Его можно будет открыть с помощью любого текстового редактора.
Для редактирования этого конфига, конкретно на хостинге Timeweb, вы должны просто кликнуть по нему несколько раз. Он откроется во встроенном редакторе, вам останется просто изменить параметры, удалить или добавить лишние строчки.
Также вы можете просто скачать его и открыть при помощи любого редактора на вашем компьютере.
Но если вы хотите изменить этот файл на WordPress, то вам совсем не обязательно заходить на хостинг и открывать его там. Достаточно будет просто зайти в настройки плагина Yoast SEO, перейти во вкладку “Инструменты”. Содержимое конфига будет доступно прямо там, в специальном окне. Вы сможете легко его менять, и все изменения будут автоматически заноситься в настоящий конфиг.
Такой вариант можно считать более оправданным, потому что никаких лишних забот тут нет. Но стоит заметить, что далеко не все используют плагин Yoast SEO. В других SEO-плагинах также есть похожие возможности.
Этот файл не всегда есть на молодых проектах. Если вы совсем недавно создали свой ресурс, то вполне возможно, что вы просто не обнаружите этот документ на своем хостинге. В таком случае вы можете просто создать его самостоятельно. У этого конфига нет расширения, только название – .htaccess.
Его можно сделать при помощи встроенных инструментов (в том же файловом менеджере, например) либо же создать конфиг на своем компьютере и уже после загрузить на хостинг при помощи инструментов или FTP-клиента.
В некоторых случаях этот документ нельзя будет загрузить или создать прямо на хостинге. Это значит, что у этой конкретной компании данный конфиг использовать нельзя. Вы можете убедиться в этом, если напишете в техническую поддержку. Настройки таких серверов менять нельзя, как правило, они устанавливаются на самый минимум.
Возможно, в будущем у вас всплывут и другие проблемы, поэтому я рекомендую менять хостинг, если он не дает возможность вам настроить дополнительные параметры.
Создаем htaccess на компьютере
Для создания такого документа вы можете использовать любой текстовой редактор, который установлен на вашем ПК. Можно воспользоваться даже простым Блокнотом, который установлен в качестве стандартного софта на Windows.
Кликните правой кнопкой мыши на свободном месте рабочего стола, после чего выберите “Создать” – “Текстовый документ”. На рабочем столе появится файлик с названием “Новый текстовой документ”. Откройте его, но ничего не вводите.
Далее, просто наведите курсор в левый верхний угол, найдите там пункты меню “Файл” – “Сохранить как”. Откроется окно сохранения, где будет необходимо выбрать папку для сохранения (можно сохранить прямо на рабочий стол), ввести название и выбрать тип файла.
В поле “Имя файла” вводим “.htaccess”. В раскрывающемся меню “Тип файла” выбираем “Все файлы”. Далее, жмем на кнопку сохранить. Все, документ создан.
Обратите внимание, что он не должен иметь расширение. То есть не должно быть, например, “.htaccess.txt”.
Если все хорошо, вы можете загружать его на хостинг. Либо же оставить для занесения каких-то параметров.
Примеры команд
Теперь я расскажу о наиболее популярных примерах использования команд у этого конфига. Они могут использоваться как для HTML-сайта, так и для проекта на платформе. Каждая команда может сломать ваш проект, поэтому будьте максимально аккуратны при настройке.
Переадресация
С помощью переадресации вы сможете отправлять пользователей с одного адреса на другой. Команда выглядит таким образом.
Redirect 301 /старый_адрес.html http://www.site.ru/новый_адрес.html
Вы можете менять значения, которые выделены жирным. Например, вместо 301-го редиректа вы можете использовать другой. Всего есть 4 различных значения.
- 301 – документ перемещен навсегда.
- 302 – документ перемещен временно.
- 303 – смотрите другие документы ресурса.
- 410 – документ был безвозвратно удален.
Mod_rewrite – настройка сложных редиректов
Это специальный модуль, который позволяет настраивать переадресацию на какой-то конкретный протокол или домен определенного вида (с www или без него, к примеру). Данный модуль работает только на серверах Apache, поэтому далеко не каждый хостинг будет это поддерживать.
- Основное зеркало.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.site\.ru$ [NC]
RewriteRule ^( *)$ _/$1 [R=301,L]
Вместо site.ru должен быть ваш домен. Если вы введете это в конфигурационный документ, ваш сайт будет перенаправлять пользователей с www на обычную версию ресурса. Допустим, человек попытается перейти на www.site.ru/stat1, его сразу же перекинет на site.ru/stat1. Вот так это и работает.
- Редирект на https.
Если вы установили SSL-сертификат и хотите, чтобы все страницы проекта открывались через защищенное соединение, вам необходимо просто прописать эти строчки.
RewriteEngine On
RewriteCond %(HTTPS) !on
RewriteRule (.*) https://%(HTTP_HOST)%(REQUEST_URL)
Менять в этом коде ничего не нужно, все будет работать именно в таком виде.
- Редирект на другой домен.
Если вы решили сменить домен и хотите, чтобы на ваш проект могли переходить по старому адресу, то вы можете просто настроить перенаправление с помощью этих строчек.
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.site.ru\.ru$ [NC]
RewriteRule ^(.*)$ /$1 [R=301,L]
Вы можете изменить название сайта, добавив или убрав определенные варианты. Например, вы можете настроить редирект сразу на сайт с https. Также вы можете изменить домен на вариант без www.
- Запрет индексирования для определенного поискового робота.
С помощью этих строчек вы можете запретить поисковому роботу индексировать ваш сайт. Просто пропишите следующие строки.
RewriteEngine on
RewriteCond %{USER_AGENT} Googlebot
RewriteRule .* — [F]
Вместо Googlebot вы можете ввести название любого другого поискового робота. При обращении к вашему домену поисковый робот будет получать ошибку. Проиндексировать сайт он никак не сможет.
Заключение
Как видите, htaccess – это очень важный файл, который помогает контролировать работу сервера. Это не основной конфигурационный документ, но с его помощью также можно настраивать определенные параметры оборудования. Также при помощи этого документа вы сможете настраивать различные редиректы, без которых сейчас не обойдется ни один нормальный сайт.
Настройка этого конфига – дело важное и требующее определенного понимания. Если вы что-то неверно введете, то велика вероятность, что ваш ресурс просто перестанет открываться. Он будет просто выдавать ошибку, и для исправления вам придется заходить на хостинг и сбрасывать все изменения этого документа.
Если вы вебмастер, который интересуется заработком на информационных сайтах, то я советую заглянуть на курс для вебмастеров от Василия Блинова. В этом обучающем материале вы сможете найти подробные уроки о том, как создать свой собственный проект под монетизацию, как оптимизировать его под поисковые системы и организовать всю работу своего сайта.
что это, для чего нужен, пример блокировки, настройки, кодировки и переадресации
Мы увеличиваем посещаемость и позиции в выдаче. Вы получаете продажи и платите только за реальный результат, только за целевые переходы из поисковых систем
Получи нашу книгу «Контент-маркетинг в социальных сетях: Как засесть в голову подписчиков и влюбить их в свой бренд».
Подпишись на рассылку и получи книгу в подарок!
Файл .htaccess – это служебный документ, содержащий расширенные настройки для работы с веб-сервером Apache и аналогичными. Позволяет вносить изменения в работу сайта.
Где искать .htaccess
Файл лежит в корневой папке. Таким образом он действует на все содержимое вложенных папок. Когда для какого-то каталога требуется сделать отдельные настройки, в него можно поместить еще один htaccess.
Он будет приоритетным для данного каталога по сравнению с общим файлом, лежащем в корневой папке.
Доступ к содержимому сервера осуществляется через любую программу-клиент типа Total Commander, FileZilla. Если у вашего хостинг-провайдера в системе управления есть файловый менеджер, там также откроются все файлы.
Для чего нужен .htaccess
Основное предназначение файла .htaccess – настройка сайта и каталогов с учетом особых требований. Он позволяет изменять настройки сервера без прав администратора. Это дает более гибкие возможности сеошникам и программистам.
Он разработан в дополнение к основному файлу настроек httpd.conf. У последнего – жесткие ограниченные права доступа в связи с тем, что он содержит значительное число параметров, влияющих на жизнеспособность вебсервера.
Корректировки, внесенные в файл-помощник, применятся сразу после заливки, в то время как для актуализации изменений основного файла потребуется перезагрузка сервера.
Файл дополнительной конфигурации .htaccess позволяет делать следующие действия:
- Настраивать редиректы. Например, перенаправление со страниц старого сайта на новые при смене домена.
- Выполнять переадресацию с www на без www, либо после установки ssl сертификата на https.
- Обрабатывать ошибки, в том числе 404 с подменой нужной страницей.
- Ускорять работу сайта с помощью кэширования .htaccess.
- Формировать ЧПУ – урлы (URL), интуитивно понятные пользователям.
- Менять кодировку страниц.
- Осуществлять допуск к файлам с использованием аутентификации.
Как создать htaccess и сделать это правильно
Нужно открыть любой текстовый редактор, например, Notepad ++ (можно скачать в свободном доступе).
Создать новый файл, задать кодировку через соответствующий пункт меню.
В разделе «Правка» – «Формат конца строки» изменить формат, как показано на скриншоте
Сохранить через пункт меню «Сохранить» как или ctrl+S. В появившемся окне выбрать директиву для сохранения «All types» (все типы),
Имя файла вписать .htaccess. Сохранить.
Как убедиться, что создали правильный документ? Загружаете файл на сервер в корневую папку и смотрите, не упал ли он. Если нет ошибки 500, все хорошо и можно заполнять дальше.
Если ошибка высветилась, пройдите еще раз путь заново, сверяя каждый этап. Причины могут быть в формате переноса строк или кодировке .htaccess – чаще всего «ругается» именно на нее.
Впоследствии можно использовать любой текстовый редактор, если вы пользуетесь Total Commander, выберите файл и нажмите F4.
Примеры htaccess
Рассмотрим наиболее популярные и востребованные опции.
Переадресация через директиву Redirect.
Так называемый 301-й редирект. Прописывается при переезде веб-сайта на новый домен. Нужен, чтобы не потерять аудиторию, которая перейдет по старому адресу сайта.
Перенаправление домена с www на без www.
Применяют, когда нужно склеить домены, чтобы трафик шел на главное выбранное зеркало при вводе любого варианта адреса в строку поиска.
Соответственно, если главное зеркало с www
Редирект со страниц со слешем на без слеша.
Один общий редирект на без www и с «/».
Переадресация htaccess адреса site.ru/index.php на основное зеркало site.ru
Редирект на разные страницы в зависимости от IP-адреса.
Можно задать страницу, куда перенаправят конкретного посетителя с учетом его айпишника.
Постранично с одного домена на страницы другого url.
Редирект с протокола http на https.
Блокировка IP через .htaccess.
Можно задать диапазон.
Что учесть при настройке htaccess
Перед тем как править файл, сделайте копию. Если что-то испортите, сможете откатить на стартовую.
Особенности синтаксиса:
- для закомментированной информации ставьте значок #;
- в доменах всегда указывайте протокол http:// или https://;
- путь к файлам прописывайте от корня сервера.
В этой статье мы рассказали, что это такое – htaccess и как правильно с ним работать. Помните, что существуют разные вариации протокола для различных CMS, поэтому всегда обращайте внимание на эту особенность.
Что такое файл htaccess и зачем он нужен?
Что такое файл htaccess и зачем он нужен?
Давайте сейчас в этом разберемся.
Наверняка, когда вы работали со своим сайтом, который может располагаться на каком-то хостинге или веб-сервере, вы могли встретить в различных папках файл, который имеет название .htaccess.
Что же это за файл?
По сути, это простой текстовый файл, который вы можете создать самостоятельно в любой папке на вашем веб-сервере.
Как правило, файл htaccess создается в корневой папке вашего сайта, но также он может встречаться в любой другой папке.
Создается этот файл как обычный текстовый файл. Вы можете попробовать создать его на своем веб-сервере. Если этот файл будет пустой, то на работу вашего веб-сервера это никак не повлияет.
Таким же образом его можно удалить, как простой текстовый файл.
Казалось, бы, что это простой текстовый файл, но какую смысловую нагрузку он несет?
Но, важно!
1. Файл htaccess будет работать только на веб-сервере Apache.
Веб-сервер — это специальная программа, к которой браузер обращается, программа обрабатывает данные и выдает ему какой-то результат (ответ в виде HTML-страницы).
Веб-сервер — это посредник между посетителем сайта и теми файлами, которые располагаются на этом сайте. Веб-сервер эти файлы обрабатывает, подготавливает и выдает клиенту.
2. Даже если у вас установлен веб-сервер Apache, на этом веб-сервере должна быть специальная разрешающая настройка, что в папках этого веб-сервера разрешается использовать этот файл.
Теперь переходим к тому, что же это такое.
htaccess — это просто настройки работы веб-сервера Apache.
Это простой текстовый файл, который содержит определенные текстовые команды, обрабатывая которые, веб-сервер Apache ведет себя каким-то определенным образом.
Для веб-сервера Apache есть 2 основных варианта как мы можем настроить его работу.
Во первых, мы можем сделать это в корневой папке самого веб-сервера, в той папке, в которой установлен сам веб-сервер Apache. Там есть специальный файл, который называется httpd.conf.
Это главный настроечный файл, который задает настройки самого веб-сервера. Что, как он будет работать, в каких случаях, какие результаты выдавать и.т.д.
Но, этот файл для начинающих пользователей может показаться слишком сложным. Поэтому доступ к этому файлу открыт не для всех.
Разработчики веб-сервера Apache придумали такое решение создавать в папках вашего сайта отдельный файл, который называется htaccess.
Этот файл позволяет вам также в нем записать какие-то настроечные команды для веб-сервера Apache, которые будут вносить изменения и перетирать те настройки, которые есть в этом файле.
С помощью файла htaccess мы можем настраивать веб-сервер и говорить ему то, как он должен вести себя в тех или иных ситуациях. Самая главная особенность в том, что мы можем это сделать даже без перезагрузки веб-сервера.
Что мы можем делать с помощью файла htaccess?
1) Можно настраивать перенаправления для вашего сайта. Например, пользователь перешел на ваш сайт с приставкой www и мы перенаправляем его соответственно на ту же самую страницу на которую он перешел, только уже без приставки www.
Также можно сделать редирект или перенаправление если пользователь обратился к вашему сайту по протоколу http, мы можем перенаправить его на версию сайта по протоколу https.
Если он обратился на какую-то несуществующую страницу, мы можем перенаправлять его соответствующей командой на какую-то существующую страницу.
2) Запрещать доступ к какому-то файлу папке, адресу и.т.д.
3) Подсказать браузеру как нужно себя вести при возникновении каких-то ошибок.
Например, пользователь обратился к какой-то несуществующей странице, появилась ошибка 404, что ему нужно делать? Как веб-серверу поступать в этом случае? Это все можно настраивать файлом htaccess.
Такой вот смысл использования этого файла, ничего сложного в этом нет. Главное освоить синтаксис команд, которые в нем могут использоваться.
Главный смысл файла htaccess в том, что это просто настроечный файл для веб-сервера Apache. Вот, собственно говоря, и все.
Попытка номер раз создать почти идеальный htaccess / Хабр
- Google выше ранжирует сайты, которые загружаются быстрее. - Если на eBay или Amazone увеличить время загрузки страниц на 9% они теряют 1% прибыли. - Сделать свой сайт быстрее, чтобы сэкономить на клиентском трафике и на числе обращений к серверу.
.htaccess — наш герой
Профессионалы знают, что такое htaccess.
Тем кто собираются уйти с народ.ру на php-хостинг только предстоит узнать, что это такое.
Те кто только что установил свои первые jooml’у или wordpress срочно должны узнать о нашем герое — htaccess
Зачем нам .htaccess ?
Представьте, что вы купили себе хостинг и кажется, почти обрели счастье. Но однажды (а может быть дважды, а может и трижды) ваш сайт перестает отвечать на запросы. Начинает медленно грузиться и вообще вести себя странно. А виртуальный хостинг это такая хитрая штука, что помимо вашего сайта на этом сервере находится ещё два десятка других сайтов. Все они разные по мощности, организованности и трафику. И когда ваш сосед по случайности, а может и умыслу запускает на своем хостинге сложные или избыточные в алгоритмах скрипты, это отзывается и на вас.
Или другой пример. Скажем ваш ресурс начинает набирать популярность, но переезжать на выделенный сервер ещё рано, а мощностей VPS уже не хватает. Вас очень может выручить htaccess.
А ещё htaccess может решить некоторые вопросы с безопасностью вашего сайта.
А ещё…
Оказывается в интернете много различной противоречивой информации относительно того как использовать .htaccess. Пришлось долго и нудно экспериментировать, чтобы понять что истинно, а что ложно. В большинстве случаев авторы советов в своих блогах забывают упомянуть, что для работы определенных условий нужен тот или иной модуль Апача.
Впрочем хватит слов, пора к делу. Попробуем создать почти идеальный .htaccess
1. Первой строкой задаем основные опции:
Options All -ExecCGI -Indexes -Includes +FollowSymLinks
Использовать опции очень удобно, когда у вас нет доступа к конфигурированию Апача или нужны разные настройки Апача для разных сайтов на одном сервере.
Опция -ExecCGI запрещает запуск CGI скриптов. Лучше разрешить только для конкретных папок. Повысит безопасность.
Опция -Indexes запрещает показывать содержимое каталогов, если в них нет индексного файла. На виртуальном хостинге обычно включена по умолчанию. Изменив минус на плюс +Indexes можете наоборот разрешить просмотр содержимого каталога (или каталогов).
Опция -Includes запрещает SSI. Если не знаете, что это — запрещайте (Можно поЯндексировать(!) по запросу Server Side Include если хотите узнать об этом побольше). Можно использовать опцию IncludesNOEXEC, которая разрешит использовать SSI без запуска скриптов.
Опция +FollowSymLinks позволяет использовать символические ссылки на файлы или каталоги, не находящиеся в пределах корня вашего сайта.
Необязательно полностью перечислять все опции в дочерних .htaccess если они не изменяются. Достаточно указать (переназначить) только те опции и директивы, которые изменяются. Остальные опции также унаследуются от родителя.
ПримерСкажем, у вас есть вот такой путь /site/folder_one/subfolder/other/
В файле /site/.htaccess вы указываете:
Options -Indexes
Allow from all
В файле /site/folder_one/.htaccess указываете:
Deny from all
В файле /site/folder_one/subfolder/.htaccess указываете:
Options +Indexes
Allow from all
Получиться вот что:
В папке site будут показываться файлы любого содержания, если только к ним напрямую обратиться. Или индексный файл, если не явного обращения к одному из файлов. В случае отсутствия индексного файла получена 403 ошибка.
К папке folder_one доступ закрыт. Даже если знать имя файла и набрать его в адресной строке в ответ сервер вернет ошибку 403.
Папка subfolder разрешена для обращений по прямому адресу или же в случае отсутствия индексного файла покажет содержимое каталога. Эти же права распространяться и на папку other.
Если убрать файл ,htaccess из папки folder_one, то она унаследует права от родительской site.
2. Немного SEO (куда же без него)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^black-web
RewriteRule (.*) http://www.black-web.ru/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.black-web.ru/ [R=301,L]
</IfModule>
Обязательно не забыть про условие . Не окажись у хостера данного модуля и ваш сайт станет выдавать 500-ую ошибку. Данный конкретный модуль входить в сборку Апача по-умолчанию. Ну а вдруг… Хостеры и их админы бывают всякие.
В данной части пользы больше для SEO. Модуль rewrite как следует из его названия занимается перенаправлениями (привет Кэпу).
В этой части файла мы указали две склейки: мы склеили ваш_сайт и www.ваш_сайт Даже если пользователь наберет ваш сайт без WWW его перебросить 301 редериктом на www.ваш_сайт.
А также мы избавились /index.php в строке запроса. Если пользователь наберет www.ваш_сайт/index.php его перебросит (снова 301 редериктом) на www.ваш_сайт.
Теперь поисковики не будут путаться между www и не будут дублировать главную страницу в результатах индексирования вашего сайта. Гуглим СЕО склейки домена, если не понимаете зачем это нужно.
3. Кто в папке главный?
Если у вас папке есть файлы index.html и index.php (не знаю, зачем и кому такое было нужно, но не раз видел такое) то как указать серверу кто их них более индексный?
DirectoryIndex index.php
А ещё можно там указать скажем roosso.php и тогда набрав в строке запроса адрес сайт.бла/бла/бла/ вы увидете не index, а roosso
4. Ещё настройки…
<IfModule mod_setenvif.c>
SetEnv TZ Europe/Moscow
</IfModule>
ServerSignature Off
AddDefaultCharset UTF-8
Первая строчка устанавливает часовой пояс. Например в Apache 2.22.22 был баг связанный с этой опцией. Функции времени в php не работали, пока не установишь часовой пояс.
Вторая строка это подпись сервера. Вы их не раз видели на всяких системных страницах типа 500ой ошибки или 403ей. Обычно там какая-нибудь техническая информация и почта вебмастера. Я предпочитаю даже в таких мелочах скрывать данные о софте на сервере. Коллеги параноики меня поддержат.
Угадайте, что делает третья строка?
5. Когда нет доступа к php.ini
С помощью .htaccess мы также можем управлять рядом настроек PHP. На виртуальном хостинге, как правило, нет возможности изменять настройки php.ini. Чаще всего этого и не требуется. Но все же есть ряд опций контроль над которыми может нам быть полезен. Например, увеличить лимит на загрузку файлов, или лимит передачи данным методом POST.
<ifModule mod_php.c>
php_value upload_max_filesize 32M
php_value post_max_size 10M
php_value default_charset utf-8
php_value max_execution_time 200
</ifModule>
Первая строчка разрешить загружать файлы размером до 32 Мегабайт. По умолчанию в php обычно это значение 8 или 16 мегабайт.
Второй строкой разрешаем постинг объемом до 10 мегабайт. По умолчанию это значение обычно 2 Мегабайта.
Третья строка устанавливает кодировку по используемую вашими скриптами. По своей сути она дублирует строку: «AddDefaultCharset UTF-8». Но я чаще прибегаю к установке кодировки именно через php.
Четвертой строкой изменяем лимит времени выделенный на выполнение скрипта. По умолчанию он обычно равен 30 секундам. Но иногда для выполнения каких нибудь сложных обработок требуется больше времени.
6. Типы файлов. Ловкость рук и ни какого мошенничества.
В моей практике случалось пару раз, что после какого либо обновления провайдером софта, слетали типы файлов. Хотя такое редко. За 10 лет, всего два случая. Но иногда мне нужно было заставить html работать как php. А иногда требуется научить апач различать типы файлов, которые ему неизвестно. (Как оказалось Апачу вообще мало что известно из редких типов файлов.) В такой ситуации нас спасет следующий код:
AddHandler application/x-httpd-php .html
AddHandler cgi-script .pl .py .jsp .asp .htm .shtml .sh .cgi
AddType application/x-javascript .js
AddType text/css .css
AddType text/xml .xml
AddType application/octet-stream .doc .mov .avi .pdf .xls
# ForceType application/x-httpd-php
Первая строчка позволит нашим php файлам иметь расширение html, но выполняться как php. Полезно бывает во многих случаях. А в старые добрые когда поисковики индексировали ЧПУ лучше, такая строчка всегда приходила на выручку.
Мы можем переназначить, добавить или подменить любые типы файлов под удобные нам разрешения.
AddHandler application/x-httpd-php .i
Потом переименовать все ваши файлы, изменив расширение на .i (не забыв конечно про ссылки) и адреса файлов у вас на сайте будут не сайт.мой/index.php?uri а сайт.мой/index.i?uri
Например я пишу
AddHandler application/x-httpd-php .roosso
и создаю в корне своего сайта файл alex.roosso внутри обычный php код. Это вроде как страница обо мне любимом. И в адресной строке она будет выглядеть как www.black-web.ru/alex.roosso (ссылка рабочая, можете посмотреть что это так).
Второй строкой указано, какие расширения файлов должны выполняться как cgi скрипты.
Третья, четвертая и пятая строки, на всякий случай уточняют мим-тип файлов с разрешением css, js, xml. Не путайте с присвоением заголовка в ответе сервера на запрос, как это сделано в первых двух строках.
Шестая строчка это участка, нужна если на вашем сайте есть скачиваемый для пользователей контент. Если добавить эту строку, то при обращении к данным файлам им будет предлагаться скачать их на компьютер, а не как это сейчас в современным браузерах куча плагинов, которые даже word открывают в браузере.
Седьмую строку я закомментировал. Это строчка в принудительно-добровольном порядке, будет все файлы с вашего сервера запустить как php. Её лучше использовать лишь в отдельных папках, при необходимости.
7. Знают взрослые и дети, что архивы меньше весят…
Полезно, когда ваши страницы загружаются быстрее. Поэтому люди и придумали архивировать файлы. А потом они ещё подумали и решили, что архивировать можно и страницы на сайтах и картинки. Причем делать это незаметно для пользователя, но существенно снижать трафик и ускорять загрузку страниц. Волшебные слова прозвучали, теперь обсудим, как это можно сделать.
У Апача есть два модуля сжатия. Оба не являются модулями по умолчанию, поэтому необязательно могут присутствовать у вашего провайдера. Но как показала практика у 99% провайдеров один из них стоит. Наиболее распространен mod_deflate. Чтобы его с помощью сжимать весь контент на вашем сайте добавьте в .htaccess следующие строки:
<ifModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
</ifModule>
Как видите мы должны перечислить mime type файлов, которые следует подвергать сжатию. Сюда можно добавить и видео и картинки, но толку это даст мало. Потому что jpeg или gif уже сами по себе являются сжатыми форматами. Также как avi или flv. Вы фактически нечего не выиграете указав их.
Второй менее популярный модуль это mod_gzip, Чтобы включить сжатие с его помощью добавьте вот такие строчки:
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include mime ^text\.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image\.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>
Данный модуль умеет работать с масками, что несомненно большой плюс. Да и синтаксис у него куда более гибкий чем у предыдущего. Но используют его реже. А по сжатию я даже не берусь судить, который из модулей лучше. Я сильной разницы не заметил при тестах.
8. А ещё быстрее можно?
Можно. Если применить кеширование страниц. У кеширования есть и плюсы и минусы, поэтому подходить к этому вопросу надо подготовившись. Для динамически обновляющегося сайт каждый 2-3 минуты, например популярного форума, нужно учесть, что пользователь должен видеть актуальную информацию. Но у любого сайт есть контент, который более или менее статичен. Например те же картинки, или файлы стилей. Поэтому нам потребуется по разному использовать кеширование различного содержимого на сайте. В html разметки мы всегда можем использовать meta теги. И через php мы может устанавливать заголовки ответа сервера. Остается вопрос, как быть с css, js, image и т.д. и т.п.
Помочь нам в этом могут два модуля: mod_headers и mod_expires которые могут установить заголовки в ответ сервера и подсказать вашему браузеру, что и как нужно кешировать. Один из модулей обычно стоит у провайдера, но как и в случае с любым модулем, который не входит в стандартную сборку Апача, 100% гарантии никто вам не даст. Поэтому снова во избежание 500й ошибки указывает условия для каждого из модулей.
<ifModule mod_headers.c>
#кэшировать html и htm файлы на один день
<FilesMatch "\.(html|htm)$">
Header set Cache-Control "max-age=43200"
</FilesMatch>
#кэшировать css, javascript и текстовые файлы на одну неделю
<FilesMatch "\.(js|css|txt)$">
Header set Cache-Control "max-age=604800"
</FilesMatch>
#кэшировать флэш и изображения на месяц
<FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>
#отключить кэширование
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>
</IfModule>
Вот такой синтаксис у mod_headers. Думаю по комментариям ясно что к чему.
В данной секции я отключил кеширование php файлов. Хотя по моему мнению небольшой временной интервал кеширования им не повредит. 5-30 секунд, это интервал времени, за который мало что меняется. А многие пользователи любят пользоваться клавишей back (вернуться назад). Чтобы не загружать им страницу второй раз, а подхватить её из кеша, разумный интервал кеширования все же уместен.
Во второй секции где идут условия для mod_expires я именно так и делаю — для php ставлю небольшой интервал кеширования.
<ifModule mod_expires.c>
ExpiresActive On
#по умолчанию кеш в 5 секунд
ExpiresDefault "access plus 5 seconds"
#кэшировать флэш и изображения на месяц
ExpiresByType image/x-icon "access plus 2592000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
ExpiresByType image/gif "access plus 2592000 seconds"
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
#кэшировать css, javascript и текстовые файлы на одну неделю
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 604800 seconds"
ExpiresByType application/javascript "access plus 604800 seconds"
ExpiresByType application/x-javascript "access plus 604800 seconds"
#кэшировать html и htm файлы на один день
ExpiresByType text/html "access plus 43200 seconds"
#кэшировать xml файлы на десять минут
ExpiresByType application/xhtml+xml "access plus 600 seconds"
</ifModule>
9. Правила вежливого тона…
В процессе модернизации своего сайта, мы часто оставляем хвосты ввиде ссылок, которые ведут на страницы, которые мы удалили. Иногда такие ссылки идут с других сайтов или из поисковых систем. Чтобы не терять пользователей вежливым тоном считается иметь собственные страницы для различного типа ошибок. Включая даже ошибки сервера. Например стандартное сообщение о 500й ошибки очень скучное и мрачное, и вряд ли вызовет у пользователя желание посетить вашу страницу ещё раз. Но в htaccess есть приемы, которые могут сделать даже эту страницу приветливей.
# Bad Rquest
ErrorDocument 400 /400.html
# Authorization Required
ErrorDocument 401 /401.html
# Forbidden
ErrorDocument 403 /403.html
# Not found
ErrorDocument 404 /404.html
# Method Not Allowed
ErrorDocument 405 /405.html
# Request Timed Out
ErrorDocument 408 /408.html
# Request URI Too Long
ErrorDocument 414 /414.html
# Internal Server Error
ErrorDocument 500 /500.html
# Not Implemented
ErrorDocument 501 /501.html
# Bad Gateway
ErrorDocument 502 /502.html
# Service Unavailable
ErrorDocument 503 /503.html
# Gateway Timeout
ErrorDocument 504 /504.html
Для 400-х ошибок можно использовать и динамические страницы на php. А вот для 500 лучше сделать на html и js. Это часть ошибок обычно связана с ошибками сервера (в большинстве случаев) и php или cgi как правило в такой ситуации не работают.
Если вам лень делать столько страниц устанавливайте страницей ошибок главную страницу своего сайта или карту сайта.
Все это вы делаете исключительно для людей. Поисковым роботам плевать на то есть у вас страницы ошибок или нет. Они видят ответ сервера с кодом ошибки и блокируют вашу страницу в поиск. Так что имейте ввиду, это не панацея. Это лишь вежливость к вашей аудитории и имидж вашего сайта.
10. Подведем итог
Знатоки понимают, что в этой статье описано далеко не все. Я коснулся здесь лишь поверхности «айсберга». На самом деле возможности .htaccess куда много обширней, чем описано в статье. Но я и не преследовал целью перевести манаул по htaccess на русский язык. Всего чего я хотел это создать небольшой костяк файла .htaccess для тех, кто только приступил к изучению данного вопроса, чтобы сэкономить их время на поисках информации по сети.
В результате всех манипуляций у нас должен был получить файл следующего содержания:
Options All -ExecCGI -Indexes -Includes +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^black-web
RewriteRule (.*) http://www.black-web.ru/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.black-web.ru/ [R=301,L]
</IfModule>
DirectoryIndex index.php
<IfModule mod_setenvif.c>
SetEnv TZ Europe/Moscow
</IfModule>
ServerSignature Off
#AddDefaultCharset UTF-8
<ifModule mod_php.c>
php_value upload_max_filesize 32M
php_value post_max_size 10M
php_value default_charset utf-8
php_value max_execution_time 200
</ifModule>
AddHandler application/x-httpd-php .html
AddHandler cgi-script .pl .py .jsp .asp .htm .shtml .sh .cgi
AddType application/x-javascript .js
AddType text/css .css
AddType text/xml .xml
AddType application/octet-stream .doc .mov .avi .pdf .xls
# ForceType application/x-httpd-php
<ifModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
</ifModule>
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include mime ^text\.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image\.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>
<ifModule mod_headers.c>
#кэшировать html и htm файлы на один день
<FilesMatch "\.(html|htm)$">
Header set Cache-Control "max-age=43200"
</FilesMatch>
#кэшировать css, javascript и текстовые файлы на одну неделю
<FilesMatch "\.(js|css|txt)$">
Header set Cache-Control "max-age=604800"
</FilesMatch>
#кэшировать флэш и изображения на месяц
<FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>
#отключить кэширование
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>
</IfModule>
<ifModule mod_expires.c>
ExpiresActive On
#по умолчанию кеш в 5 секунд
ExpiresDefault "access plus 5 seconds"
#кэшировать флэш и изображения на месяц
ExpiresByType image/x-icon "access plus 2592000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
ExpiresByType image/gif "access plus 2592000 seconds"
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
#кэшировать css, javascript и текстовые файлы на одну неделю
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 604800 seconds"
ExpiresByType application/javascript "access plus 604800 seconds"
ExpiresByType application/x-javascript "access plus 604800 seconds"
#кэшировать html и htm файлы на один день
ExpiresByType text/html "access plus 43200 seconds"
#кэшировать xml файлы на десять минут
ExpiresByType application/xhtml+xml "access plus 600 seconds"
</ifModule>
# Bad Rquest
ErrorDocument 400 /400.html
# Authorization Required
ErrorDocument 401 /401.html
# Forbidden
ErrorDocument 403 /403.html
# Not found
ErrorDocument 404 /404.html
# Method Not Allowed
ErrorDocument 405 /405.html
# Request Timed Out
ErrorDocument 408 /408.html
# Request URI Too Long
ErrorDocument 414 /414.html
# Internal Server Error
ErrorDocument 500 /500.html
# Not Implemented
ErrorDocument 501 /501.html
# Bad Gateway
ErrorDocument 502 /502.html
# Service Unavailable
ErrorDocument 503 /503.html
# Gateway Timeout
ErrorDocument 504 /504.html
11. Послесловие.
Я старался не спешить в написании статьи и на это ушли почти сутки. Но все же где то я мог допустить ошибки в орфографии или пунктуации. Прошу не казнить, а миловать. А лучше писать в личку, чтобы я поправил ошибки.
И напоследок для любителей экспериментов несколько строк .htaccess. Сужу по своему опыту — на практике знания усваиваются лучше чем в теории.
# SECURE ____________________
<IfModule mod_ssl.c>
SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq "black-web.ru"
</IfModule>
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</IfModule>
# HOTLINKING ________________
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://([ -a-z0-9] \.)?black-web\.ru [NC]
RewriteRule \.(gif|jpe?g|png)$ - [F,NC,L]
</IfModule>
# REDIRICT __________________
Redirect 301 /index.html /index.php
<IfModule mod_rewrite.c>
RewriteRule ^news/([^/\.]+)/?$ news.php?news=$1 [L]
RewriteRule ^(.*\.((js)|(css)))$ plugin/GzipFile.php?file=$1
RewriteRule \.css$ plugin/GzipFile.php?file=$1
RewriteRule \.js$ plugin/GzipFile.php?file=$1
</IfModule>
RedirectMatch 301 /blog(.*) http://www.black-web.ru/$1
P.S.
… Для тех у кого всё получилось, идём на www.webpagetest.org мерять красоту до и после.
Andrey_Zentavr
Кому надо берите полностью готовый .htaccess здесь
Данный файл показал самую высокую производительность на тестах.
Также там куча всего закомментировано о чем я не упомянул в статье и что может пригодиться в тех или иных случаях.
Шпаргалка по .htaccess – База знаний Timeweb Community
Это не мануал, здесь собраны наиболее часто используемые настройки .htaccess, своего рода сборник подсказок.
Для чего нужен .htaccess
.htaccess позволяет создать собственную конфигурацию управлением сервера Апач в директориях или настройках хостинга.
Правила .htaccess распространяются на все директории, где расположен файл, кроме директорий, где расположен собственный .htaccess.
Файл .htaccess считывается сервером Апач при каждом обращении, поэтому все изменения входят в силу сразу, после изменения.
Глобальные настройки сервера Апач могут содержать запрет на исполнение некоторых команд, обычно это вызывает ошибку 500. Также подобную ошибку может вызывать неправильный синтаксис или ошибка, например пропуск пробела.
Запрет доступа для определенных IP-адресов или диапазонов IP-адресов
Запрет доступа с IP-адреса 123.123.123.123.
Order Deny,Allow Deny from 123.123.123.123
Если не указывать последние цифры адреса, то запрет будет распространяться на весь диапазон 123.123.123.0 — 123.123.123.255.
Order Deny,Allow Deny from 123.123.123
Разрешаем доступ только с определенных IP-адресов
Order Deny,Allow Deny from all Allow from 123.123.123.123
Принудительное задание кодировки
Иногда требуется очистка кэша браузера.
Отмена перекодировки сервером
Создание собственных страниц с сообщениями об ошибках
При переходе, например, на несуществующий адрес, посетитель увидит сообщение сервера об ошибке, можно создать собственные страницы ошибок либо перенаправлять посетителя на другой адрес, как главная страница. Но для правильной индексации желательно не перенаправлять, а показывать страницу ошибки.
ErrorDocument 404 http://site.ru/error/404.html ErrorDocument 403 http:// site ru/error/403.html ErrorDocument 401 http:// site.ru/error/401.html ErrorDocument 500 http:// site.ru/error/500.html
Строка ErrorDocument 404 http://site.ru/error/404.html указывает, что при ошибке 404 будет показан файл 404.html, который должен находиться в корне директории сайта. Если файл расположен в другой директории, измените путь к файлу или ссылке.
Редиректы
Редирект на .html
Пример, редирект с c site.ru/blog на site.ru/blog.html.
RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?) RewriteRule .* %1.html [R=301,L] RewriteRule ^(.*)/$ /$1.html [R=301,L]
Редирект на страницу без слеша в конце адреса
Пример, редирект с c site.ru/blog/ на site.ru/blog.
RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)/$ /$1 [R=301,L]
Редирект на страницу со слешем в конце адреса
RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?) RewriteRule .* %1/ [R=301,L]
Редирект на страницу без index.php в адресе
RewriteRule ^index.php/(.*)$ http://mysite.ru/$1 [R=permanent,L]
Редирект на страницу без index.php в конце адреса
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://site.ru/ [R=301,L]
Редирект с www на без www
RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC] RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
Редирект без www на www
RewriteCond %{HTTP_HOST} ^site.ru$ [NC] RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
Склейка доменов
Пример, у вас несколько доменов, но посетитель должен переправляться на один.
RewriteCond %{HTTP_HOST} !^site.ru$ RewriteRule ^(.*) http://site.ru/$1 [R=301,L]
Редирект со старых статических url на новые
Пример редирект со страницы http://site.com.ru/id=21.
RewriteCond %{QUERY_STRING} ^id=21$ RewriteRule ^/page.php$ http://site.ru/news.html [L,R=301]
Защита от хотлинка
Если вы хотите запретить вставку изображений с сайта по прямой ссылке.
Вместо site.ru укажите адрес сайта, jpg|jpeg|png|gif — расширение запрещенных изображений, images.jpg – изображение которое будет показываться, если картинка находится не в корне сайта, укажите полный путь.
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?site.ru [NC] RewriteRule \.(jpg|jpeg|png|gif)$ images.jpg [NC,R,L]
Защита от брутофорса
Разрешаем доступ к директории administrator только по протоколу HTTP, что отсеет некоторых ботов. Для каждой CMS нужно указать свой адрес, например wp-login, wp-admin и так далее.
RewriteCond %{REQUEST_URI} ^/administrator\.php$ RewriteCond %{THE_REQUEST} HTTP/1\.0 RewriteRule ^(.*)$ - [F,L]
Бытует легенда, что происхождения названия сервера Апач происходит не от названия индейского племени. Когда сервер был еще в самом начале пути, группа энтузиастов небольшие дополнения к коду, патчи (англ – patch), и «a patchy server» превратилось в Апач, а знаменитое перо на логотипе появилось позже.
В материале перечислены наиболее часто используемые примеры, а большинство возможностей даже не упомянуто, как модуль mod_rewrite, предоставляющий множество возможностей.
Статья писалась эпизодическими «набегами», так что если увидите ошибку, поправьте.
Мой аккаунт на Marketplace — https://timeweb.com/ru/community/marketplace/bashkov-vladislav, обращайтесь
Что такое .htaccess? « Все о WEB программировании
Ромчик0
Доброго времени суток. В данном посте мы остановимся на рассмотрении файла конфигурации apache .htaccess. В статье мы рассмотрим для чего нужен файл .htaccess, для чего целесообразней использовать данный файл, приведем несколько типичных примеров использования файла .htaccess. На написание данного поста меня сподвиг тот факт, что это самый распространенный файл на web сервере, практически на каждом web-сервере под управлением apache есть файл .htaccess и в то же время данный файл является самым непонятным для многих пользователей услуги web-хостинга. И так, давайте рассмотрим, что же такое и за что отвечает файл .htaccess.
Что же такое файл .htaccess
Файл .htaccess является децентрализованным файлом конфигурации сервера apache. Т.е. правила описанные данным файлом распространяются только на тот каталог и подкаталоги этого каталога в котором находиться файл .htaccess. Таким образом, если мы поместим файл .htaccess в корне нашего сервера, то его правила будут распространяться на все каталоги сервера, кроме тех каталогов, в которых есть собственный файл .htaccess.
Т.к. файл .htaccess является служебным файлом, то он не доступен веб-пользователю из браузера. Хотя это можно переопределить основным конфигурационным файлом сервера httpd.conf.
Как я уже говорил выше, что .htaccess является локальным конфигурационным файлом веб сервера apache, то и синтаксис его повторяет синтаксис основного конфигурационного файла.
Возможности .htaccess
Давайте приведем список основных возможностей данного файла:
- открыть или закрыть доступ к каталогу или подкаталогам без индексного файла
- создать правила перезаписи URL
- редирект
- ограничение доступа по логину и паролю к каталогам и файлам
- открыть или закрыть доступ с определенных ip адресов
- управлять роботами — пауками поисковых систем на сайте
- менять кодировку страницы
- запретить или настроить кеширование страниц
и многое другое.
Целесообразность использования файла .htaccess
Данный файл имеет огромное количество достоинств, например, файл apache .htaccess перечитывается каждый раз при обращении к серверу, то внесенные изменения тут же вступают в силу. Но из этого преимущества вытекает и один существенный недостаток, т.к. данный файл обрабатывается при каждом обращении к серверу — он существенно снижает производительность веб-сервера apache. Поэтому не злоупотребляйте настройками .htaccess и что возможно сделать в общем конфигурационном файле делайте.
А теперь давайте рассмотрим для чего лучше всего использовать .htaccess:
Перенаправление с кодом 301.
Очень часто приходиться перемещать контент и для того, чтобы не потерять позиции в поисковых системах делают перенаправление с кодом 301. Более подробно о кодах ответа веб сервера Вы можете прочитать в моей статье “HTTP коды — ответы http сервера” ( https://web-programming.com.ua/http-kody-otvety-http-servera/ )
Redirect 301 http://domain.com/old-permalink-here/ http://domain.com/new-permalink-here/
Ограничение доступа к определенным каталогам и файлам.
Для этого используется еще один файл .htpasswd. Пример, ограничение доступа по логину и паролю ко всем zip-архивам:
<FilesMatch "\.zip$"> AuthName "Only valid users can download zip files." AuthType Basic AuthUserFile /home/www/mysite/pas/.htpasswd Require valid-user </ FilesMatch >
А содержание файла .htpasswd, который находится в каталоге pas нашего сайт mysite:
Root:RoU9yc57nPeKM
где логин — Root, а пароль зашифрован — RoU9yc57nPeKM, что соответствует 12345
Указание файла, который будет выводиться при ошибке 404, т.е. запрашиваемая
страница не найдена.
ErrorDocument 404 http://mysite/error/404.html
Склейка двух доменов.
Как правило сайты имеют два домена www.mysite (перед доменном ставить www сложилось еще на заре зарождения интернет) и просто mysite, но для поисковых систем это два разных сайта с вытекающими отсюда последствиями и для того, чтобы склеить эти два домена используют следующую структуру:
RewriteEngine on RewriteCond %{HTTP_HOST} ^www\mysite [NC] RewriteRule ^(.*)$ http://mysite/$1 [R=301,L]
Примеры использования .htaccess
Для того, чтобы web-сервер начал использовать файл .htaccess нужно его сконфигурировать для этого. Директива AllowOverride перечисляет опции, которые могут быть изменены с помощью файла .htaccess. Рассмотрим часть конфигурации файла httpd.conf:
<Directory "/"> Options Indexes FollowSymLinks Includes MultiViews AllowOverride All Order allow,deny Allow from all </Directory>
где директива AllowOverride может принимать следующие значения:
- None — сервер игнорирует (не читает) файлы .htaccess
- Аll — позволяет с помощью .htaccess переопределить все глобальные установки доступа
- Filelnfo — разрешает переопределение опций управляющих типами документа (кодировка, язык, типы файлов)
- AuthConfig — переопределение опций разрешений
- Limit — разрешает переопределение опций доступа (allow, deny и order)
- Options — разрешает использовать директиву Options.
Перенаправление пользователя с определенным браузером:
RewriteEngine on RewriteCond %{HTTP_USER_AGENT} <название агента> RewriteRule .* http://test.mysite/ [R]
или в определенный каталог
RewriteEngine on RewriteCond %{HTTP_USER_AGENT} <название агента> RewriteCond %{REQUEST_URI} !^/test/ RewriteRule .* /test/ [R]
вместо <название агента> вставляем название необходимого агента
Простой редирект
Redirect 301 / http://mysite/
Запрещение доступа ко всем файлам в директории:
deny from all
Запрещение доступа к определенному файлу, в примере запрещен файл test.php:
<Files test.php> deny from all </Files>
Запрещение ко всем файлам в директории для определенного ip (в примере для ip = 192.168.1.1):
order deny,allow allow from all deny from 192.168.1.1
Определение кодировки (варианты кодировки KOI8-R, UTF-8, Windows-1251):
AddDefaultCharset windows-1251
Закрываем доступ к сайту в рабочее время
RewriteCond %{TIME_HOUR}%{TIME_MIN} >1000 RewriteCond %{TIME_HOUR}%{TIME_MIN} <1900 RewriteRule .* - [ F ]
Заключение
И так мы видим, что .htaccess является мощным инструментом для конфигурации http сервера. Без .htaccess мы не сможем создать так, называемые ЧПУ. С помощью данного файла мы можем уведомить пользователей и поисковые системы о старых ссылках, что позволяет улучшить индексацию Вашего ресурса, также мы можем ограничить доступ к нашему ресурсу по времени или защитить файлы от скачивания, создать доступ по логину и паролю к определенным каталогам и файлам.
Понравилась статья? Поделись с друзьями.
Файл htaccess что это, как сделать, пример
Мы решили объединить две темы, «как сделать файл htaccess» и что такое «htaccess», где он располагается, зачем нужен и общие понятия!
Хоть тема htaccess — это не начальный уровень изучения, но мы потихоньку начинаем углубляться и htaccess — это неотъемлемая часть сайта!
Что такое htaccess
Определение что такое htaccess:
.htaccess (/’eɪtʃtiːæk.sɛs/ от англ. hypertext access) — файл дополнительной конфигурации веб-сервера Apache, а также подобных ему серверов. Позволяет задавать большое количество дополнительных параметров и разрешений для работы веб-сервера в отдельных каталогах (папках), таких как управляемый доступ к каталогам, переназначение типов файлов и т.д., без изменения главного конфигурационного файла.На вашем сайте(сервере) есть главный файл конфигурации, все, что так или иначе выполняется на вашем сайте зависит от этого файла, а вот файл htaccess — это — можно сравнить с дополнительными настройками системы… Иногда к главному конфигурационному файлу доступа нет и его невозможно изменить, если у вас нет соответствующего доступа. В этом случае — можно его изменить, только обратившись в техническую поддержку!
Где находится файл htaccess
Вы можете располагать данный файл, как в корневой папке, и данный файл будет распространять свое влияние на весь сайт, но если вы хотите. отменить действие файла htaccess в какой-то папке, то просто создаем новый файл htaccess и вставляем его в ту папку, в которой хотим изменить правила…Самый простой пример использования htaccess
Самый простой пример, как работает htaccess!? Для одной из тем, мы делали доступ в файлам, вот из этой темы и приведем пару примеров!1. В первом пункте приведем ссылку на файл, который вы сомжете посмотреть!
Никакие запреты на него не действуют — см. здесь
2. Возьмем вторую папку и в нее поместим файл .htaccess с такой записью:
Которая означает, что все файлы с разрешением dat и cfg в этой папке будут недоступны.
<Files ~ «\.(dat|cfg)$»>
deny from all
</Files>
Результат:
См. здесь.Как мы видим, что вместо нашей страницы нам выводится совсем другая информация. Поскольку доступ ограничен срабатывает переадресация на файл 403. Хотя если вы успеете посмотреть на адрес, то он остался прежним..
И если посмотреть на реальный файл размещения данного файла. то он будет выглядеть так:
https://dwweb.ru/403.shtml
Как сделать файл htaccess
Самое простое, как можно создать файл htaccess – это — заходим в ту папку. В которой нам нужно, чтобы находился файл htaccess – нажимаем ПКМ — создать – текстовый документ.Вот на нижнем скрине мы видим, что наш новый текстовой документ создан. Теперь нам нужно его переименовать в .htaccess. Точка перед словом htaccess – это не ошибка – он так и выглядит!
Хм… только я хотел его переименовать, а он мне выдает:
Да… в windows 7 это проходило без проблем…
Ну, что же, мы пойдем другим путем!
Если у вас получилось так же, то делаем далее:
Вариант №2.
Открываем созданный файл в блокноте, либо просто открываем текстовый блокнот и в нём указываем сохранение нашего файла htaccess в нужную директорию.
Имя файла — .htaccess
Тип файла – все файлы.
Кодировку выбираем — utf-8
Сохранить.
Всё – наш файл .htaccess – создан.
Скачать файл htaccess
Если у вас нет возможности создать файл htaccess, то предлагаю вам скачать мой файл htaccess:Почти на каждую строчку надо делать отдельную страницу, поэтому: еще больше о htaccess
AddDefaultCharset UTF-8 //1
AddHandler fcgid-script .php .html .htm //2
ErrorDocument 404 /404.html //3
ErrorDocument 403 /403.html //4
RewriteEngine on //5
RewriteCond %{HTTPS} =off //6
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L] //7
RewriteCond %{HTTP_HOST} ^www.dwweb.ru$ [NC] //8
RewriteRule ^(.*)$ https://dwweb.ru/$1 [R=301,L] //9
RewriteCond %{REQUEST_FILENAME} !-f //10
RewriteRule .* index.html //11
Какие темы по данному файлу htaccess — уже написаны!?1. Кодировка
2. Выполнение php на html
3. При ошибке 404 переадресация на 404.html — для данного файла(здесь единая точка входа) не будет работать, оставил, как пример…
4. При ошибке 403(запрет доступа) если будет указан существующий файл 403.html , то откроется он, если нет, то выведется системное сообщение… Как в этом примере
5. RewriteEngine on|off — Включает или выключает работу механизма преобразования
6. + 7. Переадресация с http на https тема
8. + 9. Переадресация с www на без www
10. Если файл существует физически, то отключить перенаправление в htaccess
11. Все остальное, если дошло до сюда, то будет перенаправляться на index.html — это называется единая точка входа
Итого о файле htaccess
Итого — вывод :
Можно ли прожить без знаний о файле htaccess — конечно!
Но когда вы узнаете его возможности, то я вам гарантирую, что вы скажите — как я вообще мог жить без этого!
P.S.Расскажу вам историю из своей жизни!
Когда-то я категорически бы против компьютера и всеми четырьмя отбрыкивался, до тех пор, пока сама жизнь не заставила сделать выбор!
И когда я узнал о возможностях, которые предоставляет PC, то стал реальным адептом!
И уж никогда не думал, что буду вам вот здесь, на своем собственном сайте, писать о файле htaccess и какие кайфы он вам может дать…htaccess | WordPress.org
.htaccess — это распределенный файл конфигурации, и именно так Apache обрабатывает изменения конфигурации для каждого каталога.
WordPress использует этот файл для управления тем, как Apache обслуживает файлы из своего корневого каталога и его подкаталогов. В частности, WP изменяет этот файл, чтобы иметь возможность обрабатывать довольно постоянные ссылки.
Эта страница может использоваться для восстановления поврежденного файла .htaccess (например, некорректно работающего плагина).
# НАЧАТЬ WordPress RewriteEngine On RewriteBase / RewriteRule ^ index \.- [L] RewriteRule. index.php [L] # КОНЕЦ WordPress
Наверх ↑
Наверх ↑
Опции № Опции
Любые параметры, которым предшествует + , добавляются к действующим в настоящее время параметрам, а любые параметры, которым предшествует — , удаляются из действующих в настоящее время параметров.
Возможные значения для директивы Options представляют собой любую комбинацию:
Нет
Все опции выключены.
Все
Все опции, кроме MultiView.Это значение по умолчанию.
ExecCGI
Разрешено выполнение сценариев CGI с использованием mod_cgi.
FollowSymLinks
Сервер будет переходить по символическим ссылкам в этом каталоге.
Включает
Разрешены включения на стороне сервера, предоставленные mod_include.
Включает NOEXEC
Включения на стороне сервера разрешены, но #exec cmd и #exec cgi отключены.
Индексы
URL соответствует каталогу, а не DirectoryIndex — форматированному списку каталога.
Мультипросмотр
Согласованное содержимое «MultiViews» разрешено с использованием mod_negotiation.
SymLinksIfOwnerMatch
Переходите только по символическим ссылкам, если цель принадлежит тому же идентификатору пользователя, что и ссылка.
Это отключит все параметры, а затем включит только FollowSymLinks, что необходимо для mod_rewrite.
Опции Нет Параметры FollowSymLinks
Наверх ↑
DirectoryIndex # DirectoryIndex
DirectoryIndex устанавливает файл, который Apache будет обслуживать при запросе каталога.
Можно указать несколько URL-адресов, и в этом случае сервер вернет первый найденный.
DirectoryIndex index.php index.html /index.php
Наверх ↑
DefaultLanguage # DefaultLanguage
DefaultLanguage приведет к тому, что все файлы, с которыми еще не связан определенный языковой тег, будут использовать его.
DefaultLanguage ru
Наверх ↑
Кодировка по умолчанию # Кодировка по умолчанию
Установите кодировку символов по умолчанию, отправляемую в заголовке HTTP. См .: Установка информации о кодировке в .htaccess
AddDefaultCharset UTF-8
Установить кодировку для определенных файлов
AddType 'text / html; charset = UTF-8 '.html
Набор для конкретных файлов
AddCharset UTF-8 .html
Наверх ↑
ServerSignature # ServerSignature
Директива ServerSignature позволяет настроить завершающую строку нижнего колонтитула в документах, созданных сервером.При желании добавьте строку, содержащую версию сервера и имя виртуального хоста, на страницы, созданные сервером (внутренние документы об ошибках, списки каталогов FTP, вывод mod_status и mod_info и т. Д., Но не документы, созданные CGI или пользовательские документы об ошибках).
по телефону
добавляет строку с номером версии сервера и ServerName обслуживающего виртуального хоста
Off
подавляет строку нижнего колонтитула
Электронная почта
создает ссылку mailto: на ServerAdmin указанного документа
.SetEnv SERVER_ADMIN admin @ site.com Сервер Подпись Электронная почта
Наверх ↑
Принудительная загрузка файлов # Принудительная загрузка файлов
Приведенное ниже приведет к тому, что любые запросы на файлы, заканчивающиеся указанными расширениями, не будут отображаться в браузере, а вместо этого вызовет диалоговое окно «Сохранить как», чтобы клиент мог загрузить.
Приложение AddType / поток октетов .avi .mpg .mov .pdf .xls .mp4
Наверх ↑
Сжатие HTTP # Сжатие HTTP
Директива AddOutputFilter сопоставляет расширение расширения имени файла с фильтрами, которые будут обрабатывать ответы от сервера перед их отправкой клиенту.Mozilla / 4 \ .0 [678] no-gzip BrowserMatch \ bMSIE! No-gzip! Gzip-only-text / html
Принудительное сжатие для определенных файлов
SetOutputFilter DEFLATE
Наверх ↑
Директива Header позволяет отправлять заголовки HTTP для каждого запроса или только для определенных файлов. Вы можете просматривать HTTP-заголовки сайтов с помощью Firebug, Chrome Dev Tools, Wireshark или онлайн-инструмента.
Заголовочный набор X-Pingback "http://www.askapache.com/xmlrpc.php" Набор заголовков Content-Language "en-US"
Наверх ↑
Это отключит заголовки HTTP, всегда используя . будет очень стараться удалить их.
Заголовок не установлен Pragma Заголовок всегда отключен WP-Super-Cache Заголовок всегда отключен X-Pingback
Наверх ↑
Защита паролем логина # Защита паролем логина
Это очень полезно для защиты файла wp-login.php
. Вы можете использовать этот генератор htpasswd.
Базовая аутентификация
AuthType Basic AuthName "Защищено паролем" AuthUserFile /full/path/to/.htpasswd Требовать действительного пользователя Удовлетворить все
Дайджест-аутентификация
Дайджест AuthType AuthName "Защищено паролем" AuthDigestDomain / wp-login.php https://www.askapache.com/wp-login.php AuthUserFile /full/path/to/.htpasswd Требовать действительного пользователя Удовлетворить все
Наверх ↑
Требуется особый IP # Требуется особый IP
Это способ разрешить доступ только определенным IP-адресам.
ErrorDocument 401 по умолчанию ErrorDocument 403 по умолчанию Заказать отказать, разрешить Запретить всем Разрешить от 198.101.159.98 localhost
Наверх ↑
Защита конфиденциальных файлов # Защита конфиденциальных файлов
Это запрещает любой веб-доступ к вашему файлу wp-config, error_logs, php.ini и htaccess / htpasswds.
Заказать отклонить, разрешить Запретить всем
Наверх ↑
Требовать SSL # Требовать SSL
Это приведет к принудительному использованию SSL и потребует точного имени хоста, иначе будет выполнено перенаправление на версию SSL. Полезно в файле /wp-admin/.htaccess
.
SSLOptions + StrictRequire SSLRequireSSL SSLRequire% {HTTP_HOST} eq "www.wordpress.com" ErrorDocument 403 https://www.wordpress.com
Наверх ↑
Наверх ↑
.Учебник по окончательному .htaccess со 100 примерами
htaccess — это очень древний файл конфигурации, который управляет веб-сервером, на котором запущен ваш сайт, и является одним из самых мощных файлов конфигурации, с которыми вы когда-либо сталкивались. . htaccess имеет возможность контролировать доступ / настройки для протокола передачи гипертекста ( HTTP ) с использованием защиты паролем, 301 редиректа, перезаписи и многого другого. Это потому, что этот файл конфигурации был написан в первые дни Интернета (HTTP) для одного из первых веб-серверов! Со временем эти веб-серверы (настроенные с помощью htaccess) стали известны как всемирная паутина и в конечном итоге превратились в Интернет, который мы используем сегодня. Это не введение в htaccess . Это руководство по использованию htaccess в полной мере. Первоначально (2003 г.) это руководство было известно в определенных хакерских кругах и скрытых уголках сети как ultimate htaccess из-за мощных уловок и советов по обходу безопасности htaccess на веб-хосте, а также потому, что многие примеры htaccess были довольно впечатляющими. тогда в той группе.Htaccess — Развитый
Протокол передачи гипертекста (HTTP) был инициирован в ЦЕРН в Женеве (Швейцария), где он возник (вместе с языком представления HTML) из необходимости простого обмена научной информацией в компьютерной сети.Первая общедоступная реализация HTTP допускала только текстовую информацию и почти мгновенно стала заменой службы GOPHER. Одним из первых текстовых браузеров был LYNX, который существует до сих пор; Графический HTTP-клиент появился очень быстро под названием NCSA Mosaic. В 1994 году Mosaic был популярным браузером. Вскоре возникла потребность в более богатых мультимедийных возможностях, и язык разметки обеспечил поддержку растущего множества типов мультимедиа.AskApache Htaccess Journey
Пропустить — все еще редактируется Я обнаружил эти советы и рекомендации в основном, когда работал специалистом по проникновению сетевой безопасности, нанятым для поиска дыр в безопасности в средах веб-хостинга.Общий хостинг — это наиболее распространенная и дешевая форма веб-хостинга, при которой несколько клиентов размещаются на одной машине и «совместно используют» ресурсы (CPU / RAM / SPACE). Машины сконфигурированы ТОЛЬКО для работы с HTTP и FTP. Никаких оболочек или каких-либо интерактивных входов в систему, нет ssh, только доступ по FTP. Именно тогда я начал очень подробно изучать файлы htaccess и узнал о невероятных неиспользованных возможностях htaccess. 99% лучших администраторов Apache в мире не часто используют .htaccess, если ВООБЩЕ.Гораздо проще, безопаснее и быстрее настроить Apache, используя вместо этого файл httpd.conf. Однако этот файл почти никогда не читается на общих хостах, и я никогда не видел его доступным для записи. Таким образом, единственным выходом для тех, кто пользуется общим хостингом, был и остается файл .htaccess и, черт возьми, оптоволоконный кабель … он почти такой же мощный, как и сам httpd.conf! Почти весь код .htaccess работает в файле httpd.conf, но не весь код httpd.conf работает в файлах .htaccess, около 50%. Так что все лучшие админы и программисты Apache никогда не использовали.htaccess файлы. У тех, у кого есть доступ к httpd.conf, не было стимула использовать htaccess, и разрыв увеличивался. Часто можно увидеть «компьютерных гуру» на форумах и в списках рассылки, выступающих против любого использования и пользователей файлов .htaccess, самодовольно объявляющих об хорошо известных проблемах с файлами .htaccess по сравнению с httpd.conf — интересно, знают ли эти «гуру» историю файла htaccess, как и в самых ранних версиях HTTP-сервера — HTTPd NCSA, который, кстати, стал известен как Apache HTTP. Таким образом, можно легко сказать, что файлы htaccess появились раньше самого Apache.Как только я обнаружил, что файлы .htaccess могут помочь мне в перечислении и использовании уязвимостей безопасности даже на больших общих хостах, я сосредоточил все свои исследования на файлах .htaccess, то есть я читал почтенный исходный код HTTP Apache 24/7! Я скомпилировал каждую выпущенную версию веб-сервера Apache, даже NCSA, и сосредоточился на перечислении самых мощных директив htaccess. Хорошие времена! Поскольку мое внимание было сосредоточено на уязвимостях протокола / файла / сети, а не на веб-разработке, я создал хороший инструментарий трюков htaccess, чтобы делать необычные вещи.Когда я перешел на webdev в 2005 году, я начал использовать htaccess для веб-сайтов, а не для исследований. Я задокументировал большинство своих фаворитов и переписал руководство по htaccess для веб-разработчиков. После большого поощрения на различных форумах и в сети я решил начать блог, чтобы делиться своей работой со всеми, AskApache.com был зарегистрирован, я опубликовал свое руководство, и оно было быстро скопировано и разнесено по сети. Информация — это свобода, а свобода — это информация, поэтому этот блог имеет для вас наименее ограничительные авторские права.Не стесняйтесь изменять, копировать, переиздавать, продавать или использовать что-либо на этом сайте;)Что такое .htaccess
В частности, .htaccess — это имя файла по умолчанию для специального файла конфигурации, который предоставляет ряд директив (команд) для.Учебное пособие по HTTP-серверу Apache: файлы .htaccess
.htaccess
файлов позволяют выполнять конфигурацию
изменяется для каждого каталога.
См. Также
Вам следует избегать использования файлов .htaccess
полностью, если у вас есть доступ к
Файл конфигурации главного сервера httpd. Использование файлов .htaccess
замедляет работу вашего http-сервера Apache.
Любую директиву, которую вы можете включить в файл .htaccess
, лучше установить в блоке Directory
, так как она будет иметь тот же эффект с лучшей производительностью. .htaccess
файлов (или «файлы распределенной конфигурации»)
предоставляют возможность вносить изменения в конфигурацию для отдельных каталогов. А
файл, содержащий одну или несколько директив конфигурации, помещается в
конкретный каталог документов, и директивы применяются к этому
каталог и все его подкаталоги.
Примечание:
Если вы хотите позвонить на ваш .htaccess файл
, то
в противном случае вы можете изменить имя файла с помощью директивы AccessFileName
.Например,
если вы предпочитаете называть файл .config
, тогда вы
можете поместить в файл конфигурации вашего сервера следующее:
AccessFileName ".config"
Как правило, файлы .htaccess
используют тот же синтаксис, что и
основная конфигурация
файлы. То, что вы можете поместить в эти файлы, определяется AllowOverride
директива. это
директива определяет в категориях, какие директивы будут
почетно, если они найдены в .htaccess
файл. Если
директива разрешена в файле .htaccess
,
документация для этой директивы будет содержать раздел Override,
указание, какое значение должно быть в AllowOverride
для этого
директива быть разрешенной.
Например, если вы посмотрите документацию для AddDefaultCharset
директиве, вы обнаружите, что это разрешено в .htaccess
файлы. (См. Строку Context в сводке директивы.) Строка Override гласит FileInfo
. Таким образом, у вас должно быть не менее AllowOverride FileInfo
, чтобы эта директива была
почитается в файлах .htaccess
.
Если вы не уверены, разрешена ли конкретная директива в .htaccess
, посмотрите документацию для этого
и проверьте строку контекста на наличие «.htaccess».
Как правило, вы должны использовать только файлы .htaccess
, когда
у вас нет доступа к основному файлу конфигурации сервера.Там есть,
например, распространенное заблуждение, что аутентификация пользователя должна
всегда выполняется в файлах .htaccess
, а в последние годы
еще одно заблуждение, что директивы mod_rewrite
должно идти в файлах .htaccess
. Это просто не то
кейс. Вы можете поместить конфигурации аутентификации пользователей на главный сервер
конфигурации, и это, по сути, предпочтительный способ сделать
вещи. Точно так же директивы mod_rewrite
работают лучше,
во многом в основной конфигурации сервера.
.htaccess
файлов следует использовать в случае, если
контент-провайдерам необходимо внести изменения в конфигурацию сервера на
для каждого каталога, но не имеют корневого доступа в серверной системе.
В случае, если администратор сервера не желает делать
частые изменения конфигурации, может быть желательно разрешить
отдельные пользователи должны вносить эти изменения в файлов .htaccess
для них самих. Это особенно верно, например, в случаях, когда
Интернет-провайдеры размещают несколько сайтов пользователей на одном компьютере и хотят
их пользователи, чтобы иметь возможность изменять свою конфигурацию.
Однако, как правило, следует использовать файлы .htaccess
.
по возможности избегать. Любая конфигурация, которую вы бы рассмотрели
помещая файл .htaccess
, можно так же эффективно
сделано в разделе
на вашем основном сервере
Файл конфигурации.
Есть две основные причины избегать использования .htaccess
файлов.
Первое из них — производительность. Когда AllowOverride
настроен на использование .htaccess
файлов, httpd будет
поищите в каждом каталоге файлов .htaccess
. Таким образом,
разрешение файлов .htaccess
приводит к снижению производительности,
независимо от того, используете ли вы их на самом деле! Так же .htaccess
файл загружается каждый раз, когда документ
просил.
Также обратите внимание, что httpd должен искать файлов .htaccess
во всех каталогах более высокого уровня, чтобы иметь полный набор
директивы, которые он должен применять.(См. Раздел о том, как
директивы.) Таким образом, если файл запрашивается из
каталог / www / htdocs / example
, httpd должен искать
следующие файлы:
/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess
Итак, на каждый доступ к файлу из этого каталога приходится 4
дополнительные обращения к файловой системе, даже если ни один из этих файлов не
настоящее время. (Обратите внимание, что это будет только в том случае, если .htaccess
файлов были включены для /
, что
обычно бывает не так.)
В случае директив RewriteRule
, в .htaccess
context эти регулярные выражения должны быть
перекомпилируется при каждом запросе к каталогу, тогда как в main
контекст конфигурации сервера они компилируются один раз и кэшируются.
Кроме того, сами правила сложнее, так как необходимо
обойти ограничения, связанные с контекстом для каждого каталога
и mod_rewrite
.Обратитесь к Руководству по перезаписи для получения дополнительной информации
подробно по этому поводу.
Второе соображение касается безопасности. Вы разрешаете
пользователи могут изменять конфигурацию сервера, что может привести к изменениям
который у вас нет контроля. Внимательно подумайте, хотите ли вы подарить
вашим пользователям эта привилегия. Также обратите внимание, что давая пользователям меньше
привилегии, чем они нужны, приведут к дополнительной технической поддержке
Запросы. Убедитесь, что вы четко указываете пользователям, какой уровень
привилегии, которые вы им дали.Точно указать, что вы установили AllowOverride
и указывая на них
к соответствующей документации, избавите себя от многих затруднений
потом.
Обратите внимание, что это полностью эквивалентно помещению .htaccess
файл в каталоге / www / htdocs / example
, содержащий
директиву, и поместить эту же директиву в раздел каталога
на вашем основном сервере
конфигурация:
.htaccess
в / www / htdocs / пример
:
Содержимое файла .htaccess в / www / htdocs / example
AddType text / example ".exm"
Раздел из вашего httpd.conf
файл
<Каталог "/ www / htdocs / example"> AddType текст / пример ".exm"
Однако, поместив эту конфигурацию в конфигурацию вашего сервера файл приведет к меньшему снижению производительности, поскольку конфигурация загружается один раз при запуске httpd, а не каждый раз, когда файл просил.
Использование файлов .htaccess
можно полностью отключить
установив AllowOverride
директива к нет
:
AllowOverride Нет
Директивы конфигурации, содержащиеся в файле .htaccess
применяются к каталогу, в котором находится файл .htaccess
найден, и во все его подкаталоги. Однако важно
также помнить, что могло быть .htaccess
файлов
в каталогах выше. Директивы применяются в том порядке, в котором они
найдены. Следовательно, файл .htaccess
в конкретном
каталог может переопределять директивы, найденные в файлах .htaccess
находится выше в дереве каталогов. А те, в свою очередь, могли
переопределенные директивы, найденные еще выше или на основном сервере
сам файл конфигурации.
Пример:
В каталоге / www / htdocs / example1
у нас есть .htaccess
, содержащий следующее:
Опции + ExecCGI
(Примечание: у вас должны быть действующие « AllowOverride Options
»
чтобы разрешить использование директивы « Опции
» в .htaccess
файла.)
В каталоге / www / htdocs / example1 / example2
имеем
файл .htaccess
, содержащий:
Опции Включает
Из-за этого второй файл .htaccess
в каталоге / www / htdocs / example1 / example2
, выполнение CGI не выполняется
разрешено, так как действует только опций, включая
, что
полностью отменяет любые предыдущие настройки, которые могли быть
место.
Слияние .htaccess с основным файлы конфигурации
Как описано в документации по разделам конфигурации, .htaccess
файлов могут иметь приоритет над разделами
для
соответствующий каталог, но будет заменен другими типами
разделов конфигурации из основных файлов конфигурации. это
факт может быть использован для принудительного применения определенных конфигураций, даже в
наличие либеральной настройки AllowOverride
.Например, чтобы
предотвращать выполнение скрипта, позволяя установить что-либо еще в .htaccess
вы можете использовать:
<Каталог "/ www / htdocs"> AllowOverride All <Местоположение "/"> Параметры + Включает NoExec -ExecCGI
Если вы перешли прямо к этой части документа, чтобы узнать, как
Чтобы выполнить аутентификацию, важно отметить одну вещь. Eсть
распространенное заблуждение, что вы обязаны использовать .htaccess
файлов для реализации пароля
аутентификация. Это не вариант. Ввод директив аутентификации
в
раздел в вашем основном файле конфигурации сервера является предпочтительным способом
для реализации этого и файлов .htaccess следует использовать только
файлов
если у вас нет доступа к основному файлу конфигурации сервера. См. Выше обсуждение того, когда вы должны и должны
не использовать файлы .htaccess
.
Сказав это, если вы все еще думаете, что вам нужно использовать .htaccess
, вы можете обнаружить, что такая конфигурация, как
то, что следует ниже, может сработать для вас.
.htaccess
содержимое файла:
AuthType Basic AuthName «Требуется пароль» AuthUserFile "/www/passwords/password.file" AuthGroupFile "/www/passwords/group.file" Требовать администраторов группы
Обратите внимание, что AllowOverride AuthConfig
должен действовать.
чтобы эти директивы имели какой-либо эффект.
См. Руководство по аутентификации для более полное обсуждение аутентификации и авторизации.
Еще одно распространенное использование файлов .htaccess
— включение
Включения на стороне сервера для определенного каталога. Это можно сделать с помощью
следующие директивы конфигурации, помещенные в .htaccess
файл в желаемом каталоге:
Опции + Включает AddType text / html shtml Обработанный сервером файл shtmlAddHandler
Обратите внимание, что Параметры AllowOverride
и AllowOverride
FileInfo
должны действовать, чтобы эти директивы имели
эффект.(. +) \. jpg «» $ 1.png «
В .htaccess
в каталоге документов, ведущий
косая черта удаляется из значения, предоставленного в RewriteRule
, а в images Подкаталог
, / images /
удален из
Это. Таким образом, ваше регулярное выражение должно опускать эту часть как
хорошо.
Обратитесь к документации mod_rewrite для
дополнительные сведения об использовании mod_rewrite
.
Наконец, вы можете захотеть использовать .htaccess
, чтобы разрешить
выполнение программ CGI в определенном каталоге. Это может быть
реализован в следующей конфигурации:
Опции + ExecCGI AddHandler cgi-скрипт cgi pl
В качестве альтернативы, если вы хотите, чтобы все файлы в данном каталоге были считаются программами CGI, это можно сделать с помощью следующих конфигурация:
Опции + ExecCGI SetHandler cgi-скрипт
Обратите внимание, что Параметры AllowOverride
и AllowOverride
FileInfo
должны действовать, чтобы эти директивы имели
эффект.
Пожалуйста, см. Учебник CGI для получения дополнительных полное обсуждение программирования и настройки CGI.
Когда вы помещаете директивы конфигурации в .htaccess
файла, и вы не получите желаемого эффекта, существует ряд
вещи, которые могут пойти не так.
Чаще всего проблема в том, что AllowOverride
не
установите так, чтобы ваши директивы конфигурации соблюдались. Делать
убедитесь, что у вас нет действующего AllowOverride None
для рассматриваемой области файла.Хорошая проверка — положить мусор
в вашем файле .htaccess
и перезагрузите страницу. Если ошибка сервера
не сгенерирован, то у вас почти наверняка есть AllowOverride
Не действует
.
Если, с другой стороны, вы получаете ошибки сервера при попытке
доступ к документам, проверьте журнал ошибок httpd. Это скорее всего скажет вам
что директива, используемая в вашем файле .htaccess
, не
разрешенный.
[Пт, 17 сен, 18:43:16 2010] [предупреждение] [клиент 192.168.200.51] /var/www/html/.htaccess: DirectoryIndex здесь не допускается
Это будет означать, что вы использовали директиву, которая
никогда не разрешается в файлах .htaccess
, или вы просто
не имеет AllowOverride
, установленного на
уровень, достаточный для директивы, которую вы использовали. Проконсультируйтесь с
документацию для этой конкретной директивы, чтобы определить, что
дело.
В качестве альтернативы он может сообщить вам, что у вас есть синтаксическая ошибка в вашем использование самой директивы.
[Сб, 9 августа, 16:22:34 2008] [предупреждение] [клиент 192.168.200.51] /var/www/html/.htaccess: RewriteCond: неверные разделители флагов
В этом случае сообщение об ошибке должно относиться к конкретная синтаксическая ошибка, которую вы допустили.
.Что такое .htaccess? — Руководство, руководства и примеры Apache .htaccess
Apache .htaccess Руководство и учебное пособие >>
.htaccess — это файл конфигурации для использования на веб-серверах, на которых работает программное обеспечение веб-сервера Apache. Когда файл .htaccess помещается в каталог, который, в свою очередь, «загружается через веб-сервер Apache», тогда файл .htaccess обнаруживается и запускается программным обеспечением веб-сервера Apache. Эти файлы .htaccess можно использовать для изменения конфигурации программного обеспечения веб-сервера Apache, чтобы включить / отключить дополнительные функции и возможности, которые может предложить программное обеспечение веб-сервера Apache.Эти средства включают базовую функциональность перенаправления, например, при возникновении ошибки 404 файл не найден, или для более сложных функций, таких как защита паролем содержимого или предотвращение горячих ссылок на изображения.
Содержание
Комментарии
Деннис «Это лучшая статья о .htaccess, которую я когда-либо нашел! Мне она нравится! Это как php.net для .htaccess. Это был учебник / руководство, которого действительно не хватало в моей коллекции сайтов для создания веб-сайтов, и теперь я бы назвал это завершенным. Спасибо за этот замечательный сайт! » |
Рудрарадж Упадхьяя «чертовски хорошо. Отличные настройки. Продолжайте добавлять больше …» |
Томас «Одно из лучших руководств, которые вы можете получить по htaccess.» |
Роберт Нельсон «Согласен, фантастическая статья по теме.htaccess « |
xzli «Это очень полезное руководство по .htaccess! Спасибо!» |
Тоа «Именно тот сайт, который я искал. Молодец» |
Раймонд «Отличный ресурс! Молодец.» |
перц «Отличный сайт с фантастическими ссылками… Молодец! « |
РАХУЛ БАХАРВАЛ «Совершенно точная и информативная информация для людей, занимающихся веб-разработкой и сетями … большое спасибо … Пожалуйста, опубликуйте больше и больше таких невероятных трюков. С уважением, Рахул Бахарвал « |
jdp «Отличный материал. Достаточно простой для новичков, но достаточно подробный для более продвинутых пользователей.С большим уважением ». |
Рэнди Уэллс «Ненавижу употреблять слово« отличный ». Оно слишком часто используется и скучно. Я бы сказал, что это превосходно! Ага, отлично … Я действительно многое узнал о .htaccess, чего у меня не было. подвергались воздействию до сих пор. Безопасность — моя страсть. Ненавижу, когда меня обдирают. Так что настройки файла .htaccess мне очень помогут. Спасибо за самую отличную и полезную информацию! Рэнди Уэллс « |
Комментарий
.