.htaccess — это специальный файл-инструкция для домена apache, с помощью которого можно корректировать конфигурацию веб сервера, его модулей, а так же параметры PHP.
Инструкции распространяются на эту директорию, в которой создан файл, а так же на поддиректории.
Создать .htaccess можно через файловый менеджер хостинга (ISPmanager, который предоставляется бесплатно при аренде выделенного сервера) или через FTP. В Windows, MacOS, возможно, у вас не получится создать этот файл. Поэтому можно поступить следующим образом:
- Создать файл htaccess без точки
- Загрузить его на сервер по ftp
- Переименовать файл и поставить в начало имени файла — точку
Не отображается файл .htacess
Если вы загрузили файл htaccess, но он не отображается — значит вопрос в настройке FTP клиента или FTP сервера. В системе Unix, на которой работают большинство хостингов, если имя файла начинается на точку, система считает его скрытым. Поэтому, в первую очередь, чтобы сделать так, чтобы файл был доступен — зайдите в настройки вашего FTP клиента, к примеру, FileZilla, и включите отображение скрытых файлов.
Как изменить файл .htaccess?
В первую очередь, перед тем как начать редактировать этот файл — сделайте его резервную копию. Если что-то сделано не так, вы легко сможете восстановить работу сайта. Редактировать файл можно любым текстовом редакторов. Например, Notepad++, Sublime или редактор в панели хостинга.
Что нужно знать при редактировании файла хтаццесс?
Как было сказано выше — действие файла распространяется на текущую директорию и все внутренние поддиректории. Кроме того:
- Если правило начинается на символ «#», то это называется комментарием и веб сервер не будет его обрабатывать.
- Имеются специальные переменные. Например, %{REMOTE _ ADDR} для определения IP клиента и др.
- Пути к файлам, к примеру, до htpasswd указываются от корня сервера
- Адреса документов необходимо указывать с указанием протокола. К примеру, не www.website.ru, а http://website.ru
После редактирования файла появилась ошибка 500 — Internal Server Error
Это означает, что имеется ошибка в файле .htaccess. Возможные причины:
- Ошибка синтаксиса (опечатки, неверные настройки)
- Отсутствует тот или иной модуль в веб сервере
- Старая версия веб сервера/модулей или инструкций файла .htaccess
- Некоторые директивы запрещены к редактированию
Как устранить эту ошибку: посмотрите в error_log веб сайта. Там обязательно вы увидите указание на ошибку.
htaccess для HTML сайта
Файл .htaccess будет работать как для PHP сайтов, так и для html сайтов. Главное — наличие веб сервера apache, т.к. именно он обрабатывает этот файл.
Установка индексного файла для сайта
Индексный файл — это тот файл, который будет открываться при заходе на сайт или директорию сайта. Как правило, это файл: index.php, index.htm, index.html. Но вы можете поменять его на любой другой. К примеру: myfile.php такой директивой:
DirectoryIndex myfile.php
Вывод ошибок PHP
Если вы хотите включить отображение ошибок PHP, то в файл .htaccess необходимо добавить следующую директиву:
php_value display_errors 1
Таким образом, php будет показывать все ошибки прямо в браузере.
Ошибка 403 — Forbidden при открытии директории сайта
Ошибка 403 Forbidden означает, что доступ запрещен. Если вы видите эту ошибку при открытии директории сайта и вместо этого сообщения хотели увидеть список файлов и директорий, это означает, что отключена специальная директива. Это сделано в целях безопасности, чтобы потенциальные вредители не могли найти файлы, через который можно взломать сайт или просто открыть файлы, доступ к которым вы не разрешали. Чтобы включить показ всех файлов и директорий, напишите следующее:
Options +Indexes
А чтобы включить запрет на отображение файлов в директории, напишите:
Options -Indexes
Кроме того, можно запретить к показу только определенные типы файлов в директории. К примеру, запретим показывать файлы .php и .html:
IndexIgnore *.php *.html
.htaccess кодировка
Поменять кодировку сайта можно через файл .htaccess. К примеру, по умолчанию, веб сервер работает в кодировке UTF-8, а вам нужна кодировка windows-1251. Изменяется это просто:
AddDefaultCharset windows-1251
Таким образом, вы переопределите кодировку в текущий директории и поддиректории.
Так же можно задать кодировку отдельным типам файлам. К примеру, когда основной документ у вас в одной кодировке, а .htm файлы — в другой. Давайте сменим кодировку браузера для .htm файлов на UTF-8:
AddType «text/html; charset=utf-8» .htm
Изменение максимального размера загружаемых файлов в PHP
Вы можете увеличить или уменьшить максимальный размер загружаемого файла через скрипт PHP. К примеру, увеличим размер до 100МБ с помощью двух директив upload_max_filesize и post_max_size:
php_value upload_max_filesize 20M
php_value post_max_size 20M
Обратите внимание, что максимальный размер не может быть больше того значения, которое установлено на сервере. Максимальный размер файла, установленный сервером можно посмотреть через функцию phpinfo().
Время жизни сессии PHP
Через файл .htaccess возможно изменить время жизни сессии PHP. Время жизни задается в секундах. По умолчанию время хранения сессий — 1440 секунд — это 24 минуты.
Давайте увеличим время хранения на 1 неделю. Надо вписать в файл следующие директивы:
php_value session.gc_maxlifetime 604800
php_value session.cookie_lifetime 604800
Однако будьте с этим осторожны. При открытии сайта новым посетителем — создается файл сессии и если у вашего сайта большая посещаемость, то файлов сессий может накопиться очень много, а это может привести к:
- Быстрому исчерпанию места на диске
- Переполнение количества файлов в директории (inodes)
- К долгому удалению файлов через специальную системную утилиту — garbage collector
- Увеличению нагрузки на сервере
Включение обработки других файлов интерпретатором PHP
Через наш файл, вы можете указать отдельный список типов файлов, которые будут обрабатываться через php. К примеру, вы хотите включить обработку файлов интерпретатором PHP, которые имеют расширение .phtml. Тогда впишите:
AddType application/x-httpd-php .phtml
Ограничение на использование оперативной памяти в PHP
Для любого скрипта на сервере выдается ограничение на максимальный используемый объем оперативной памяти. Параметр называется memory_limit и его можно посмотреть через phpinfo() или изменить через .htaccess. К примеру, ограничить 256 МБ:
php_value memory_limit 256M
Обращаем внимание, что размер нельзя задать больше, чем разрешено самим сервером.
Основное зеркало сайта через .htaccess
Если у вашего сайта несколько алиасов (зеркал), то для SEO это не очень хорошо, т.к. появляется множество дублей сайта и он перестает быть уникальным. Можно настроить редирект на основной домен вашего сайта, к примеру, на имя website:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^website.ru
RewriteRule ^(.*) http://website.ru/$1 [R=301,L]
То есть, если человек открыл сайт по алиасу, мы его переадресовываем на основной адрес домена.
Включение переадресации для сайта на HTTPS
С недавних пор, Google и другие поисковые системы отдают предпочтение сайта, у которых настроен SSL. И если вы это сделали, то необходимо настроить переадресацию на эту версию, иначе опять возникнут дубли страниц сайта по разным адресам: http и https. Просто впишите следующее в ваш файл:
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
Правильная SEO переадресация с HTTPS
Чтобы исключить дубли сайта и включить переадресацию на https версию сайта, нужно внести следующее. На примере, рассмотрим вариант, когда основной домен — без www:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.(.+) [NC]
RewriteRule ^(.*) https://%1/$1 [R=301,NE,L]
RewriteCond %{HTTPS} off
RewriteRule ^https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
Запрет доступа по IP
Через файл .htaccess вы можете запретить доступ к ресурсам сайта или наоборот, разрешить только определенным IP адресам. Можно ограничить как ко всем файлам и директориям, так и к некоторым.
К примеру, запретим доступ всем к текущей директории, поддиректории и файлам:
Order Deny,Allow
Deny from all
А можно заблокировать пользователя, зная его IP адрес 192.168.1.1:
Order Deny,Allow
Deny from 192.168.1.1
Или наоборот, запретить всем, а разрешить только 223.332.111.11:
Order Deny,Allow
Deny from all
Allow from 223.332.111.11
Указание собственных страниц ошибок
Вы можете указать свои страницы для различных ошибок (404,403, 500). Просто указать соответствующий путь до них относительно адреса сайта:
ErrorDocument 403 /error/403error.html
ErrorDocument 404 /error/404error.html
ErrorDocument 500 /error/500error.html
Где /error/название файла — это HTML версия страницы ошибки. Пользователь увидит ее, если возникнет соответствующая ситуация.
Если у вас возникли затруднения в настройке этого файла или некоторые директивы вам не понятны — вы легко можете обратиться к нашей техподдержке за помощью. Мы поможем вам правильно настроить файл .htaccess в любое время.