Htaccess

Материал из Энциклопедия интернет-маркетинга MarketWiki

.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 обрабатывается при каждом запросе и может снижать производительность. Для большинства中小ных проектов это некритично.

Связанные термины

[править]