Что такое .htaccess и зачем он нужен
Когда мы вводим в браузере нужный нам URL, то получаем доступ к файлам, которые находятся по этому адресу. Какие файлы и как оно будет отображаться, определяет веб-сервер. Есть определённые настройка для конфигурации сервера, но вы можете менять их или дополнять своими правилами, которые будут применяться для всех пользователей этого сервера.
И .htaccess один из таких файлов, позволяющий изменить конфигурацию сервера. Таким образом мы можем создать дополнительную функциональность. Например, перенаправления пользователей, изменение URL, обеспечение защиты директорий паролем, сжатье файлов и т.д
Когда у нас нет доступа к изменению конфигурации на прямую с сервера или с виртуального хостинга, мы можем сделать изменения в локальном файле .htaccess.
Если вы программист, а не системный администратор, то без .htaccess файла самостоятельно изменить конфигурации сервера трудно. Для SEO продвижение этот файл имеют большое значение. Мы тут можем делать сжатье файлов, кэширование, перенаправления, обновление сайта. Всё это очень важно для продвижения и нуждается в правильной настройке.
Как правильно сделать
Создаем в корневой директории сайта файл .htaccess, чтобы все изменения в нём распространялись по всем вложенным папкам.
Можно и в отдельных папках создать .htaccess файл. Тогда он будет влиять на все файлы и папки которые находится внутри в этой директории.
Возможности
Вы можете изменить файл, который открывается по умолчанию в каталоге:
DirectoryIndex welcome.html welcome.php
Вы можете перенаправить пользователей на собственную страницу ошибок при их возникновении:
ErrorDocument 404 /404.html ErrorDocument 500 /500.html
Чтобы удалить "WWW" из адреса вашего сайта:
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www.your-domain.com [NC] RewriteRule ^(.*)$ http: //your-domain.com/$1 [L,R=301]
Установка часового пояса для сервера:
SetEnv TZ Europe/London
Если вы хотите запретить доступ конкретному IP-адресу:
order allow,deny deny from XXX.XXX.XXX.XXX allow from all
для нескольких IP-адресов:
allow from all deny from 145.186.14.122 deny from 124.15
Вы изменили адреса страниц, но не хотите терять посетителей:
Redirect 301 /old-directory/file.html http: //www.domain-name.com/new-directory/file.html
Определение типа устройства и перенаправление: перенаправить пользователей использующих планшет к определенной веб-странице или каталогу:
RewriteCond %{HTTP_USER_AGENT} ^.*iPad.*$ RewriteRule ^(.*)$ http: //your-domain.com/folder-for-tablets [R=301] RewriteCond %{HTTP_USER_AGENT} ^.*Android.*$ RewriteRule ^(.*)$ http: //your-domain.com/folder-for-tablets [R=301]
Если вы не хотите, чтобы картинки с вашего сайта использовали на других сайтах или просто хотите уменьшить трафик:
Options +FollowSymlinks RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http: //(www.)?domain-name.com/ [NC] RewriteRule .*.(gif|jpg|png)$ http: //domain-name.com/img/hotlink_f_o.png [NC]
Если вы хотите заставить пользователей загружать определенные типы файлов, а не просматривать их в браузере, то вы можете использовать это:
AddType application/octet-stream .csv AddType application/octet-stream .xls AddType application/octet-stream .doc AddType application/octet-stream .avi AddType application/octet-stream .mpg AddType application/octet-stream .mov AddType application/octet-stream .pdf
или
AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4
Если вы хотите, чтобы ваши ссылки было немного легче читать (т.е. изменить content.php?id=92 на content-92.html), Вы могли бы реализовать следующие правила «переписывания»:
RewriteEngine On RewriteRule ^content-([0-9]+)\.html$ content.php?id=$1
Перенаправление на HTTPS версию сайта:
RewriteEngine On RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Изменение заголовков кодировки и языка:
AddDefaultCharset UTF-8 DefaultLanguage en-GB
Блокировка нежелательных ботов: при помощи следующего метода, вы можете сохранить трафик путем блокирования определенных роботов и пауков, которые бродят по вашему сайту:
<IfModule mod_rewrite.c > SetEnvIfNoCase ^User-Agent$ .*(bot1|bot2|bot3|bot4|bot5|bot6|) HTTP_SAFE_BADBOT SetEnvIfNoCase ^User-Agent$ .*(bot1|bot2|bot3|bot4|bot5|bot6|) HTTP_SAFE_BADBOT Deny from env=HTTP_SAFE_BADBOT </ifModule >
Заблокировать доступ к определенным файлам: если вы хотите защитить определенные файлы, или даже заблокировать доступ к файлу .htaccess:
IfModule mod_rewrite.c > <Files privatefile.jpg> order allow,deny deny from all </Files> <FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$"> Order Allow,Deny Deny from all </FilesMatch>
Полезные статьи
При поиске полезной информации мне понравилось читать вот эту статью:
19 полезных возможностей файла .htaccess
Полезные ресурсы
Чтобы проверить работу своего файла .htaccess можно использовать вот этот онлайн-сервис:
Test your htaccess rewrite rules
… хотя тут многое зависит и от изначальных настроек самого сервера. Не всё, что будет работать в этом онлайн тестировщике сработает и в реальных условиях. И наоборот, то что работает — в реальности может не работать в тестировщике. Но для изучения и экспериментов он вполне подходит.
Комментарии
Как обычно, мы открыты для общения и вы можете смело писать свои комментарии, задавать вопросы и просто делиться мнением. Ваши отзывы очень важны для нас!