Примеры htaccess: 8 изумительных примеров .htaccess файлов
.htaccess файлы используются для настройки сервера Apache, и многих других веб серверов. Скоро вы увидите примеры использования .htaccess файлов.
Файлы .htaccess – это простые текстовые файлы, которые могут редактироваться в любом текстовом редакторе. В этой статье мы рассмотрим изумительные примеры применения .htaccess файлов для ваших проектов.
Попрошу заметить, что .htaccess файлы не работают в Windows системах, но они могут загружаться и редактироваться свободным образом. При попадании на сервер, поддерживающий чтение .htaccess, эти файлы проявляют свое действие. На Linux системах они делаются невидимыми по умолчанию.
В дальнейшем, для работы с htaccess файлами локально, вы можете установить локальный сервер (Denwer). При этом htaccess файлы должны быть в корневой директории проекта (сайта). Для редактирования, мы можем использовать любой из текстовых редакторов (Notepad++ вполне подойдет).
Файлы .htaccess поддерживают такой же формат, что и другие основные конфигурационные файлы (httpd.conf). Множество настроек, которые могут быть установлены с помощью конфигурационных файлов, также могут быть установлены с помощью .htaccess файлов, и наоборот.
Настройки установлены в файле .htaccess, отменяют подобные в конфигурационных файлах директории в которых они находятся, а также для всех подпапок.
Это очень удобно, для гибкости настроек каждого проекта, и сейчас вы это увидите на примерах. Иногда эти файлы используются, как динамические настройки, так как они читаются на лету (при каждом доступе к директории и ее файлам). Это означает, что изменения в .htaccess файле, будет учтено немедленно, в отличии от файлов конфигурации сервера, которые задействуются в силу после перезагрузки сервера. Это также удобно для внесения собственных настроек для своего проекта, когда вы не имеете доступа к глобальным настройкам, что привычно для пользователей хостингов.
А теперь подробнее и с примерами использования этих загадочных .htaccess файлов.
Пример .htaccess редиректа
Редирект на .htaccess, один из наиболее популярных способов использования этих файлов. Это помогает в реорганизации файловой структуры сайта. Увидеть редирект на примере, можете ниже:
Redirect 301 ^old\.html$ <a href="http://localhost/new.html" target="_blank">http://localhost/new.html</a>
Это изменяет HTTP заголовок ответа на 301 (перемещено навсегда) и перенаправляет все запросы из old.html, соответственно на new.html. Мы используем регулярные выражения для определения URL для редиректа, которые дают возможность выбирать только нужные URL для перенаправления. Также можно вставлять полный URL адрес, но это ручная работа.
Пример .htaccess rewrite
В переводе, rewrite означает – переписать. Мы можем переписывать текущий URL страниц для более простого восприятия, или как говорят в народе: «для создания ЧПУ» (человекопонятных УРЛ). Что сейчас очень распространено. Пример простого использования htaccess rewrite можете посмотреть ниже:
RewriteEngine on RewriteRule ^old\.html $ new.html
В этом примере, мы применяем простой редирект из одного файла, на другой, который будет реализован невидимым образом, без изменений в адресной строке. Первое указание, RewriteEngine on, просто удостоверяется, что движок rewrite доступен для использования.
В дальнейшем, для отображения обновленной информации в адресной строке посетителя, мы можем использовать модификатор R, в конце правила. Смотрите пример:
RewriteRule ^old\.html$ <a href="http://hostname/new.html" target="_blank">http://hostname/new.html</a> [r=301]
Модификатор r, способствует внешней переадресации, которая возвращает новую страницу. Таким образом, мы можем определить код статута (HTTP ответ). Этот пример кода обновляет информацию в адресной строке браузера.
Еще одно полезное применение для htaccess rewrite, которое упоминалось ранее, это создание ЧПУ. Давайте посмотрим на примере:
RewriteRule ^products/([^/]+)/([^/]+)/([^/<WBR>]+) product.php?cat=$1&brand=$2&<WBR>prod=$3
Это правило позволит пользователям увидеть URL подобным образом: products/turntables/technics/sl1210, а перенаправить на product.php?cat=turntables&<WBR>brand=technics&prod=sl1210, без изменения данных в адресной строке. Это очень удобно как для SEO, так и для пользователей. Текст между слешами, это регулярные выражения, которые позволяют отобразить только значения $1,$2,$3, между которыми слеши. Выражение [^/]+ означает, что может встречаться любой из символов 1 или больше раз, за исключением слеша (/).
На практике, url rewrite используют более сложным образом. Этой теме посвящено множество статей и уроков, мы не будем на этом останавливаться.
Создание собственной 404 страницы
Это не совсем хорошо, отображать стандартную страницу ошибки 404. Много сайтов, подходят творчески, с юмором к своей 404 странице (которая выводиться при невозможности найти соответственного документа в директориях сайта). Вы также можете создать собственную 404 страницу.
Очень просто, использовать .htaccess, для указания страницы 404 ошибки. Смотрите на примере:
ErrorDocument 404 ";/404.html";
Это все что нам необходимо для отображения 404 страницы. Мы также можем создать свои страницы для других ошибок сервера.
Запрещение доступа к определенным ресурсам
Используя .htaccess файл, мы можем установить пароль на использование файла или директории, как для всех пользователей, так и отдельных доменов или IP адресов. Для ограничения доступа к содержимому директории, нам нужно создать новый .htaccess файл со следующим кодом:
AuthName ";Username and password required"; AuthUserFile /path/to/.htpasswd Require valid-user AuthType Basic
Этот файл нужно сохранить и поместить в директорию, которую мы хотим защитить. Указание AuthName, выводит сообщение с блоков ввода логина и пароля. AuthUserFile это указание пути к файлу .htpasswd. Указание Require, определяет, что только авторизованные пользователи имеют доступ к защищенным файлам, в то время как AuthType установлено на Basic.
Для защиты конкретного файла, мы можем поместить следующий код в директиву <files>, в которой определяются файлы для защиты доступа.
Files ";protectedfile.html";> AuthName ";Username and password required"; AuthUserFile /path/to/.htpasswd Require valid-user AuthType Basic </Files>
Мы также ссылаемся на файл .htpasswd, который содержит имена пользователей и зашифрованные пароли доступа к защищенным ресурсам. Этот файл должен быть сохранен в директории, к которой невозможно добраться через web (то есть, этот файл не должен находится в директориях сайта). Существует множество сервисов, которые могут быть использованы для генерации этих файлов автоматическим образом, так как пароль должен быть закодирован.
Блокирование доступа отдельных IP, user-agent
Еще одно использование файла .htaccess, это быстрое и простое блокирование всех запросов от отдельных IP адресов или user-agent. Для блокирования отдельных IP адресов необходимо лишь указать несколько директив, как показано в примере:
order allow,deny deny from 192.168.0.1 allow from all
Директива order, сообщает серверу, в какой последовательности выполнять директивы allow/deny. В этом случае, директива allow будет выполнятся первой, потом deny. Указание allow from all выполняется первым (хотя и стоит в коде после deny), оно позволяет всем IP адресам иметь доступ к содержимому. После этого вступает в силу директива deny, которая запрещает доступ определенным IP. Таким образом имеют доступ все, кроме указанных IP адресов. Следует отметить, что мы можем запрещать доступ используя короткие IP адреса, например 192.168.
Для запрещения запросов отдельных user-agent, нам следует сделать следующее:
RewriteCond %{HTTP_USER_AGENT} ^OrangeSpider RewriteRule ^(.*)$ http://%{REMOTE_ADDR}/$ [r=301,l]
В этом примере, все клиенты со строкой HTTP_USER_AGENT начинающейся на OrangeSpider (плохой бот) будут направлены по обратному адресу. Регулярное выражение предрасполагает, что может быть любой символ (.) ноль или больше раз (*), и перенаправляет на %{REMOTE_ADDR}. Флаг L, мы используем как инструкцию для сервера, выполнять это указание первым. Никакой процесс не будет выполняться перед выполнением этого правила.
Пример .htaccess кэширования
Устанавливая строки кэширования на некоторые файлы, которые не часто изменяются, мы можем предотвратить лишние запросы браузеров при каждом обращении.
Кэширование очень простое в настройках и позволяет вашему сайту загружаться быстрее.
Если вы проверите свой сайт через Google PageSpeed, то получите сообщение об установках сроков кэширования (far-future expiry headers). Это делается следующим образом:
ExpiresActive on ExpiresByType image/gif ";access plus 1 month"; ExpiresByType image/png ";access plus 1 month"; ExpiresByType image/jpg ";access plus 1 month"; ExpiresByType image/jpeg ";access plus 1 month"; ExpiresByType video/ogg ";access plus 1 month"; ExpiresByType audio/ogg ";access plus 1 month"; ExpiresByType video/mp4 ";access plus 1 month"; ExpiresByType video/webm ";access plus 1 month";
Вы можете применять ExpiresByType, для определения различных типов контента, для которых вы хотите применить кэширование. Указание ExpiresActive on, просто убеждается в том, что генерация Expires headers доступна. Доступность определяется наличием установленного модуля mod_expires на сервер Apache.
Пример сжатия на .htaccess
Еще одно полезное применение, это возможность сжатия некоторых типов, и то также доступно с помощью .htaccess. Смотрим на примере:
FilterDeclare COMPRESS FilterProvider COMPRESS DEFLATE resp=Content-Type $text/html FilterProvider COMPRESS DEFLATE resp=Content-Type $text/css FilterProvider COMPRESS DEFLATE resp=Content-Type $text/javascript FilterChain COMPRESS FilterProtocol COMPRESS DEFLATE change=yes;byteranges=no
Эти сжатия работают на серверах Apache 2.1 и выше, которые используют модуль mod_filter. Этот модуль использует алгоритм сжатия DEFLATE, который основан на указании content-type. В этом случае мы определяем text/html, text/css и text/javascript.
В примере выше, мы начинаем с декларации фильтра COMPRESS, используя директиву FilterDeclare. Далее мы перечисляем типы файлов, которые будут проходить через фильтр. Директива FilterChain, дает указание серверу строить звено фильтра, основанное на директивах FilterProvider. Директива FilterProtocol позволяет нам определить опции, применяемые для звена фильтра, когда он будет запущен. В примере мы используем change=yes (контент должен быть изменен с помощью фильтра (в этом случае сжат)), и byteranges=no (фильтр должен быть применен для определенных файлов).
В более старых версиях Apache, модуль mod_deflate также использовался для настройки DEFLATE сжатия. Мы имели меньше возможностей в настройках, но они были проще:
SetOutputFilter DEFLATE AddOutputFilterByType DEFLATE text/html text/css text/javascript
В этом случае мы устанавливаем алгоритм сжатия с помощью директивы SetOutputFilter, и определяем типы контента, которые мы хотим сжать используя директиву AddOutputFilterByType
Как правило, ваш веб сервер использует один из этих модулей, в зависимости от версии Apache. В основном, если вы разрабатываете свой проект, вы знаете, какой код следует использовать. Но если вы разрабатываете продукт, и не знаете, на каком сервере он будет использован, вам следует использовать оба кода сразу. Для этого оба кода необходимо взять в директиву <IfModule module_name>, это определит, какой из этих модулей используется, и сервер не возвратит 500 ошибок о попытке настройки модуля, которого не существует.
Заключение
Мы разобрали основные примеры использования файлов .htaccess. Надеюсь, они были действительно изумительными примерами. Если у вас остались недопонимания или дополнения по поводу примеров, вы можете оставить комментарий ниже.Дальше: MiraLinks - как зарабатывать, отзывы о миралинкс, цены в miralinks








Development — Taras Moroz