Что такое .htaccess и как его использовать?
Автор:
|
||||
.htaccess — файл дополнительной конфигурации веб-сервера Apache. Позволяет задавать большое количество дополнительных параметров и разрешений для работы веб-сервера у отдельных пользователей (а так же на различных директориях отдельных пользователей), таких как управляемый доступ к каталогам, переназначение типов файлов и т.д., не предоставляя доступа к главному конфигурационному файлу т.е. не влияя на работу всего сервиса целиком. Как правило, .htaccess располагается в корневом каталоге сайта на хостинге.
В случае отсутствия файла в корневом каталоге сайта, Вы можете создать его самостоятельно через панель управления хостингом ISP-менеджер.
Записи, вносимые в .htaccess называются директивами. Директивы действуют на все файлы в текущем каталоге и во всех его подкаталогах (если эти директивы не переопределены директивами нижележащих файлов .htaccess). Далее рассматриваются варианты записи некоторых директив.
1. Директива простого перенаправления (редирект) Предположим необходимо переадресовать пользователя сайта на другой сайт (URL), для этого Вам необходимо в файл .htaccess дабавить следующую строчку: Redirect 301 / http://www.example.com где http://www.example.com - URL на который идет перенаправление
2. Директивы сложного перенаправления (mod_rewrite). Модуль mod_rewrite — это мощнейшее, интеллектуальное средство преобразования URL адресов. С ним возможны почти все типы преобразований, которые могут выполняться или нет в зависимости от разных условий, факторов. Некоторые примеры использования данной директивы: - если ваш сайт поддерживает как обычное соединение(http) так и шифрованное(https), то часто возникает необходимость перенаправить весь трафик http на https незаметно для пользователя. Для этого прописываем следующее правило: - Редирект на https без www RewriteEngine on RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L] RewriteCond %{SERVER_PORT} !^443 RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ https://yourdomain.by%{REQUEST_URI} [R=301,L] RewriteCond %{HTTP:X-SSL-Emu} !on RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
- Редирект на https с www RewriteEngine On # Redirect to www RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L] RewriteCond %{SERVER_PORT} !^443 RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ https://www.yourdomain.com%{REQUEST_URI} [R=301,L]
- закрываем доступ к веб-сайту в рабочее время; RewriteEngine on RewriteCond %{TIME_HOUR}%{TIME_MIN} > 900 RewriteCond %{TIME_HOUR}%{TIME_MIN} < 1800 RewriteRule .* - [ F ]
- сайт перенесен с одного домена на другой с domain.com на domain2.com. RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [R=301,1] RewriteRule ^(.*)$ http://www.domain2.com/
3. Обработка ошибок В ходе работы сервера иногда возникают ошибки, скорее это будет правильней назвать не сбоями в работе сервера, а стандартными кодами возврата. Говоря простым языком: сервер отвечает пользователю на невыполненный запрос кодом возврата, зная значение которого можно понять, с чем конкретно связана ошибка при запросе информации у сервера. Коды, начинающиеся с 4хх и 5хх причисляются к разряду ошибок. При возникновении ошибки 4xx или 5xx посетитель вашего сайта увидит в браузере сообщение от сервера, которое вряд ли можно назвать предельно понятным рядовому пользователю. Apache предоставляет возможность выдать вместо аскетичного технического текста, не изобилующего деталями, свою страницу, где вы можете человеческим языком объяснить пользователю, что произошло и что делать.
Пример переопределения страниц ошибок приведен ниже: - ситуация, когда посетитель обращается к несуществующей странице;
- в случае, когда доступ к странице ограничен;
- в запросе посетителя обнаружена синтаксическая ошибка;
- любая внутренняя ошибка сервера, которая не входит в рамки остальных ошибок класса.
4. Кодировка Иногда браузер пользователя не может корректно определить тип кодировки выдаваемого документа. Для решения этой проблемы используемая кодировка указывается в настройках Web-сервера Apache и заголовке передаваемого документа. Причем для корректного распознания эти кодировки должны совпадать. На наших серверах по умолчанию используется кодировка UTF-8. Ниже приведены некоторые варианты настроек .htaccess: - указание кодировки по умолчанию;
или
- ситуация, когда все загружаемые на сервер файлы будут автоматически перекодированы в заданный формат.
5. Настройка максимального размера загружаемых файлов в PHP. Максимальный размер загружаемых файлов указывается в .htaccess с помощью двух директив: php_value upload_max_filesize 20M php_value post_max_size 20M Вместо 20M укажите желаемый размер ограничения. Значение этих параметров не может быть больше 50M. Обратите внимание, что символ "M" (латинская M) указывается слитно со значением.
6. Ограничение доступа к сайту по IP-адресам. Часто возникает ситуация, когда необходимо запретить доступ к сайту для одного, нескольких или всех IP-адресов. Примеры некоторых вариантов настройки: - запрет доступа для конкретного IP-адреса; Order Allow,Deny Allow from all Deny from 192.168.1.1. где 192.168.1.1. - IP-адрес, которому запрещается доступ(в конце обязательно должна быть точка). - запрет доступа к сайту всем, кроме конкретного IP-адреса; Order Deny,Allow Deny from all Allow from 192.168.1.1. где 192.168.1.1 - IP-адрес, которому доступ будет открыт. - запрет любым хостам доступ к файлам с расширениями .txt и .dat (например, в них могут храниться внутренние данные скриптов). <FilesMatch "\.(txt|dat)$"> Order Deny,Allow Deny from all Дополнительные статьи по настройке .htaccess : Почему возникает ошибка "Fatal error: Allowed memory size"? Как сделать "красивый" список файлов директории на хостинге с помощью веб-сервера Apache? С более подробной информацией о возможностях работы с файлом .htaccess Вы можете ознакомиться на официальном сайте Apache.
| ||||
Если решение вопроса найти не удалось, Вы можете отправить нам заявку: |