Htaccess
.htaccess (hypertext access) - конфигурационный файл веб-сервера Apache, позволяющий изменять настройки сервера для конкретной директории без изменения глобальной конфигурации. Файл .htaccess используется для управления перенаправлениями, настройкой доступа, оптимизацией работы сайта и решения множества других задач.
В интернет-маркетинге и SEO файл .htaccess является важным инструментом для настройки редиректов, склейки зеркал, управления страницами ошибок и оптимизации скорости загрузки.
Где находится .htaccess
[править]Файл .htaccess располагается в корневой директории сайта (обычно public_html или www). Это скрытый файл (начинается с точки), поэтому в некоторых FTP-клиентах нужно включить отображение скрытых файлов.
Если файла нет, его можно создать в любом текстовом редакторе и загрузить на сервер с правами доступа 644.
Основные возможности .htaccess
[править]Файл .htaccess позволяет решать множество задач.
Редиректы
[править]Настройка перенаправлений с одних URL на другие.
# Простой редирект со страницы на страницу Redirect 301 /old-page.html /new-page.html # Редирект с использованием mod_rewrite RewriteEngine On RewriteRule ^old-page\.html$ /new-page.html [R=301,L]
Склейка зеркал
[править]Перенаправление с неосновных версий сайта на главное зеркало.
# С www на без www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
# С http на https
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Настройка страниц ошибок
[править]Перенаправление на кастомные страницы для разных HTTP-статусов.
ErrorDocument 404 /404.html ErrorDocument 403 /403.html ErrorDocument 500 /500.html
Защита директорий
[править]Ограничение доступа к папкам и файлам.
# Защита паролем
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /path/to/.htpasswd
Require valid-user
# Запрет доступа к файлам
<FilesMatch "\.(htaccess|htpasswd|ini|log|sh)$">
Order Allow,Deny
Deny from all
</FilesMatch>
Кэширование
[править]Управление кэшированием файлов браузером для ускорения загрузки.
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
</IfModule>
Сжатие
[править]Включение сжатия Gzip для ускорения передачи данных.
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
AddOutputFilterByType DEFLATE application/javascript application/x-javascript
AddOutputFilterByType DEFLATE application/rss+xml application/atom+xml
</IfModule>
ЧПУ
[править]Настройка человеко-понятных URL.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Защита от горячих ссылок
[править]Запрет на прямое использование изображений с других сайтов.
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?your-site\.ru [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [F]
Управление IP-адресами
[править]Блокировка или разрешение доступа по IP.
# Блокировка IP Deny from 123.45.67.89 Deny from 123.45.67. # Разрешение только для определённых IP Order Deny,Allow Deny from all Allow from 123.45.67.89
Синтаксис .htaccess
[править]При работе с .htaccess важно соблюдать правильный синтаксис.
Основные правила
[править]- Каждая директива на новой строке
- Комментарии начинаются с решётки (#)
- Пробелы имеют значение
- Регистр важен не всегда, но рекомендуется писать директивы с большой буквы
Модуль mod_rewrite
[править]Наиболее мощный и часто используемый модуль. Основные команды:
- RewriteEngine On - включает обработку правил
- RewriteCond - условие, при котором выполняется правило
- RewriteRule - само правило перенаправления
- [R=301] - флаг редиректа с кодом
- [L] - последнее правило, дальше не обрабатывать
- [NC] - не учитывать регистр
- [QSA] - добавлять параметры запроса к новому URL
Флаги редиректов
[править]- [R=301] - постоянный редирект
- [R=302] - временный редирект
- [R=303] - см. другие
- [R=307] - временный с сохранением метода
- [R=308] - постоянный с сохранением метода
Ошибки в .htaccess
[править]Неправильно настроенный .htaccess может привести к серьёзным проблемам.
Типичные ошибки
[править]- Синтаксические ошибки. Пропущенный пробел, лишний символ - и сайт перестаёт работать.
- Бесконечные циклы редиректов. Страница А редиректит на Б, Б на А.
- Случайная блокировка. Запрет доступа к важным файлам или целым разделам.
- Неправильные пути. Ошибки в путях к файлам ошибок или паролям.
- Конфликт правил. Одно правило отменяет действие другого.
- Забытый RewriteEngine On. Без этой директивы правила не работают.
Как исправить
[править]- Всегда делать резервную копию перед изменениями
- Проверять изменения сразу после сохранения
- Использовать комментарии для пояснения сложных правил
- Тестировать на тестовом сервере, если возможно
Когда не нужно использовать .htaccess
[править]На высоконагруженных проектах лучше использовать основную конфигурацию Apache, так как .htaccess обрабатывается при каждом запросе и может снижать производительность. Для большинства中小ных проектов это некритично.
