Что такое .htaccess и зачем он нужен

Когда мы вводим в браузере нужный нам URL, то получаем доступ к файлам, которые находятся по этому адресу. Какие файлы и как оно будет отображается, определяет веб-сервер. Есть определённые настройка для конфигурации сервера, но вы можете менять их или дополнять своими правилами, которые будут применяться для всех пользователей этого сервера.

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

Обмен информации

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

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

Как правильно сделать

Создаем в корневой директории сайта файл .htaccess, чтобы все изменения в нём распространялись по всем вложенным папкам.

Можно и в отдельных папках создать .htaccess файл. Тогда он будет влиять на все файлы и папки которые находится внутри в этой директории.

htaccess window

Возможности

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

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

… хотя тут многое зависит и от изначальных настроек самого сервера. Не всё, что будет работать в этом онлайн тестировщике сработает и в реальных условиях. И наоборот, то что работает в реальности может не работать в тестировщике. Но для изучения и экспериментов он вполне подходит.

Комментарии


Как обычно, мы открыты для общения и вы можете смело писать свои комментарии, задавать вопросы и просто делиться мнением. Ваши отзывы очень важны для нас!