Зачем нужен файл htaccess, где он находится и за что отвечает

Зачем нужен файл htaccess, где он находится и за что отвечает Зачем нужен файл htaccess, где он находится и за что отвечает

Анастасия Сотула

Редактор блога Serpstat

Когда вебмастер или SEO-оптимизатор не умеет работать с htaccess, то теряет массу уникальных возможностей. От создания красивых ссылок до быстрого удаления дублей страниц из индексной базы поисковиков.

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

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

Перед тем как создать файл htaccess, нужно сделать своего рода «болванку». Идеальный вариант — простой текстовый файл. Для его создания нажмите правой кнопкой мыши по свободному пространству какой-либо папки или рабочего стола. Затем выберите «Создать» и в выпадающем списке отметьте «Текстовый документ».

Зачем нужен файл htaccess, где он находится и за что отвечает

Откройте текстовый файл, выберите «Файл» и «Сохранить как». В появившемся окне в поле «Имя файла» скопируйте .htaccess, а «Тип файла» поменяйте на «Все файлы». В конце нажмите «Сохранить». Готово! Будьте внимательны при задании имени файла. Оно должно состоять из точки и htaccess. Никаких пробелов и дополнительных символов.

Зачем нужен файл htaccess, где он находится и за что отвечает

Сохранение файла htaccess

Будьте внимательны при задании имени файла. Оно должно состоять из точки и htaccess. Никаких пробелов и дополнительных символов.

Зачем нужен файл htaccess, где он находится и за что отвечает

Проверка названия файла .htaccess

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

Если открыть htaccess «Битрикс», Drupal, Joomla или другой популярной CMS, внутри окажется перечисление команд. В документации они обозначаются как директивы. Каждая из них пишется на отдельной строке.

Когда требуется написать комментарии в htaccess, перед ними ставится знак # (решетка). Начинающиеся с нее строки сервер игнорирует. Удобно, что изменения вступают в силу после сохранения файла. Перезагружать Apache не надо. Зачем нужен файл htaccess, где он находится и за что отвечает

На картинке представлен стандартный файл htaccess для CMS WordPress

Зачем нужен файл htaccess, где он находится и за что отвечает

На изображении пример файла htaccess для CMS Joomla. Точнее, его начало. На момент написания статьи он включал 166 строк. Разработчики постарались максимально доходчиво объяснить, с чем именно предстоит иметь дело конечным пользователям.

Наряду с директивами в htaccess используются переменные и регулярные выражения. Подробно мы их не рассматриваем. Те же «регулярки» — настолько объемная тема, что по ней пишутся книги на сотни страниц. Однако на основных моментах остановимся.

Символ; Значение

^; Начало строчки $; Конец строчки .; Любой знак *; Любые знаки в неограниченном количестве ?; Конкретный символ [0-9]; Диапазон от 0 до 9 | ; Выбор между несколькими группами (); Выбор групп знаков

Переменная;Значение

%{HTTP_USER_AGENT};Информация о приложении %{REQUEST_URI};Данные об URI %{QUERY_STRING};Перечисление параметров запроса %{REMOTE_ADDR};Пользовательский IP-адрес

Официальную документацию по htaccess читайте здесь. Надежная защита сайта через htaccess вполне возможна, если хорошо разобраться в особенностях настройки сервера и понять, что и для чего блокировать. Скажем, с помощью прописанных в htaccess правил защищаются файлы, настраиваются права доступа по IP и выставляются пароли на директории. Чтобы приблизительно понять, как это работает, рассмотрим пример. Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L] Приведенный выше набор директив решает 2 важные задачи — защищает сайт от скрипт-инъекций и изменяет запросы или глобальные переменные. Вначале активируется контроль символических ссылок. Под ними следует понимать спецфайлы, где вместо предназначенных для пользователей данных хранятся пути к файлам, которые открываются при обращении к ссылкам. Вслед за контролем сим-ссылок запускается механизм перезаписи адресов страниц. Далее блокируются ссылки с тегами и сторонние скрипты для изменения переменных языка программирования PHP GLOBALS и REQUEST. В конце подозрительные запросы перенаправляются на страницу с ошибкой 403. Тем самым затрудняется жизнь злоумышленников, которые пытаются взломать сайт. Мало что поняли? Не страшно! Даже если поверхностно разбираетесь в правилах htaccess, никто не мешает пользоваться чужими разработками. Вы можете без проблем взять показанный нами набор директив и использовать на сайте. Веб-сервер Apache активно применяется уже десятки лет. Найти готовое решение зачастую не составляет труда. Это экономит время и предотвращает грубые ошибки. Временами на сайтах появляются не загружающиеся страницы. При обращении к ним вместо контента пользователи видят белый экран, что говорит о наличии ошибок. Как их посмотреть? Если «движок» сайта написан на PHP, вывод ошибок в htaccess настраивается одной директивой – php_flag_display_errors on. Отключение выполняется тоже элементарно. Достаточно прописать php_flag_display_errors off. SEO-оптимизаторы постоянно используют 301 редирект в htaccess. Делается это для повышения эффективности поискового продвижения. В первую очередь путем перенаправлений удаляются ненужные страницы из индекса поисковиков. Перед тем как прописать 301 редирект в htaccess, оптимизатор анализирует сайт и находит мешающие продвижению странички. Чаще всего они содержат ошибки и дубли контента. Отбор страниц выполняется вручную или автоматически. На следующем этапе специалист продумывает, как настроить 301 редирект htaccess с максимальной эффективностью. Одно дело, когда удаляются 10-20 страниц, и совсем другое — тысячи. К составлению директив требуются совершенно разные подходы. В конечном итоге оптимизатор подбирает оптимальный вариант, как сделать 301 редирект через htaccess, и приступает к написанию серверных инструкций. При условии, что они составлены правильно, страницы исчезают из индекса. Происходит это так. Поисковый робот заходит на страничку для переиндексации. При обращении срабатывает редирект. Поисковик получает сигнал, что страница больше не существует по старому адресу. Значит, ее надо убрать из индексной базы. На практике 301 редирект с одной страницы на другую представляется в виде простой инструкции. Синтаксис следующий:

Redirect 301 http://www.mysite.com/page_01.php http://www.mysite.com/page_02.php.

Сперва пишется указание, что это редирект. Следом прописывается, с какой страницы и куда перенаправлять. Интересно, что похожей практикой пользуются веб-программисты при написании систем управления контентом. Специалисты применяют htaccess редирект всех страниц на одну — главную. В основном это index.php. Страничка является своего рода точкой входа в веб-приложение. Туда уходят все запросы, где ПО сайта производит их разбор. Директивы для перенаправления всех страниц на одну выглядят так: RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /index.php/$1 [L,QSA]
RewriteEngine On
RewriteCond %{HTTP_HOST} mysite_01.com
RewriteRule (.*) http://mysite_02.com/$1 [R=301,L]
Вебмастера хотят включить 301 переадресацию с сайта на другой домен в htaccess по разным причинам. Одна из самых распространенных — перенос проекта на альтернативное доменное имя. Допустим, с бесплатного на платное. Составлять htaccess 301 редирект на новый домен надо крайне аккуратно. Малейшая ошибка способна привести к выпадению целых разделов из индекса. Лучше писать правила постепенно и предварительно тестировать на локальном сервере. Нужен 301 редирект htaccess с одного домена на другой и при наличии 2 или более имен. Предположим, главный сайт имеет 2 адреса — mysite.com и my-site.com. Первый — главный, а второй — вспомогательный. С него и идет перенаправление. Некоторые вебмастера применяют htaccess перенаправление на другой домен в целях аккумуляции трафика. Первоначально покупается большое число доменных имен в различных зонах. Затем их посетители отправляются на приоритетный проект.

Среди прочего htaccess редирект на другой сайт оптимален для склеивания зеркал. В интернете зеркалами считаются сайты с одинаковым контентом, но разными доменными именами. Грамотно настроенные перенаправления избавляют от массы проблем с SEO.

Читайте также:  Как попасть в рекомендации TikTok: подробная инструкция

В целом, перенаправление на другой сайт через htaccess – весьма распространенный метод. К нему прибегают как в SEO, так и в служебных целях. В особенности это характерно для высоконагруженных интернет-проектов. RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(.+).mysite.com$
RewriteRule (.*) https://mysite.com/$1 [L,R=301,QSA] Когда не работает 301 редирект через htaccess, убедитесь, что директивы составлены правильно. В большинстве случаев перенаправление не срабатывает из-за ошибочных инструкций. Если ошибок нет, проверьте наличие и содержимое файла в соответствующей папке. Иногда вебмастера забывают переносить htaccess на сервер или не обновляют его после изменений. Наконец, свяжитесь с поддержкой хостинга и узнайте, нет ли проблем на их стороне. RewriteEngine On
RewriteCond %{HTTP_ACCEPT} “text/vnd.wap.wml|application/vnd.wap.xhtml+xml” [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^ http://m.mysite.com%{REQUEST_URI} [R,L]

Описание;Редирект

1. Редирект на 404 htaccess – срабатывает, когда обращаются к несуществующей странице. В результате пользователь получает 404 ошибку.;ErrorDocument 404 /404.php 2. 302 редирект htaccess – выполняет временное перенаправление. Полезен для SEO, так как сообщает поисковикам, что страница вернется через какое-то время.

Часто используется при технических работах на сайте.;Redirect 302 /old-page https://mysite.com/new-page 3. htaccess 403 редирект – сигнализирует о запрете доступа. Сервер принимает запрос, но авторизацию не осуществляет.;ErrorDocument 403 http://mysite.com/403.php 4. htaccess 410 редирект – полезен для удаления сайтов из поисковой выдачи.;ErrorDocument 410 default

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

Redirect /category http://category.mysite.com.

Быстрое создание субдоменов поддерживает панель управления любого платного хостинга. Эффективная настройка кэширования через файл htaccess возможна, если он размещается в корневой папке сайта. Прописанные в нем правила распространяются на директорию и ее подпапки. Глубина вложения поддиректорий значения не имеет.
ExpiresActive On
ExpiresByType image/jpg “access 1 year”
ExpiresByType image/jpeg “access 1 year”
ExpiresByType image/gif “access 1 year”
ExpiresByType image/png “access 1 year”
ExpiresByType text/css “access 1 month”
ExpiresByType text/html “access 1 month”
ExpiresByType application/pdf “access 1 month”
ExpiresByType text/x-javascript “access 1 month”
ExpiresByType application/x-shockwave-flash “access 1 month”
ExpiresByType image/x-icon “access 1 year”
ExpiresDefault “access 1 month”

Через htaccess кэш браузера обновляется не только в пределах указанных периодов. Для тех же картинок можно прописать «access 1 month» вместо «access 1 year». И наоборот, для документов в формате PDF «access 1 month» легко заменить на «access 1 year».

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

Зачем нужен файл htaccess, где он находится и за что отвечает

Доброго времени суток, дорогие читатели!

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

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

Зачем нужен файл htaccess, где он находится и за что отвечает

Что такое htaccess

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

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

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

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

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

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

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

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

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

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

Подведем промежуточные итоги, чтобы вам было понятнее. С помощью htaccess вы сможете:

  1. Настраивать редиректы (переадресацию) на различные адреса вашего ресурса. Пользователь будет заходить по одному какому-то адресу, его будет переадресовывать на другой. Полезно, когда у документа (статьи или страницы) сменился URL, и вы не хотите, чтобы пользователи получали ошибку 404 при обращении на этот адрес.
  2. Настраивать редиректы на другие домены. Это может понадобиться в случае, если вы хотите перенести свой ресурс на другой домен, но при этом не хотите терять существующую аудиторию, которая попытается перейти на сайт по старому домену. Через htaccess вы сможете настроить простую переадресацию, которая будет переводить пользователей на нужный вам новый домен.
  3. Сделать переадресацию на домен с www или без него. По умолчанию многие проекты доступны по нескольким вариантам одного домена. Например, условный site.ru можно открыть как просто , так и . Это порождает лишние дубли и очень негативно влияет на поисковое продвижение. С помощью конфига вы сможете настроить переадресацию на основной вариант.
  4. Сделать редирект на https. После установки SSL-сертификата ваш ресурс будет доступен уже по четырем разным вариантам адреса. К предыдущему пункту прибавится еще версия с https-протоколом. Htaccess поможет вам сделать основной только одну версию. То есть сделать редирект сразу же на нужный вариант адреса с нужным протоколом.

Файл .htaccess: что это такое, зачем он нужен, как правильно создать и настроить

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

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

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

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

  • Настраивать директивы простого перенаправления (редиректы). Это позволит после смены домена отправить посетителя со страницы предыдущего сайта на новый проект.
  • Переадресовывать с URL, где есть www, на домен без www. Или же на https после того, как установите ssl сертификат.
  • Описывать ошибки. В их числе и ошибка 404 с заменой на необходимую страницу.
  • Кэширование файлов. Делается с целью ускорения работы веб-ресурса.
  • Создавать ЧПУ. Это «Человеко-понятные УРЛы», то есть, формируются ссылки, понятные для интернет-пользователей.
  • Изменять исходный код страниц.
  • Управлять доступом к файлам и директориям при помощи паролей.
  • Задавать индексный файл.
  • Открывать и закрывать доступ с определенных IP-адресов.
  • Управлять поисковыми ботами на сайте.
  • Настраивать директивы сложного направления.
Читайте также:  Некогда или никогда: 30 часов на отдых или в поисках потерянного времени

Главное предназначение .htaccess – настраивать сайт и каталоги в соответствии с определенными требованиями. То есть, посредством этого файла, SEO-специалисты и программисты могут изменять настройки веб-сервера, даже не имея администраторских прав.

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

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

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

Да, мы все привыкли видеть файлы с названием из слова, и расширением после точки, которое состоит всего из 2-3 букв. Но пустые названия позволяют делать файлы и папки «скрытыми», с открытым исходным кодом. Из этого следует вывод, что .htaccess для обычных пользователей остается невидимым, поэтому они не смогут его изменить. Но есть у этого метода «скрытия» файла и обратная сторона медали.

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

Хорошо, что большинство хостингов оставляют место на диске, где htaccess-файл уже установлен автоматически.
Но если вы не найдете его, то попробуйте зайти в менеджер файлов, который встроен в ваш хостинг. В нем могут показываться скрытые файлы и директории. Ищите его в public_html, а затем с помощью установленного в программе текстового редактора откорректируйте и сохраните файл, после чего он загрузится на сервер самостоятельно. Если вы не найдете документ по указанному пути, то создайте собственный. Может случиться так, что на экране появится ошибка. Значит, данный хостер запретил создавать служебный файл. Недорогие хостинги зачастую запрещают клиентам создавать и изменять подобный документ. Таким образом они стимулируют пользоваться их услугами по более дорогостоящим тарифам, где это разрешено.Для этого вам понадобится самый обычный текстовый редактор, к примеру, Блокнот, который есть на любом ПК:

  1. Откройте Блокнот, ничего в нем не пишите.
  2. Выберите пункт «Файл» и нажмите «Сохранить как».
  3. Появится окно, где напротив пункта «Тип файла» выберите «All types» или «Все файлы».
  4. В строке «Имя файла» введите .htaccess и кликните на «Сохранить».

Далее перепроверьте, создан ли документ правильно. Обязательно посмотрите, не сохранили ли вы его как .htaccess.txt. Затем загрузите файл в корневую папку сервера, и если не отобразится ошибка 500, значит, вы все сделали правильно. Отныне вы можете редактировать файл, что позволит вам управлять веб-сайтом более гибко.Рассмотрим самые популярные команды для .htaccess.
Эти директивы используются с завидной регулярностью. Они позволяют перенаправить посетителя со старого URL на новую страницу. Это возможно благодаря 301-редиректу. Достаточно в код файла вписать:

Код:

Redirect 301 /старый_URL.html http://www.название_вашего_сайта.ru/новый_URL.html
В целом директива будет отображена в таком виде:

Код:

Redirect [status] URL_LOCAL URL_REDIRECT
URL_LOCAL – это старый адрес, с которого осуществляется перенос пользователя.

URL_REDIRECT – новый URL, куда переносится страница.

В поле [status] могут быть следующие значения:

  1. 301 – страница перенесена навсегда.
  2. 302 – страница перенесена на время.
  3. 303 – смотрите другую страницу.
  4. 410 – страница удалена.

Этот модуль содержится в Apache. В нем есть изобилие самых разных директив для расширенного управления адресами. К основным из них относятся:
Предназначен для того, чтобы преобразовать домен с www на URL без www. Достаточно ввести правило:

Код:

Конфигурационный файл .htaccess

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

Таким программным обеспечением и является веб-сервер. Существуют различные типы веб-серверов, но самый распространенный — Apache.

Он построен на открытом коде, предоставляется бесплатно, постоянно дорабатывается и улучшается, совместим с многими скриптами и работает почти на всех платформах, включая Windows, Linux, Netware 5.x.

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

Главный конфигурационный файл называется httpd.conf или apache.conf (в зависимости от дистрибутива ОС).

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

а) уменьшает время ответа веб-сервера при запросе (так при каждом обращении к веб-серверу Apache не будет просматривать все каталоги на наличие .htaccess);

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

Но доступ к этому файлу может быть не у всех пользователей сервера (например, в случае с виртуальным хостингом), поэтому остальным предлагается файл дополнительной конфигурации веб-сервера — .htaccess (c точкой в начале названия).

Заказать виртуальный хостинг

Содержание

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

Файл (или файлы) .htaccess будет задавать правила работы веб-сервера только в каталоге, где он размещен, и его дочерних каталогах, без глобальных изменений работы всего сервера. Возможность использовать .htaccess прописывается директивой (т.е. командой) AllowOverride в главном конфигурационном файле httpd.

conf, название которой прямо говорит о том, что настройки внутри .htaccess приоритетны перед настройками в httpd.conf (если иное не ограничено все той же директивой AllowOverride). С помощью этой директивы можно позволить все, а можно — только некоторые действия.

Детальную инструкцию по его применению можно найти на сайте Apache.

С ней, при каждом обращении к веб-серверу, Apache будет просматривать все каталоги на наличие .htaccess. Изменения в файле действительны сразу после сохранения — перезагрузка всего веб-сервера не нужна (в отличие от изменений в httpd.conf).

Имя файла .htaccess — общепринятое, но вовсе не обязательное. В httpd.conf можно задать другое имя с помощью директивы AccessFileName, например, так:

AccessFileName .config

Как создать файл .htaccess

Как уже говорилось, конфигурационные файлы имеют текстовый формат, и создать .htaccess также можно с помощью текстового редактора (например, Блокнота или NotePad++ в Windows).

  • Имя файла — .htaccess (с точкой в начале);
  • тип — «Все файлы»;
  • формат переноса по словам;

режим ASCII (при загрузке .htaccess на хостинг по FTP-протоколу).

Apache — регистрозависимый веб-сервер, поэтому важно написать название маленькими буквами: .HTaccess и .htaccess — это разные файлы.

В Mac ОS файлы, начинающиеся с точки, невидимы. Поэтому вы можете назвать его иначе и после, переместив по FTP на хостинг, переименовать. Обычно размещают файл в корневой директории веб-сервера (/public_html) либо в корневой директории сайта (/public_html/site.com/).

Синтаксис .htaccess

Синтаксис .htaccess аналогичен синтаксису httpd.conf. Для каждой директивы предполагается отдельная строка. Для своего же удобства вы можете вносить в файл комментарии с помощью знака #, и значение после # будет игнорироваться веб-сервером. Этот трюк можно использовать для отключения любой директивы. Ее не нужно удалять полностью из файла – достаточно просто закомментировать.

Возможности конфигурационного файла огромны. Ниже приведены базовые настройки в .htaccess.

Возможности .htaccess

Контроль доступа

Запрет веб-доступа:

Читайте также:  Дзен, Алиса и Cocaine: как познать основы нейминга

Order Deny,Allow
Deny from all

Запрет веб-доступа, кроме IP:

order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx

Запрет веб-доступа для IP:

Order allow,deny
Allow from all
Deny from xxx.xxx.xxx.xxx

Запрет доступа к файлу:

Order allow,deny
Deny from all

Защита директории с помощью пароля:

AuthType Basic
AuthName “Directory Name”
AuthUserFile /home/cpanel_user/.htpasswds/public_html/smth/passwd
require valid-user

# где “Directory Name” — имя директории,которую нужно защитить, а
# /home/cpanel_user/.htpasswds/public_html/smth/passwd — путь к файлу passwd с логинами и паролями разрешенных пользователей.
# В файле должны быть записи вида пользователь:пароль

Работа с ошибками веб-сервера

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

Полный список кодов состояния можно найти в Википедии. Для самых распространенных (ошибка 404 и ошибка 500) желательно создать свою страницу, которая лучше смотрится и представляет посетителю пути выхода.

Задается она следующим образом:

ErrorDocument 404 http://yourdomain.com/error/404.html
# где http://yourdomain.com/error/404.html — путь к созданной странице.

P.S. Пользователи услуги хостинг сайта от HOSTiQ.ua могут воспользоваться для создания своей страницы функционалом контрольной панели cPanel (в разделе «Расширенный» пункт «Страницы ошибок»).

Настройка 301 редиректа в htaccess

Для создания постоянного перенаправления используется директива 301 редиректа, которая передает весь вес страницы на новый URL (поэтому оно предпочтительней, чем 302 редирект — в целях SEO).

Перенаправление всего сайта на новый домен:

Redirect 301 / http://www.newdomain.com/

Перенаправление страницы на новую:

Redirect 301 /page1.html http://mydomain.com/page2.html

Модуль перенаправления mod_rewrite

Незаменимым механизмом для изменения URL-ссылок “на лету” является модуль mod_rewrite. Его полезность, а вместе с тем, сложность заключается в том, что можно использовать несметное количество правил, включающих еще больше переменных.

  1. Для работы модуля, прежде всего, нужны директивы:
  2. RewriteEngine On (включает работу механизма преобразования)
  3. Options FollowSymLinks (условие для работы mod_rewrite).

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

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

RewriteRule

Одной из самых функциональных директив модуля mod_rewrite является RewriteRule. Для того чтобы указать условие, при котором будет работать правило, используется директива RewriteCond. Она (одна или несколько) обязательно прописывается перед RewriteRule.

Перенаправление страницы на новый домен:

RewriteRule ^page1.html$ http://newdomain.com/ [R=301]

Перенаправление сайта с домена без www на домен с www:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www..* [NC]
RewriteRule ^(.*) http://www.%{HTTP_HOST}/$1 [R=301]

И наоборот:

RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Перенаправление по протоколу HTTPS (предварительно нужно установить сертификат HTTPS):

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Эти строки необходимо разместить в самом верху .htaccess.

Блокировка ботов

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

SetEnvIfNoCase User-agent (Abonti|AhrefsBot|Aport|AspiegelBot|asterias|Baiduspider|BDCbot|Birubot|BLEXBot|BUbiNG|BuiltBotTough|Bullseye|BunnySlippers|Butterfly|CamontSpider|CCBot|Cegbfeieh|CheeseBot|CherryPicker|coccoc|CopyRightCheck|cosmos|crawler|Crescent|DeuSu|discobot|DittoSpyder|DnyzBot|DomainCrawler|DotBot|EasouSpider|EmailCollector|EmailSiphon|EmailWolf|EroCrawler|Exabot|ExtractorPro|Ezooms|FairShare|Fasterfox|FeedBooster|Foobot|Genieo|Gigabot|GrapeshotCrawler|Harvest|hloader|HTTrack|humanlinks|HybridBot|Incutio|InfoNaviRobot|InternetSeer|IstellaBot|JamesBOT|JennyBot|k2spider|kmSearchBot|larbin|LexiBot|libWeb|libwww|Linguee|LinkExchanger|LinkextractorPro|linko|LinkWalker|lmspider|LNSpiderguy|magpie|MaxPointCrawler|MegaIndex|memoryBot|MIIxpc|Mippin|MJ12bot|MLBot|moget|MSIECrawler|NetAnts|NetpeakCheckerBot|NICErsPRO|NjuiceBot|NPBot|Nutch|OLEcrawler|Openfind|PostRank|ProWebWalker|Purebot|PycURL|RepoMonkey|Riddler|RMA|Scrapy|SemrushBot|serf|SeznamBot|SISTRIX|SiteBot|SiteSnagger|Serpstat|Slurp|SnapPreviewBot|Sogou|Soup|SpankBot|spanner|spbot|Spinn3r|SpyFu|suggybot|SurveyBot|suzuran|SWeb|Teleport|Telesoft|TheNomad|TightTwatBot|Titan|True_Robot|ttCrawler|turingos|TurnitinBot|UbiCrawler|UnisterBot|Unknown|VCI|Vedma|Voyager|WBSearchBot|WebAuto|WebBandit|WebCopier|WebEnhancer|WebmasterWorldForumBot|WebReaper|WebSauger|WebStripper|Wotbox|Yeti|YottosBot|Zao|Zeus|ZyBORG) not-allowed=1
Order Allow,Deny
Allow from ALL
Deny from env=not-allowed

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

Определение кодировки

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

AddDefaultCharset UTF-8

Такое изменение распространяется в пределах действия .htaccess и на все страницы сайта. Можно задать кодировку для определенного типа файла, например windows-1251 для html:

AddType “application/x-httpd-php3; charset=windows-1251” .html

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

Приведенная здесь utf-8 практически всегда требуется при работе популярных cms, так как они рассчитаны на большой круг пользователей по всему миру.

Кстати, по умолчанию эта же кодировка настроена и на наших серверах виртуального хостинга.

Другие возможности

– Определить индексный файл сайта:

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

DirectoryIndex index.php

– Полезной директивой является FilesMatch, которая оговаривает пределы действия правила по названию файла, используя регулярные выражения. С ее помощью, например, можно запретить доступ к определенным файлам:

Order Allow,Deny
Deny from all

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

Причина в том, что работающий как suPHP веб-сервер не поддерживает php_flag и php_value. Поэтому мы предлагаем использовать сPanel (крайне полезен подраздел “Выбор версии РНР”, для работы с error_log – “Журнал ошибок”) или создать локальный файл php.ini для этой цели. Пару директив мы все-таки привели ниже:

– Для того, чтобы избежать зависания веб-сервера при обработке некорректно написанных скриптов, существует max_execution_time. С ее помощью указывается время в секундах, отведенное на обработку РНР-скрипта. Можно увеличить время ожидания веб-сервера при выполнении скрипта:

php_value max_execution_time 60

– Определить максимальный размер загружаемого файла:

php_value upload_max_filesize 128M (здесь вместо 128 поставьте нужное значение).

– Вывести ошибки РНР в отдельный файл:

php_flag log_errors on
php_value error_log /home/path/to/public_html/domain/PHP_errors.log
# PHP_errors.log — название файла, а
# /home/path/to/public_html/domain — путь к нему).

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

Если .htaccess не работает

Проверить работу файла можно, прописав несложные директивы, которые при правильном синтаксисе и верных настройках httpd.conf (как описывалось в начале статьи) должны сработать:

– например, запретив доступ к сайту извне с помощью директивы

Order deny,allow
Deny from all

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

  • Если проблема действительно существует, нужно в первую очередь искать причину в главном конфигурационном файле:
  • – убедиться, что сервер разрешает использование файла .htaccess: есть запись AllowOverride All (и она не закомментирована с помощью #);
  • – проверить, что создана запись VirtualHost для домена. В качестве примера:

DocumentRoot /www/example1
ServerName www.example.com
# Другие директивы

– название файла дополнительной конфигурации указано как вам нужно. Если это .htaccess, то:

AccessFileName .htaccess

– присутствует хостнейм сервера (указывается при создании URL-перенаправлений) в виде IP-адреса сервера или домена:

ServerName www.example.com

Если же причина не в httpd.conf, нужно проверить сам .htaccess на наличие синтаксических ошибок. Можно воспользоваться онлайн-сервисами (например, http://www.htaccesscheck.com/, http://htaccess.madewithlove.be/), или — оригинальным источником, где есть полный перечень директив вместе с синтаксисом.

И еще несколько советов по работе с .htaccess

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

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

Хотя изменения и сразу вступают в силу, кэш браузера никто не отменял. Для проверки работы сайта после редактирования .htaccess регулярно пользуйтесь его очисткой или загружайте страницу в обход кэша — через комбинацию клавиш Ctrl + F5 (в Safari: Ctrl + R, в Mac OS: Cmd + R).

Самая распространенная ошибка веб-сервера при работе с .htaccess — 500. Она указывает на проблему в синтаксисе (опечатка в директиве, например), либо же в главном конфигурационном файле не разрешен такой тип директивы.

Полезные ссылки

Лучший источник вдохновения для работы с .htaccess:

http://httpd.apache.org/docs/2.2/howto/htaccess.html

Многие инструкции по работе с .htacess, на русском:

http://htaccess.net.ru/

Простые генераторы директив для .htaccess:

http://htaccess.ru/generator/

http://www.htaccesseditor.com/en.shtml

Если вам недостаточно .htaccess файла для внесения изменений в конфигурацию веб-сервера, возможно, аренда выделенного сервера в Европе или США вам подойдет.

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

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

Тестировать виртуальный хостинг

Ссылка на основную публикацию