Файл конфигурации Apache .htaccess — сложный и важный момент. Я никогда не решался внимательно его изучить. Я всегда думал, что метод Redirect принадлежит mod_rewrite, и меня смущало его использование. Сегодня я нашел очень хороший урок и, изучая его, записал кое-какие мысли.
обновлено: постоянно исправляйте некоторые незначительные проблемы.
Источник: Комплексное руководство по .htaccess.
Официальная ссылка: Краткий справочник директив.
1 Введение Введение
Имя файла.htaccess атрибут 644 (RW-R–R–)
htaccess повлияет на все подкаталоги в каталоге, в котором он расположен. Обратите внимание, что большая часть содержимого должна храниться в одной строке и не переноситься. В противном случае произойдет ошибка.
2 Документы об ошибках Документы об ошибках
Официальный документ: Директива ErrorDocument.
Документ с кодом ErrorDocument
пример
ErrorDocument 400 /errors/badrequest.html
ОшибкаДокумент 404 http://yoursite/errors/notfound.html
Документ ошибки 401 «Требуется авторизация»
(Обратите внимание, что любые двойные кавычки, которые появляются позже в содержимом, необходимо экранировать как ")
Общие коды состояния HTTP
Успешные запросы клиентов
200 ОК
201 Создано
202 Принято
203 Недостоверная информация
204 Нет содержания
205 Сбросить содержимое
206 Частичное содержание
Запрос клиента перенаправлен
300 вариантов выбора
301 Переехал навсегда
302 Временно переехал
303 См. другое
304 Не изменено
305 Использовать прокси
Ошибки клиентского запроса
400 неверный запрос
401 Требуется авторизация
402 Требуется оплата (пока не используется)
403 Запрещено
404 Не найден
405 Метод не разрешен
406 Неприемлемо (кодировка)
407 Требуется аутентификация прокси
408 Тайм-аут запроса
409 конфликтующий запрос
410 Ушел
411 Требуется длина контента
412 Предварительное условие не выполнено
413 Запрос объекта слишком длинный
414 URI запроса слишком длинный
415 Неподдерживаемый тип носителя
Ошибки сервера
500 Внутренняя ошибка сервера
501 Не реализовано
502 Неверный шлюз
503 Сервис недоступен
504 Тайм-аут шлюза
505 Версия HTTP не поддерживается
3 Защита паролем Защита паролем
Официальный документ: Аутентификация, авторизация и контроль доступа
Предположим, что файл паролей — .htpasswd.
AuthUserFile /usr/local/safedir/.htpasswd (здесь необходимо использовать полный путь)
Имя_аутентификатора EnterПароль
Тип аутентификации Базовый
Два распространенных метода проверки:
Требовать пользователя Windix
(Вход разрешен только пользователю Windix)
Требовать действительного пользователя
(Все легальные пользователи могут войти в систему)
Совет: Как создать файл паролей с помощью команды htpasswd (входит в состав Apache)
Файл паролей должен быть создан для первого поколения.
htpasswd -c .htpasswd пользователь1
Добавить новых пользователей позже
htpasswd .htpasswd пользователь2
4 Включение SSI через htaccess Разрешить функцию SSI (включая серверную) через htaccess
Текст AddType/html .shtml
AddHandler, анализируемый сервером .shtml
Индексы опций FollowSymLinks Включает
DirectoryIndex index.shtml index.html
5 Блокировка пользователей по IP Блокировка доступа пользователей по IP
порядок разрешить, запретить
отклонить от 123.45.6.7
запретить с 12.34.5 (весь адрес класса C)
разрешить от всех
6 Блокировка пользователей/сайтов по рефереру Блокировка пользователей/сайтов по рефереру
Требуется модуль mod_rewrite
Пример 1. Блокировка одного реферера: badsite.com
Переписать движок на
# Опции +FollowSymlinks
RewriteCond %{HTTP_REFERER} badsite.com [NC]
RewriteRule .* - [F]
Пример 2. Блокировка нескольких рефереров: badsite1.com, badsite2.com.
Переписать движок на
# Опции +FollowSymlinks
RewriteCond %{HTTP_REFERER} badsite1.com [NC,OR]
RewriteCond %{HTTP_REFERER} badsite2.com
RewriteRule .* - [F]
[NC] — регистронезависимо
[F] - 403 Запрещено
Обратите внимание, что оператор «Options +FollowSymlinks» закомментирован в приведенном выше коде. Если сервер не установил FollowSymLinks в разделе httpd.conf, вам необходимо добавить это предложение, иначе вы получите ошибку «500 Internal Server error».
7 Блокировка плохих ботов и оффлайн-браузеров (также известных как оффлайн-браузеры) Блокировка плохих ботов и оффлайн-браузеров
Требуется модуль mod_rewrite
Плохие сканеры. Например, некоторые сканеры, которые перехватывают спам-адреса электронной почты, и сканеры, которые не соответствуют файлу robots.txt (например, Baidu?)
Их можно оценить на основе HTTP_USER_AGENT.
(Но есть еще более бессовестные, такие как «Zhongsou zhongsou.com», которые установили для своего агента «Mozilla/4.0 (совместимый; MSIE 5.5; Windows NT 5.0)». Они слишком мошенники и ничего не могут сделать.)
RewriteEngineOn
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Bot mailto:[email protected] [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Custo [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^DISCo [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Download Демон [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^eCatch [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Express WebPictures [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^FlashGet [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^GetRight [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^GetWeb [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Давай-понял [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^GrabNet [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Grafula [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^HMView [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} HTtrack [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Image Stripper [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Image Sucker [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ИндиБиблиотека [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^InterGET [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Интернет Ниндзя [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^JetCar [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^JOC Web Spider [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^larbin [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Mass Downloader [ИЛИ]
Инструмент RewriteCond %{HTTP_USER_AGENT} ^MIDown [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Mister PiX [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Navroad [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^NearSite [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^NetAnts [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^NetSpider [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Net Вампир [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^NetZIP [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Осьминог [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Offline Explorer [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Offline Navigator [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Papa Foto [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^pavuk [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^RealDownload [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^ReGet [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^SuperBot [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Surfbot [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Teleport Pro [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^WebImage Collector [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Web Sucker [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^WebAuto [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^WebCopier [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^WebFetch [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^WebGo IS [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^WebReaper [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^WebSauger [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Веб-сайт eXtractor [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Веб-сайт Quester [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^WebStripper [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^WebZIP [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Wget [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Вдова [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon WebSpider [ИЛИ]
RewriteCond %{HTTP_USER_AGENT} ^Зевс
RewriteRule ^.* - [F,L]
[F] - 403 Запрещено
[Л] - ?
8. Измените страницу каталога по умолчанию. Измените страницу каталога по умолчанию.
DirectoryIndex index.html index.php index.cgi index.pl
9 перенаправлений
Один файл
Перенаправить /old_dir/old_file.html http://yoursite.com/new_dir/new_file.html
весь каталог
Перенаправление /old_dir http://yoursite.com/new_dir
Эффект: такой же, как при перемещении каталога.
http://yoursite.com/old_dir -> http://yoursite.com/new_dir
http://yoursite.com/old_dir/dir1/test.html -> http://yoursite.com/new_dir/dir1/test.html
Совет: Решение проблемы, связанной с тем, что Redirect не может перенаправить при использовании каталога пользователя.
Когда вы используете каталог пользователя Apache по умолчанию, например http://mysite.com/~windix, и хотите перенаправить на http://mysite.com/~windix/jump, вы обнаружите, что следующее перенаправление не работает. работа:
Перенаправление/переход http://www.google.com
Правильный способ - изменить его на
Перенаправление /~windix/jump http://www.google.com
(источник: .htaccess Redirect в «Сайтах» не перенаправляется: почему?)
10 Запретить просмотр файла .htaccess Запретить просмотр файла .htaccess
порядок разрешить, запретить
отрицать от всех
11 Добавление типов MIME Добавление типов MIME
Приложение AddType/x-shockwave-flash SWF
Советы: если задать тип application/octet-stream, вам будет предложено загрузить
12 Предотвращение горячего связывания изображений и других типов файлов. Защита от горячего связывания
Требуется модуль mod_rewrite
Переписать движок на
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www/.)?mydomain.com/.*$ [NC]
RewriteRule .(gif|jpg|js|css)$ - [F]
Анализ:
Если HTTP_REFERER не пуст (источником являются другие сайты, не подключенные напрямую) и если HTTP_REFERER не начинается с (www.)mydomain.com (игнорировать регистр [NC]) (источником не является этот сайт)
Выдает ошибку 403 Forbidden [F] для всех файлов, заканчивающихся на .gif/.jpg/.js/.css.
Вы также можете указать ответ, поскольку в следующем примере показано заменяющее изображение.
RewriteRule .(gif|jpg)$ [R,L]
[R] - Перенаправление
[L] - Ссылка
13 Предотвращение отображения списка каталогов Предотвращение отображения списка каталогов
ИндексИгнорировать*
ИндексИгнорировать *.jpg *.gif
Советы:
Разрешить отображение списка каталогов: Параметры + Индексы.
Отключить отображение списка священников: Параметры-Индексы.
Отображение подсказки: файл заголовка HEADER, файл нижнего колонтитула README.