Для того чтобы изменения файла htaccess вступили в силу необходимо – Администратор КП. Настройки сервера » СтудИзба

— Удалением символа «?» (вопросительнй знак) в начале и в конце строки
+ Удалением символа «#» (решетка) в начале строки
— Удалением символа «;» (точка с запятой) в начале строки
2. Система «1С-Битрикс» позволяет просмотреть права на файлы и папки, установленные на уровне системы. Данные параметры отображаются:
— на странице настроек модуля «Управление структурой»
+ в «Менеджере файлов»
— на странице настроек «Главного модуля»
Отличный виртуальный сервер VPS/VDS в США можно найти здесь. Если Вам не хватает обычного хостинга даже с безлимитными возможностями, то Вам просто необходим подобный сервер!
3. Использование директивы AllowOverride в файле httpd.conf позволяет определить:
— типы директив файла httpd.conf, которые могут доминировать над более ранними настройками доступа
+ типы директив файла .htaccess, которые могут доминировать над более ранними настройками доступа
— каталоги, на которые распространяется действие файла .htaccess
4. Для того чтобы изменения файла .htaccess вступили в силу, необходимо:
— сохранить изменения, затем разрешить использование измененного файла .htaccess в файле настроек конфигурации сервера (httpd.conf)
+ сохранить файл
— сохранить файл и перезапустить сервер
5. Файл dbconn_error.php используется для
+ определения параметров сообщения об ошибке подключения к базе данных
— определения параметров сообщения об ошибке запроса к базе данных
— определения параметров подключения к базе данных
6. Утилита perror.exe позволяет:
— получить код ошибки по ее описанию
— перейти к восстановлению базы данных для устранения ошибки с указанным кодом
+ получить описание ошибки по ее коду
7. Если файл .htaccess размещен в одном из каталогов сайта, то действие его директив распространяется:
— на данный каталог и все вышележащие папки (если для них не создан свой файл .htaccess)
+ на данный каталог и все вложенные папки (если для них не создан свой файл .htaccess)
— на весь сайт
8. Строка define(«BX_FILE_PERMISSIONS», 0644), размещенная в файле dbconn.php, устанавливает:
— права на доступ к файлам и папкам, создаваемым либо редактируемым средствами системы
— права на доступ к файлам на сервере
— права на доступ к файлам и папкам на сервере
+ права на доступ к файлам, создаваемым либо редактируемым средствами системы
9. Использование в файле .htaccess инструкций, не разрешенных в конфигурации сервера, приводит к возникновению:
+ внутренней ошибки сервера
— ошибки запроса к базе данных
— ошибки соединения с базой данных
Конфигурирование сайта с помощью файла .htaccess
Web — сервер Apache — это мощный и многофункциональный программный продукт с разнообразными возможностями. В данной статье будут расмотрены приёмы конфигурирования Apache, наиболее часто встречающиеся при разработке Web — сайтов.
Как известно, все настройки сервера Apache находятся в файлe httpd.conf, доступ к которому имеется не всегда. Например, если используется виртуальный сервер на хостинге, когда один сервер Apache обслуживает сотни сайтов, то, естественно, нельзя позволить владельцу одного сайта менять конфигурацию сервера, которая отразится на всех остальных сайтах. Тем не менее Web — сервер Apache допускает конфигурирование на уровне отдельных каталогов при помощи файлов .htaccess. Именно на работу с этими файлами, как единственными конфигурационными файлами, которые доступны большинству Web — разработчиков, и будет сделан основной упор в этой статье.
Файл .htaccess (с точкой в начале имени) – это конфигурационный файл, который даёт возможность настраивать работу сервера на уровне отдельных каталогов: устанавливать права доступа к файлам в каталогах, менять названия индексных файлов, самостоятельно обрабатывать коды ответов протокола HTTP, модифицировать адреса запрошенных страниц.
Примечание
Файл .htaccess может быть размещен в любом каталоге. Директивы этого файла действуют на все файлы в текущем каталоге и во всех его подкаталогах (если эти директивы не переопределены директивами файлов .htaccess во вложенных каталогах).
Изменения, вносимые в файлы .htaccess, вступают в силу немедленно и не требуют перезагрузки сервера в отличие от изменений, вносимых в главный конфигурационный файл httpd.conf.
Для того, чтобы файлы .htaccess можно было использовать, необходимы соответствующие настройки главного конфигурационного файла httpd.conf, где должны быть прописаны директивы, которые разрешат файлу .htaccess переопределять конфигурацию Web-сервера в каталоге. Список этих директив задаётся директивой AllowOverride.
Директива AllowOverride может включать в себя одну из следующих директив или их комбинацию: AuthConfig, FileInfo, Indexes, Limit, Options, All, None
Для того чтобы дать директивам файлов .htaccess максимальные права на изменения директив, значение директивы AllowOverride в файле httpd.conf должно быть равно All. Оно является значением по умолчанию.
Запретить переопределение любых директив в конфигурационных файлах .htaccess можно при помощи значения None:
Замечание
Название конфигурационного файла можно изменить, и например, назвать его не .htaccess, a access.conf. За название этого файла отвечает директива AccessFileName в файле httpd.conf. Изменение названия конфигурационного файла .htaccess не рекомендуется, т.к. это может усложнить дальнейшую поддержку сервера.
- Пути к файлам и каталогам должны указываться от корня сервера, например, /pub/articles/masters/php/
- При указании абсолютных url обязательно должны быть зааданы протоколы, например: Redirect / http://www.site.ru
- В файлах .htaccess недопустимы пробелы в указаниях путей к файлам и в названиях самих файлов, т.к. это приводит к генерации кода ответа 500 — ошибка конфигурации сервера: «Internal Server Error».
Могут возникнуть ситуации, когда необходимо изменить состав индексных файлов, например, если нужна индексная страница index.php, а в основном конфигурационном файле httpd.conf она не прописана. Эту задачу можно решить при помощи файла .htaccess, в котором необходимо создать директиву DirectoryIndex, где будут перечислены имена индексных страниц:
DirectoryIndex index.php index.shtml index.html
При запросе каталога без указания имени файла сначала будет осуществлён поиск страницы с именем index.php. Если страницы с таким именем нет в каталоге, то аналогичные операции будут произведены с файлом index.shtml и т.д. до конца списка, пока не будет найдена и открыта соответствующая страница.
Часто требуется запретить отображение списка файлов в каталоге, если не указан или отсутствует индексный файл. Например, запретить отображение содержимого каталога с изображениями. Если такой запрет не поставить, то пользователь, обратившийся напрямую к такому каталогу, получит список всех изображений.
Ни один сайт не затрахован от возникновения ошибок. Самой частой ошибкой является переход по ссылке на несуществующую страницу. В этом случае Apache генерирует код ответа 404 и отображает автоматически сгенерированную страницу с сообщением об ошибке. Наличие несуществующих страниц производит плохое впечатление на посетителей сайта. Это впечатление можно сгладить, если вместо стандартных страниц, подставлять собственные страницы с сообщением об ошибке. За назначение страниц — обработчиков кодов ответа протокола HTTP несёт ответственность директива ErrorDocument
ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
После директивы ErrorDocument следует указать код ответа и страницу, на которую необходимо перенаправить посетителя при возникновении данного кода ответа.
- 401 ошибка — Запрос требует аутентификации пользователя (Unautorized).
- 403 ошибка — Доступ к запрашиваемому ресурсу запрещён (Forbidden).
- 404 ошибка — Запрашиваемый документ на сервере отсутствует (Not Found).
- 500 ошибка — Ошибка конфигурации сервера или внешней программы (Internal Server Error).
Обычно PHP-код выполняется в файлах с расширениями php. Иногда возникают ситуации, когда необходимо выполнять PHP-код в файлах с другим расширением. В этом случае можно дать указание Web-серверу выполнять PHP-код не только в файлах с расширением php, но и в файлах с расширением html.
RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml
Первая строка удаляет обработчик файлов с расширениями html и htm, а вторая строка сообщает серверу о необходимости использовать для файлов с расширениями htm и html обработчик PHP
Указанная кодировка отправляется браузеру в заголовке Content-Type и позволит браузеру клиента автоматически переключиться на требуемую кодировку.
При загрузке файлов на сервер можно указать, в какой кодировке сервер должен ожидать файл.
Включённая на хостинге опция MultiViews может вызвать неожиданные проблемы, например, отображение несуществующих страниц сайта. Допустим, на сайте существует страница с адресом http://www.sait.ru/down.php, и если посетители обратятся к несуществующему каталогу http://www.sait.ru/down/, то включённая опция MultiViews вместо этого каталога подставит файл down.php. Однако подстановка будет выполнена не полностью — пути к изображениям, таблицам стилей и т.п. будут подставлены неверно. То есть страница будет отображена с искажениями. Для подавления такого поведения Apache опцию MultiViews следует отключить.
Для того чтобы посетители не могли получить доступ к служебным файлам из окна браузера, можно запретить доступ к таким файлам. Для этого используется директива запрета Deny и разрешения доступа Allow.
Примечание
Использование директив Deny и Allow управляет только доступом к файлам из браузера, либо из другой программы-клиента. Подобные запреты не распространяются на скрипты сервера.
При использовании такой директивы будет запрещён доступ из браузера ко всем файлам и каталогам текущего каталога.
Здесь запрещен доступ только к файлам с именем config.php.
* — любая последовательность символов, исключая символ слеша (/).
Запрещен доступ к файлам с расширением inc, conf и cfg
Deny from 195.135.232.70
Order deny,allow
Deny from all
Allow from 195.135.232.70
Директива Order позволяет задать порядок, в котором будут выполняться директивы. Сначала выполняется директива запрета доступа(директива Deny), а затем разрешается доступ то для IP-адреса 195.135.232.70 (директива Allow). Если в первой строке поменять порядок следования директив на Order allow,deny, то доступ для IP-адреса 195.135.232.70 не будет открыть, т.к. директива Deny, выполняемая последней, перекроет действие директивы Allow.
Примечание
Следует отметить, что разрешение доступа с определённого IP-адреса иногда может не сработать. Например, в том случае, если на хостинге установлен обратный кэширующий proxy-сервер. Если директивы разрешения доступа не работают, то вам нужно обратиться по этому вопросу в службу технической поддержки хостинга.
Часто встречаются задачи, когда все запросы к определённому каталогу или странице нужно перенаправить (redirect) на другой адрес. Это можно сделать с помощью директив Redirect и RedirectMatch. Они сообщают, что ресурс по запрошенному url отсутствует, и указывают адрес, по которому следует перейти. Директивы Redirect посылают браузеру соответствующий заголовок, и уже браузер осуществляет перенаправление.
Redirect /books/index.php http://www.site.ru/newbooks/
RedirectMatch /books/.* http://www.site.ru/newbooks/
*Републикация cтатьи возможна при сохранении исходного текста и подписи в конце статьи.
Настройка файла htaccess | Losst
Сейчас для организации работы подавляющего большинства сайтов в сети используется веб-сервер Apache. Он немного отстает в производительности, но зато очень прост в настройке и имеет огромное количество возможностей.
Веб-сервер Apache можно настраивать не только в главном конфигурационном файле, но и через файлы .htaccess. Эти файлы размещаются в определенных папках и указывают веб-серверу как нужно себя вести в этой папке и ее подкаталогах.
Настройка файла htaccess очень похожа на настройку главного файла конфигурации Apache. Но она немного отличается. С помощью этого файла вы можете настроить редиректы, внутреннее изменение url, права доступа, авторизацию по паролю и многое другое. В сегодняшней статье мы рассмотрим как правильно настроить htaccess для вашего сервера.
Синтаксис файла htaccess
Мы уже начали тему настройки Apache в одной из предыдущих статей, но сегодня немного освежим информацию и рассмотрим более детально именно настройку htaccess.
Все директивы из файла htaccess выполняются точно так же, как если бы они были размещены в глобальном конфигурационном файле, только внутри директивы <Directory адрес_папки_htaccess>. Это не позволяет менять глобальные настройки, но вы можете очень тонко настроить поведение программы в папках, к которым у вас есть права доступа.
Общий синтаксис директив очень прост, это пары команд и их опций, разделенных пробелом, например:
Команда параметр1 параметр2 флаги
Самих команд достаточно много и мы будем рассматривать их на примерах действий, которые они выполняют. Кроме самих команд, тут могут использоваться вложенные структуры, например, для активации модулей или проверки доступности того или иного модуля. А теперь давайте перейдем ближе к тому как выполняется правильная настройка htaccess. Начнем с самых простых действий.
Настройка доступа htaccess
Довольно часто htaccess используется для управления доступом к папке. Для управления доступом используются три команды:
- order — порядок;
- deny — запретить;
- allow — разрешить.
Сначала, с помощью опции order, нужно указать в каком порядке будут выполняться директивы, значение имеет только эта команда, и неважно в какой последовательности они расположены в файле.
Затем с помощью директивы allow или deny мы разрешаем или запрещаем доступ к папке с определенных адресов. Например, чтобы запретить все необходимо добавить в htaccess:
Order deny,allow
Deny from all
Но мы также можем разрешить доступ только с локальной сети:
Order deny,allow
Deny from all
Allow 192.168.0.
Если указано deny,allow, то проверка будет выполняться в таком порядке. Сначала все директивы deny, затем все директивы allow, и если ни одно из условий не подошло, то запрос пропускается.При allow,deny такой запрос будет по умолчанию отклонен. Например, предыдущий пример можно написать так:
Order allow,deny
Allow 192.168.0.
Модификация URL в htaccess
Наиболее часто htaccess используется для модификации URL во время выполнения или редиректов. За эту функциональность отвечает модуль mod_rewrite и обычно он активирован в большинстве конфигураций Apache.
Модификация URL в htacces выполняется с помощью трех директив, это RewriteBase, которая указывает префикс адреса, RewriteCond проверяет соответствие, и RewriteRule — изменяет URL в соответствии с регулярным выражением если все правила соответствия подходят.
Сначала нужно включить Mod_Rewrite, на случай если модуль еще не активен:
Укажем, что в качестве префикса для URL нужно использовать корень:
И будем автоматически заменять URL адреса с index.html на index.php, обратите внимание, что исходный URL — это путь к запрашиваемому файлу относительно расположения файла htaccess:
RewriteRule index.html /index.php
Для более эффективной замены можно использовать регулярные выражения они состоят из специальных символов и переменных и обычных символов и цифр. Рассмотрим основные специальные символы:
- ^ — начало строки;
- $ — конец строки;
- . — любой символ;
- * — любое количество любых символов;
- ? — один определенный символ;
- [0-9] — последовательность символов, например, от 0 до 9;
- | — символ или, выбирается или одна группа, или другая;
- () — иcпользуется для выбора групп символов.
В регулярных выражениях htaccess также можно использовать переменные с данными, полученными из заголовков запроса, например:
- % — поле User-Agent, которое передает браузер пользователя;
- % — IP адрес пользователя;
- % — запрашиваемый URI;
- % — параметры запроса после знака ?.
Это наиболее часто используемые переменные, но их есть намного больше, остальные вы можете найти в официальной документации. Регулярные выражения открывают более широкие возможности, например, вы можете заменять во всех страницах html на php:
RewriteEngine On;
RewriteBase /;
RewriteRule ^(.*)\.html$ $1.php
Директива RewriteCond дает еще больше гибкости, вы можете выбрать к каким адресам стоит применять модификацию, например, будем переопределять данные только для версии с www:
RewriteBase /;
RewriteCond %
RewriteRule ^(.*)\.html$ $1.php
Таким образом, вы можете выполнять любые преобразования ваших URL без фактических редиректов куда-либо. Но дальше мы рассмотрим как делать редиректы.
Настройка редиректов в htaccess
Настройка редиректов htaccess выполняется похожим образом, с помощью того же самого модуля mod_rewrite, только теперь вместо модификации url мы указываем флаг с нужным действием и кодом редиректа.
Самый простой редирект можно выполнить без mod_rewrite, с помощью такой строки:
Redirect 301 /index.html http://www.site.ru/index.php
Но обычно нужны перенаправления с более широким действием. Все выглядит очень похоже, только теперь мы используем флаг [NC] чтобы не учитывать регистр, [L] для прекращения обработки и [R] — для редиректа. Например, перенаправление htaccess с версии без www на домен с www:
RewriteCond %
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
Значение R=301 означает код редиректа, который будет возвращен клиенту, можно использовать 301, 302 и т д. Редирект htaccess с домена www на домен без префикса будет выглядеть так:
RewriteCond %
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
Таким же образом можно сделать переадресацию:
RewriteRule ^старый_адрес /новый_адрес/$1 [R=301,L]
Редирект с http версии на https:
RewriteCond %
RewriteCond %
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]
Настройка страниц ошибок в htaccess
При возникновении каких-либо ошибок во время генерации страницы, веб-сервер выдает краткое сообщение и код ошибки. Но пользователям будет намного понятнее в чем дело, если вы сделаете для каждой ошибки отдельную страницу с картинками и полноценным объяснением.
Настройка htaccess для этого пункта будет очень полезной. Вы можете использовать директиву ErrorDocument. С помощью нее можно задать html страницы для ошибок 4хх и 5хх. Например, для 404:
ErrorDocument 404 http://site.ru/error/404.shtml
ErrorDocument 403 http://site.ru/error/403.shtml
ErrorDocument 401 http://site.ru/error/401.shtml
ErrorDocument 500 http://site.ru/error/500.shtml
Кэширование в htaccess
Браузер позволяет хранить в своем кэше изображения, файлы скриптов, стилей и другие медиафайлы определенное время. Время жизни кэша задается веб-сервером с помощью специальных заголовков. Их можно настроить с помощью модуля expires.
Сначала активируем модуль и устанавливаем период кэширования по умолчанию:
ExpiresActive On
ExpiresDefault «access plus 1 month»
Теперь мы можем настроить кэширование для каждого mime типа файлов:
ExpiresByType text/html «access plus 1 month 15 days 2 hours»
ExpiresByType image/gif «access plus 5 hours 3 minutes»
ExpiresByType image/x-icon «access plus 2592000 seconds»
В первой строке мы указываем, что страницы html нужно считать годными на один месяц 15 дней и два часа с момента загрузки. Доступны такие типы файлов:
- image/x-icon;
- image/jpeg;
- image/png;
- image/gif;
- application/x-shockwave-flash;
- text/css;
- text/javascript;
- application/javascript;
- application/x-javascript;
- text/html;
- application/xhtml+xml;
Чтобы быть уверенным что эта конструкция не вызовет ошибок заключите ее в if:
Сжатие файлов в htaccess
Для сжатия в Apache можно использовать модуль deflate. Здесь достаточно просто перечислить mime типы файлов, которые нужно сжать. Например:
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
Вы также можете заключить конструкцию if, чтобы проверить поддерживается ли этот модуль:
Выводы
В этой статье мы рассмотрели как выполняется настройка файла htaccess для правильной работы вашего сайта. Все действия выполняются не так уже и сложно. Достаточно скопировать несколько строк и исправить их под свои нужды. Если у вас остались вопросы, спрашивайте в комментариях!
На завершение предлагаю видео с обзором конфигурационного файла Apache:
Настройка файла htaccess

От автора: файлы .htaccess используются для настройки и конфигурирования веб-сервера Apache, а также ряда других веб-серверов. Несмотря на тип расширения файла .htaccess, это простые текстовые файлы, с которыми можно работать в любом редакторе. В этой статье мы рассмотрим, что они собой представляют, настройку файла htaccess и как их можно использовать в своих проектах.
Следует отметить, что файлы .htaccess не работают в системах на базе Windows, хотя их можно отредактировать и выгрузить на совместимый веб-сервер, а в системах на базе Linux они скрыты по умолчанию.
Для локальной работы с файлами htaccess можно использовать XAMPP (или MAMP) на Mac – пакет, который устанавливает и конфигурирует Apache, PHP и MySQL. Для редактирования файлов .htaccess на Mac нужно применить текстовый редактор, позволяющий открывать скрытые файлы, такой как TextWrangler.
Файл .htaccess поддерживает тот же формат, что и основной файл конфигурации Apache: httpd.conf. Многие настройки, изменяемые с помощью основного файла конфигурации, кроме того, могут в нем регулироваться, и наоборот.
Настройка, измененная в файле .htaccess, отменит ту же настройку в основном файле конфигурации для содержащего этот файл каталога, а также для всех его подкаталогов.

JavaScript. Быстрый старт
Изучите основы JavaScript на практическом примере по созданию веб-приложения
Их иногда называют динамическими файлами конфигурации, так как они считываются сервером при каждом запросе к каталогу, в котором находятся. Это означает, что любые изменения в файле .htaccess вступят в силу немедленно, не требуя перезагрузки сервера, в отличие от изменений, сделанных в общем файле конфигурации. Это также значит, что за их применение вы расплачиваетесь небольшой потерей производительности, но они будут полезны, когда у вас нет доступа к основному файлу конфигурации сервера.
Итак, теперь, когда мы знаем, что собой представляют файлы .htaccess, как их редактировать и работать с ними, а также осведомлены о некоторых достоинствах и недостатках, давайте посмотрим, как можно их использовать и что интересного они могут делать.
Переадресация и перезапись URL
Файлы .htaccess широко используются для выполнения переадресации или перезаписи URL’ов. Это очень удобно при оптимизации SEO после смены доменного имени, или при реорганизации файловой структуры, или для сокращения длинного некрасивого URL’а и превращения его в более удобный и запоминающийся.
Переадресация
Переадресация может быть совсем простой, как тут:
Redirect 301 ^old\.html$ http://localhost/new.html
Redirect 301 ^old\.html$ http://localhost/new.html
Тут код статуса HTTP устанавливается на 301 (постоянно меняемый) и переадресовывает все запросы к old.html прямиком на new.html. Для совмещения URL’а с переадресацией мы применяем регулярное выражение, что даёт нам отличный контроль над применением только верного URL’а, но усложняет конфигурацию и управление ей. Требуется полный URL переадресовываемого ресурса.
Перезапись
Перезапись может быть простой, как здесь:
RewriteEngine on RewriteRule ^old\.html$ new.html
RewriteRule ^old\.html$ new.html
В этом примере мы всего лишь делаем простую переадресацию от одного файла к другому, что тоже выполняется прямиком, без изменений, отображаемых в адресной строке. Первая команда, RewriteEngine on, просто гарантирует, что механизм перезаписи включён.
Для обновления того, что отображено в адресной строке браузера посетителя, можно использовать метку R в конце RewriteRule, например:
RewriteRule ^old\.html$ http://hostname/new.html [r=301]
RewriteRule ^old\.html$ http://hostname/new.html [r=301]
Метка r вызывает внешнее перенаправление, вот почему тут приведен полный URL (пример URL здесь) новой страницы. Также при использовании метки можно определить код состояния. Таким образом обновляется адресная строка браузера пользователя.
Одним из возможных использований перезаписи URL, упомянутых мной в начале этого раздела – это сделать некрасивые URL’ы (содержащие информацию строкового запроса) более дружественными для посетителей и поисковых движков. Давайте рассмотрим это в действии:
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+) product.php?cat=$1&amp;brand=$2&amp;prod=$3
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+) product.php?cat=$1&amp;brand=$2&amp;prod=$3
Это правило позволит посетителям использовать такой URL, как products/turntables/technics/sl1210, и преобразовать его в product.php?cat=turntables& brand=technics&prod=sl1210. Круглые скобки между косыми чертами в вышеприведенном регулярном выражении – это собирающие группы – мы можем применять любую из них, как $1, $2 и $3 соответственно. Символьный класс [^/]+ в круглых скобках означает совпадение любого символа один или более раз, кроме косой черты
На практике перезапись URL может оказаться (и обычно так и есть) намного сложнее и добиться с её помощью можно гораздо большего. Перезапись URL лучше объясняется в отдельных учебниках, поэтому здесь мы её детально рассматривать не станем.
Создание необычных страниц ошибок
Стандартную страницу ошибки 404 демонстрировать больше не «круто». На многих сайтах пользуются возможностью, предоставляемой ошибкой file not found, для того, чтобы внести в нее некоторую долю юмора, хотя подразумевается, что худо-бедно, но страница с ошибкой 404 должна соответствовать стилю и теме любой другой страницы сайта.
Что очень близко связано с перезаписью URL’а, с помощью файла .htaccess легко обслуживать пользовательскую страницу ошибки 404 вместо стандартной:
ErrorDocument 404 «/404.html»
ErrorDocument 404 «/404.html»
Это – всё, что нам нужно; при возникновении ошибки 404 всегда отображается указанная страница. Еще мы можем конфигурировать страницы для отображения многих других ошибок сервера.
Ограничение доступа к определённым ресурсам
С помощью файлов .htaccess можно включить защиту любого файла или каталога паролем — для всех пользователей или в зависимости от домена или IP адреса. Это, помимо всего, и есть один из основных методов их применения. Чтобы предотвратить доступ ко всему каталогу, просто создаём файл .htaccess, содержащий следующий код:
AuthName «Username and password required» AuthUserFile /path/to/.htpasswd Require valid-user AuthType Basic
AuthName «Username and password required»
Затем этот файл нужно поместить в каталог, требующий защиты. Указатель AuthName определяет сообщение, которое следует отобразить в диалоговом окне «имя пользователя/пароль», AuthUserFile должен послужить путём к файлу .htpasswd. Указатель Require уточняет, что только авторизовавшиеся пользователи могут получить доступ к защищённому файлу, в то время как AuthType установлен на Basic.
Чтобы защитить некий файл, можно обернуть вышеупомянутый код в указатель files, определяющий защищённый файл:

JavaScript. Быстрый старт
Изучите основы JavaScript на практическом примере по созданию веб-приложения
<Files «protectedfile.html»> AuthName «Username and password required» AuthUserFile /path/to/.htpasswd Require valid-user AuthType Basic </Files>
AuthName «Username and password required»
Нам также нужен файл .htpasswd для тех типов аутентификации, где содержится список разделённых двоеточием имён пользователей и зашифрованных паролей, требуемых для получения доступа к защищённому ресурсу(ам). Этот файл нужно сохранить в каталог, недоступный из сети. Существует ряд сервисов, которые можно использовать для автоматического генерирования этих файлов, так как пароли должны сохраняться в зашифрованном виде.
Блокирование доступа к определённым объектам
Файл .htaccess, кроме того, применяется для быстрой и легкой блокировки всех запросов с IP-адреса или агента пользователя. Чтобы блокировать некий IP-адрес, просто добавьте в свой файл .htaccess следующий код:
order allow,deny deny from 192.168.0.1 allow from all
deny from 192.168.0.1
Указатель order говорит Apache, в каком порядке оценивать директивы allow/deny. В данном случае первым оценивается allow, а за ним deny. Указатель allow from all оценивается самым первым (даже если появляется после deny) и разрешаются все IP, далее, если IP клиента соответствует указанному в параметре deny, доступ запрещается. Таким образом, доступ разрешается всем IP, кроме указанного. Следует отметить, что, кроме того, можно лишить доступа целые блоки IP, предоставив более короткий IP, например, 192.168.
Для запрета запросов с агента пользователя можно сделать следующее:
В этом примере любой клиент со строкой HTTP_USER_AGENT, начинающейся с OrangeSpider (вредный бот), перенаправляется обратно к адресу, с которого был инициирован. Регулярное выражение сопоставляет любой одиночный символ (.) ноль или более раз (*) и переадресовывает к переменной среды %
Вмешиваемся в режим визуализации IE
Наряду с контролем над тем, как сервер отвечает на определённые запросы, можно сделать кое-что с браузером пользователя, например, вынудить IE отображать страницы, используя определённый движок визуализации. Так, можно применить модуль mod_headers, если тот присутствует, для установки заголовка X-UA-Compatible:
Header set X-UA-Compatible «IE=Edge»
Header set X-UA-Compatible «IE=Edge»
Путем добавления этой строки в файл .htaccess IE отдается указание применить самый высокий доступный режим отображения. Как показывает HTML5 Boilerplate, еще можно избежать установки этого заголовка в не требующие его файлы, использовав параметр FilesMatch следующим образом:
<FilesMatch «\.(js|css|gif|png|jpe?g|pdf|xml|oga|ogg|m4a|ogv|mp4|m4v|webm|svg|svgz|eot| ttf|otf|woff|ico|webp|appcache|manifest|htc|crx|xpi|safariextz|vcf)$» > Header unset X-UA-Compatible </FilesMatch>
Header unset X-UA-Compatible
Осуществление кэширования
Кэширование легко настраивается и способно заставить сайт быстрее загружаться. Этим сказано все! Установив большой срок действия для тех элементов сайта, которые не меняются часто, можно предотвратить постоянные запросы браузера к неизменённым ресурсам.
Если вы проверяете свой сайт на Google PageSpeed или Yahoo’s YSlow и получили сообщение об установке долгосрочных заголовков, то вот как это можно исправить:
ExpiresActive on 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 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 включена. Эти указатели зависят от Apache, загружающего модуль mod_expires.
Включаем сжатие
Другое предупреждение, которое можно получить в процессе проверки производительности, относится к включению сжатия, и это тоже можно исправить, просто обновив файл .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
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/html
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/css
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/javascript
FilterProtocol COMPRESS DEFLATE change=yes;byteranges=no
Эта схема сжатия работает на новых версиях Apache (2.1+), применяющих модуль mod_filter. Он использует алгоритм DEFLATE для сжатия контента в зависимости от его типа, и в этом случае мы определяем text/html, text/css и text/javascript (которые, скорее всего, окажутся видами файлов, помеченных в PageSpeed/Yslow).
применить, используя параметр FilterDeclare – в данном случае COMPRESS. Затем перечисляем виды контента, для которого нам нужно использовать этот фильтр. Указатель FilterChain отдает команду серверу выстроить цепь фильтров на основе перечисленных нами параметров FilterProvider. Параметр FilterProtocol дает возможность определять опции, примененные к последовательности фильтров, всякий раз, когда она запускается; опции, которые нам следует использовать – это change=yes (контент может быть изменён фильтром (в данном случае – сжат) и byteranges=no (фильтр должен применяться только к определённым файлам).
В более старых версиях Apache модуль mod_deflate используется для конфигурирования сжатия DEFLATE. В этом случае у нас меньше контроля над тем, как фильтруется контент, а указатели проще:
SetOutputFilter DEFLATE AddOutputFilterByType DEFLATE text/html text/css text/javascript
AddOutputFilterByType DEFLATE text/html text/css text/javascript
Здесь мы всего лишь устанавливаем алгоритм сжатия с помощью указателя SetOutputFilter, а затем определяем виды контента, который нужно сжать, используя параметр AddOutputFilterByType.
Обычно веб-сервер применяет один из этих модулей в зависимости от того, какая версия Apache используется. Обычно вы знаете это заранее, но если создаётся универсальный файл .htaccess, который можно использовать на многих сайтах, или которым можно поделиться с другими людьми, и потому неизвестно, какие модули применить, то вы можете использовать оба вышеприведенных программных блока, обёрнутых в указатели IfModule module_name для того, чтобы использовался подходящий модуль и сервер не выдавал по 500 ошибок, если мы станем вдруг конфигурировать модуль, невнесенный в список. Вам нужно знать, что для хостов, работающих с большим количеством сайтов с единственного блока, сжатие отключают, поскольку при сжатии на сервере происходит небольшая потеря производительности CPU.
Заключение урока по настройке файла htaccess
Мы рассмотрели несколько примеров основновных настроек файла htaccess и то как решать определённые задачи, интересующие нас, создающих и поддерживающих сайты. Как обычно случается с подобным вводным уроком, затронутая тема представляется как введение в отдельный предмет. Существует множество дополнительных опций и конфигураций, которые следует исследовать, так что я настоятельно рекомендовал бы вам продолжить чтение на особенно интересные вам темы.
На этом, урок по настройке файла htaccess, окончен надеюсь вам всё понравилось.
Автор: Dan Wellman
Источник: http://net.tutsplus.com/
Редакция: Команда webformyself.

JavaScript. Быстрый старт
Изучите основы JavaScript на практическом примере по созданию веб-приложения
Узнать подробнее 
Хотите узнать, что необходимо для создания сайта?
Посмотрите видео и узнайте пошаговый план по созданию сайта с нуля!
Конфигурирование сайта с помощью файла .htaccess
Файл .htaccess (с точкой в начале имени) – это конфигурационный файл, который даёт возможность настраивать работу сервера на уровне отдельных каталогов: устанавливать права доступа к файлам в каталогах, менять названия индексных файлов, самостоятельно обрабатывать коды ответов протокола HTTP, модифицировать адреса запрошенных страниц.
Примечание
Файл .htaccess может быть размещен в любом каталоге. Директивы этого файла действуют на все файлы в текущем каталоге и во всех его подкаталогах (если эти директивы не переопределены директивами файлов .htaccess во вложенных каталогах).
Изменения, вносимые в файлы .htaccess, вступают в силу немедленно и не требуют перезагрузки сервера в отличие от изменений, вносимых в главный конфигурационный файл httpd.conf.
Для того, чтобы файлы .htaccess можно было использовать, необходимы соответствующие настройки главного конфигурационного файла httpd.conf, где должны быть прописаны директивы, которые разрешат файлу .htaccess переопределять конфигурацию Web-сервера в каталоге. Список этих директив задаётся директивой AllowOverride.
Директива AllowOverride может включать в себя одну из следующих директив или их комбинацию:
Для того чтобы дать директивам файлов .htaccess максимальные права на изменения директив, значение директивы AllowOverride в файле httpd.conf должно быть равно All. Оно является значением по умолчанию.
Запретить переопределение любых директив в конфигурационных файлах .htaccess можно при помощи значения None:
Замечание
Название конфигурационного файла можно изменить, и например, назвать его не .htaccess, a access.conf. За название этого файла отвечает директива AccessFileName в файле httpd.conf. Изменение названия конфигурационного файла .htaccess не рекомендуется, т.к. это может усложнить дальнейшую поддержку сервера.
Синтаксис .htaccess
Перед тем, как будут рассмотрены примеры, остановимся на синтаксисе директив в файлах .htaccess.
Пути к файлам и каталогам должны указываться от корня сервера, например, /pub/articles/masters/php/
При указании абсолютных url обязательно должны быть зааданы протоколы, например:
В файлах .htaccess недопустимы пробелы в указаниях путей к файлам и в названиях самих файлов, т.к. это приводит к генерации кода ответа 500 — ошибка конфигурации сервера: «Internal Server Error».
Примеры использования .htaccess
Индексные страницы:
Могут возникнуть ситуации, когда необходимо изменить состав индексных файлов, например, если нужна индексная страница index.php, а в основном конфигурационном файле httpd.conf она не прописана. Эту задачу можно решить при помощи файла .htaccess, в котором необходимо создать директиву DirectoryIndex, где будут перечислены имена индексных страниц:
При запросе каталога без указания имени файла сначала будет осуществлён поиск страницы с именем index.php. Если страницы с таким именем нет в каталоге, то аналогичные операции будут произведены с файлом index.shtml и т.д. до конца списка, пока не будет найдена и открыта соответствующая страница.
Запрет на отображение содержимого каталога при отсутствии индексного файла
Часто требуется запретить отображение списка файлов в каталоге, если не указан или отсутствует индексный файл. Например, запретить отображение содержимого каталога с изображениями. Если такой запрет не поставить, то пользователь, обратившийся напрямую к такому каталогу, получит список всех изображений.
Обработка кодов ответов Web-сервера Apache
Ни один сайт не затрахован от возникновения ошибок. Самой частой ошибкой является переход по ссылке на несуществующую страницу. В этом случае Apache генерирует код ответа 404 и отображает автоматически сгенерированную страницу с сообщением об ошибке. Наличие несуществующих страниц производит плохое впечатление на посетителей сайта. Это впечатление можно сгладить, если вместо стандартных страниц, подставлять собственные страницы с сообщением об ошибке. За назначение страниц — обработчиков кодов ответа протокола HTTP несёт ответственность директива ErrorDocument
После директивы ErrorDocument следует указать код ответа и страницу, на которую необходимо перенаправить посетителя при возникновении данного кода ответа.
401 ошибка — Запрос требует аутентификации пользователя (Unautorized).
403 ошибка — Доступ к запрашиваемому ресурсу запрещён (Forbidden).
404 ошибка — Запрашиваемый документ на сервере отсутствует (Not Found).
500 ошибка — Ошибка конфигурации сервера или внешней программы (Internal Server Error).
Выполнять код PHP в файлах HTML
Обычно PHP-код выполняется в файлах с расширениями php. Иногда возникают ситуации, когда необходимо выполнять PHP-код в файлах с другим расширением. В этом случае можно дать указание Web-серверу выполнять PHP-код не только в файлах с расширением php, но и в файлах с расширением html.
Первая строка удаляет обработчик файлов с расширениями html и htm, а вторая строка сообщает серверу о необходимости использовать для файлов с расширениями htm и html обработчик PHP
Задание кодировки файлов на сервере
Указанная кодировка отправляется браузеру в заголовке Content-Type и позволит браузеру клиента автоматически переключиться на требуемую кодировку.
Задание кодировки загружаемых файлов
При загрузке файлов на сервер можно указать, в какой кодировке сервер должен ожидать файл.
Отключение директивы MultiViews
Включённая на хостинге опция MultiViews может вызвать неожиданные проблемы, например, отображение несуществующих страниц сайта. Допустим, на сайте существует страница с адресом http://www.sait.ru/down.php, и если посетители обратятся к несуществующему каталогу http://www.sait.ru/down/, то включённая опция MultiViews вместо этого каталога подставит файл down.php. Однако подстановка будет выполнена не полностью — пути к изображениям, таблицам стилей и т.п. будут подставлены неверно. То есть страница будет отображена с искажениями. Для подавления такого поведения Apache опцию MultiViews следует отключить.
Запрет доступа к файлам
Для того чтобы посетители не могли получить доступ к служебным файлам из окна браузера, можно запретить доступ к таким файлам. Для этого используется директива запрета Deny и разрешения доступа Allow.
Примечание
Использование директив Deny и Allow управляет только доступом к файлам из браузера, либо из другой программы-клиента. Подобные запреты не распространяются на скрипты сервера.
Запрет доступа к файлам из браузера
При использовании такой директивы будет запрещён доступ из браузера ко всем файлам и каталогам текущего каталога.
Запрет доступа к определенному файлу
Здесь запрещен доступ только к файлам с именем config.php.
Запрет доступа к файлам расширения inc
* — любая последовательность символов, исключая символ слеша (/).
Запретить доступа к файлам с несколькими типами расширений
Запрещен доступ к файлам с расширением inc, conf и cfg
Запретить доступ с определенного IP-адреса
Разрешить доступ только с определенного IP-адреса
Директива Order позволяет задать порядок, в котором будут выполняться директивы. Сначала выполняется директива запрета доступа(директива Deny), а затем разрешается доступ то для IP-адреса 195.135.232.70 (директива Allow). Если в первой строке поменять порядок следования директив на Order allow,deny, то доступ для IP-адреса 195.135.232.70 не будет открыть, т.к. директива Deny, выполняемая последней, перекроет действие директивы Allow.
Примечание
Следует отметить, что разрешение доступа с определённого IP-адреса иногда может не сработать. Например, в том случае, если на хостинге установлен обратный кэширующий proxy-сервер. Если директивы разрешения доступа не работают, то вам нужно обратиться по этому вопросу в службу технической поддержки хостинга.
Перенаправление на другой адрес
Часто встречаются задачи, когда все запросы к определённому каталогу или странице нужно перенаправить (redirect) на другой адрес. Это можно сделать с помощью директив Redirect и RedirectMatch. Они сообщают, что ресурс по запрошенному url отсутствует, и указывают адрес, по которому следует перейти. Директивы Redirect посылают браузеру соответствующий заголовок, и уже браузер осуществляет перенаправление.
Глобальное перенаправление на новый адрес
Перенаправление при обращении к определённому файлу
Перенаправление при обращении к любым страницам каталога
Перенаправление при обращении к любым страницам сайта
Полезные хаки и сниппеты для .htaccess / Habr
Это перевод очень интересной лично для меня статьи, которым я хочу поделиться с уважаемым хабрасообществом. Некоторые из приведенных рецептов я уже встречал на Хабре, но разрозненно и далеко не все из нижеприведенного.
О предназначении файла .htaccess знает каждый веб-разработчик. На базовом уровне он позволяет управлять доступом к каталогам сайта. Но добавляя в него различные дополнительные фрагменты кода, с ним можно сделать и много других интересных вещей.
Если же вам нужны базовые сведения о предназначении данного файла, то вы можете получить из нашей статьи введение в .htaccess (перевод данной статьи не делал, так как там основы, их достаточно в русскоязычном сегменте Сети, но если будет проявлен интерес, то можно и ее перевести для полноты картины — прим. переводчика), в которой достаточно подробно раскрыты все аспекты его применения.
Итак, полезные примеры использования. htaccess:
1. Управление доступом к файлам и каталогам
Чтобы сделать это, поместите данный код в файл. htaccess и сохраните его в каталоге к которому закрываете доступ:
Однако учитывайте, что доступ будет блокирован для всех пользователей, включая и вас. Открыть доступ для конкретного пользователя можно прописав его IP-адрес. Вот код, который для этого потребуется:
где xxx. xxx. xxx. xxx — это ваш IP. Для задания разрешенных диапазонов IP-адресов вы можете заменить три последние цифры. Например, написав вместо них «0/12», вы зададите диапазон IP-адресов одной сети, что избавит вас от необходимости вводить в список все разрешенные IP-адреса отдельно.
Если вы хотите заблокировать доступ к определенному файлу, включая сам. htaccess, используйте следующий фрагмент кода:
Если вы хотите указать определенные IP-адреса которым надо запретить доступ, перечислите их при помощи allow from.
Если же вы хотите заблокировать доступ к файлам определенного типа, используйте этот код:
2. Запрет на просмотр директорий
3. Ускорение времени загрузки за счет сжатия файлов
4. Защита сайта от вставки изображений с других ресурсов
5. Блокировка посетителей, перешедших с определенного домена
6. Блокирование запросов от определенных браузеров
7. Кэширование файлов
8. Отключение кэширования для разных типов файлов
9. Обход диалога загрузки
10. Переименование файла .htaccess
11. Замена стартовой страницы сайта
12. Перенаправление на защищенное соединение HTTPS
13. Ограничение максимального размера загружаемых файлов в PHP, максимального размера передаваемых данных, максимального времени выполнения скриптов и т.п.
14. Скрытие типов файлов
UPD (спасибо akuma) расширение РНР для скрытия формата файлов приведено как пример и использование этого трюка в реальном проекте может оказаться небезопасным
.htaccess для новичков
- Главная
- ->
- Материалы
- ->
- .htaccess для новичков
Reg.ru: домены и хостинг
Крупнейший регистратор и хостинг-провайдер в России.
Более 2 миллионов доменных имен на обслуживании.
Продвижение, почта для домена, решения для бизнеса.
Более 700 тыс. клиентов по всему миру уже сделали свой выбор.
Перейти на сайт->
Бесплатный Курс «Практика HTML5 и CSS3»
Освойте бесплатно пошаговый видеокурс
по основам адаптивной верстки
на HTML5 и CSS3 с полного нуля.
Фреймворк Bootstrap: быстрая адаптивная вёрстка
Пошаговый видеокурс по основам адаптивной верстки в фреймворке Bootstrap.
Научитесь верстать просто, быстро и качественно, используя мощный и практичный инструмент.
Верстайте на заказ и получайте деньги.
Получить в подарок->
Бесплатный курс «Сайт на WordPress»
Хотите освоить CMS WordPress?
Получите уроки по дизайну и верстке сайта на WordPress.
Научитесь работать с темами и нарезать макет.
Бесплатный видеокурс по рисованию дизайна сайта, его верстке и установке на CMS WordPress!
Получить в подарок->
*Наведите курсор мыши для приостановки прокрутки.
.htaccess для новичков
Файлы .htaccess используются для настройки веб-серверов (в основном речь идет об Apache, но не только). Несмотря на «странное» расширение файла, это обычный текстовый файл, который можно отредактировать в любом текстовом редакторе.
В данном материале мы рассмотрим основные моменты, которые помогут Вам при разработке своих проектов.
Для того, чтобы работать с файлами .htaccess локально и иметь возможность тестировать их, Вы можете использовать набор «Денвер», после установки которого получите на своем компьютере мини-сервер с установленными и настроенными Apache, PHP и MySQL.
Файлы .htaccess имеют такой же формат, как и главный конфигурационный файл Apache — httpd.conf. Многие из настроек httpd.conf можно задать с помощью .htaccess, и наоборот.
«Настройки, заданные в .htaccess, перезапишут одноименные настройки из главного конфигурационного файла для той директории, в которой располагается данный файл .htaccess» (включая поддиректории).«
Иногда еще файлы .htaccess называют файлами динамической конфигурации, поскольку они считываются сервером при каждом запросе к директории, в которой они содержатся.
Это означает, что изменения, внесенные в .htaccess, вступают в силу немедленно, не требуя перезагрузки сервера (в отличие от настроек, заданных в главном конфигурационном файле — httpd.conf). Также это значит, что мы немного теряем в производительности, однако такое решение очень полезно, когда у нас нет доступа к главному файлу настроек сервера.
Теперь мы имеем общее представление о файлах .htaccess, о том, как их можно редактировать, о некоторых их плюсах и минусах. Давайте посмотрим, как можно их использовать и что можно сделать с их помощью.
Редиректы (перенаправления) и «переписывание» URL-адресов
Частое использование файлов .htaccess заключается в выполнении перенаправления или переписывании URL-адресов.
Это применяется, к примеру, в связи со сменой доменного имени, реорганизацией файловой структуры сайта, при изменении длинных неприглядных URL-адресов на более дружественные и запоминающимся для рядового пользователя.
Редиректы (перенаправления)
Редирект может иметь вид:
Такое перенаправление устанавливает код состояния HTTP в значение 301 (перемещено окончательно) и переводит все запросы к файлу old.htm на файл new.html.
Мы используем регулярное выражение для того, чтобы указать адрес, с которого будет идти переадресация, что дает нам отличный уровень контроля, позволяющий быть уверенным в том, что переадресация будет совершаться только для определенных URL-адресов.
Переписывание URL-адреса
Правило для переписывания URL-адреса может иметь вид:
В этом примере мы совершаем редирект с одного файла на другой без изменения отображаемого URL-адреса в адресной строке браузера. Первая директива — RewriteEngine on — просто гарантирует нам, что включен специальный модуль, который осуществляет данное переписывание.
Для того, чтобы обновить содержимое адресной строки в браузере посетителя, мы можем использовать специальный флаг r в конце правила, например:
Флаг r вызывает внешнее перенаправление, поэтому указывается полный адрес до новой страницы. Мы также можем указать код состояния при использовании флага. Это приведет к обновлению информации в адресной строке браузера посетителя.
Одно из применений переписывания URL-адресов — это создание так называемых ЧПУ (человеко-понятных URL-адресов) из длинных и «некрасивых». Давайте посмотрим, как можно это сделать:
Это правило приведет к тому, что в адресной строке может быть адрес вида:
При этом, при обращении по такому адресу будет идти его преобразование в адрес:
Круглые скобки в регулярном выражении выше обозначают группы. Именно к ним мы обращаемся как к $1, $2 и $3 соответственно.
Набор символов [^/]+ означает, что в указанном месте могут находиться любые символы кроме прямого слэша 1 или более раз. По сути, таким шаблоном регулярного выражения мы охватываем три части URL-адреса: turntables, technics и sl1210
На практике переписывание URL-адресов может быть (и обычно бывает) более сложным и позволяет достичь интересных результатов. В рамках данной статьи мы не будем рассматривать этот момент глубже.
Задание произвольных страниц ошибок
Показывать людям страницы ошибок, заданные «по умолчанию», уже не здорово. Многие сайты используют возможности, предлагаемые файлом .htaccess для того, чтобы превратить страницы ошибок на сайте в нечто юмористическое и поднимающее пользователю настроение. И это правильно.
Как минимум имеет смысл настроить страницы ошибок так, чтобы они не выбивались из общего дизайна сайта. Давайте рассмотрим это на простом примере:
Вот и все, что нам нужно. Теперь, когда случится ошибка 404, то будет отображена страница с именем 404.html из корня нашего сайта. Разумеется, можно дать ей любое имя и разместить где нам удобно.
Аналогичным образом мы можем настроить отображение своих произвольных страниц и для других ошибок сервера (403, 500 и т.п.)
Ограничение доступа к определенным ресурсам
Используя .htaccess мы можем защитить паролем доступ к любому файлу или директории по отношению ко всем пользователям, либо на основании их IP-адреса или домена. Это, кстати, одна из наиболее распространенных областей применения .htaccess.
Чтобы предотвратить доступ ко всей папке, мы должны написать такой код:
Файл .htaccess с таким кодом нужно сохранить в той папке, доступ к которой мы хотим ограничить.
Директива AuthName определяет текст сообщения, которое будет отображаться в диалоговом окне.
Директива AuthUserFile указывает путь до файла .htpasswd (файл, содержащий пароли для доступа к ресурсу).
Директива Require говорит о том, что только пользователь, прошедший авторизацию, может получить доступ к информации.
Такой тип авторизации (AuthType) имеет название базовой (Basic) авторизации.
Для того, чтобы защитить конкретный файл, мы можем «обернуть» код выше в директиву <files>, которая указывает на защищенный файл:
Для таких типов авторизации нам нужен файл .htpasswd, в котором содержится список разделенных двоеточием пар «пользователь:зашифрованный пароль». Т.е. этот файл содержит всех пользователей и их пароли, необходимые для получения доступа к ресурсу.
Важно, что этот файл должен быть сохранен в директории, к которой невозможно получить доступ через URL-адрес.
Запретить доступ для определенных лиц
Еще одно применение файла .htaccess — легко и быстро заблокировать все запросы с определенного IP-адреса или от определенного клиента (обычно браузера). Для того, чтобы заблокировать определенный IP-адрес, просто добавьте следующие директивы в .htaccess:
Директива order сообщает Apache в каком порядке обрабатывать директивы allow/deny (разрешить/запретить).
В примере выше сначала будет выполняться директива allow, потом — deny.
Обратите внимание, что директива allow будет выполняться первой (даже если она идет после deny), и все IP будут разрешены. А затем, если IP-адрес клиента совпадает с IP-адресом, указанным для директивы deny, доступ с него к ресурсу будет запрещен.
Если говорить кратко, то мы запретили доступ с одного IP-адреса. Обратите внимание, что мы можем запрещать доступ для целых групп IP-адресов, указывая IP вида: 192.168. Так мы охватываем целый диапазон IP.
Чтобы запретить доступ в зависимости от клиентского приложения (user-agent), мы можем поступить так:
В этом примере любой клиент, у которого строка HTTP_USER_AGENT начинается с «OrangeSpider» (некий зловредный бот) переадресовывается обратно на адрес, с которого он «пришел».
Регулярное выражение соответствует любому одиночному символу (.), повторенному ноль или более раз (*) и перенаправляет по адресу, содержащемуся в переменной окружения (среды) % . Флаг 1 инструктирует Apache о том, что с этим правилом нужно обращаться как с последним, т.е. он не будет обрабатывать другие правила, пока не выполнит переписывание URL.
Реализация кэширования
Кэширование несложно настроить, и оно способствует более быстрой работе сайта. Установив «срок годности» для элементов сайта, которые редко изменяются, где-то в далеком будущем, мы получаем следующее преимущество: мы предотвращаем лишние повторные обращения браузера к серверу, повышая скорость отклика и работы сайта в целом:
Вы можете добавлять различные директивы для ExpiresByType для контроля кэшируемых элементов. Первая директива ExpiresActive on просто гарантирует нам, что включен специальный модуль, который осуществляет гененрирование загловков со «сроком годности».
Выполнение данных директив зависит от того, установлен ли на Apache соответствующий модуль — mod_expires.
Включение сжатия
Еще один момент, влияющий на скорость работы приложения — сжатие контента. Реализовать его можно подобным образом:
Такая схема сжатия работает на версиях Apache от 2.1 и выше, использующих модуль mod_filter.
Здесь используется алгоритм DEFLATE для сжатия контента на основании загловков content-type. В нашем случае мы указали text/html, text/css и $text/javascript.
В примере выше с помощью директивы FilterDeclare мы объявляем фильтр, который хотим использовать (COMPRESS). Затем перечисляем типы контента, которые должен обработать этот фильтр.
Директива FilterChain инструктирует сервер о том, что нужно построить цепочку фильтров на основании директив FilterProvider, которые перечилсены чуть выше.
Директива FilterProtocol позволяет нам указать настройки, которые применяются к цепочке фильтров во время их (фильтров) работы. Мы используем настройки change=yes (контент может быть изменен фильтром, в нашем случае он может быть сжат) и byteranges=no (фильтр должен применяться только к целым файлам).
В более ранних версиях Apache для конфигурирования DEFLATE сжатия используется модуль mod_deflate. В этом случае у нас меньше контроля над фильтрацией контента, но и директивы проще:
В этом случае мы просто устанавливаем алгоритм компрессии, используя директиву SetOutputFilter и следующей строкой указываем типы контента, которые мы желаем сжать с помощью директивы AddOutputFilterByType.
Как правило, Ваш веб-сервер будет использовать один из этих модулей в зависимости от того, какая версия Apache на нем установлена.
Скорее всего, Вы будете знать это заранее, но если Вы создаете общий .htaccess файл, который будет использоваться на ряде сайтов (и Вы не сможете знать об установленных модулях заранее), имеет смысл использовать оба блока кода выше, заключенных в директиву <IfModule module_name>. Это позволит использоваться нужному модулю не приводя к ошибке 500 при попытке настраивать и использовать несуществующий модуль.
Мы рассмотрели некоторые из наиболее частых применений файла .htaccess. Как и в случае с любым обзорным материалом, моменты, которые мы затронули, представлены лишь как введения в более узкие темы. Существует еще множество других настроек, которые мы не рассмотрели, поэтому при необходимости Вы можете изучить эти темы более детально.
Источник: http://net.tutsplus.com
Перевод: Дмитрий Науменко
P.S. Обратите внимание на премиум-уроки по различным аспектам сайтостроения, включая программирование на PHP, а также на бесплатный курс по созданию своей CMS-системы на PHP с нуля. Все это поможет вам быстрее и проще освоить этот мощный язык веб-разработки:
Понравился материал и хотите отблагодарить?
Просто поделитесь с друзьями и коллегами!
Администратор КП. Настройки сервера
— Удалением символа «?» (вопросительнй знак) в начале и в конце строки
+ Удалением символа «#» (решетка) в начале строки
— Удалением символа «;» (точка с запятой) в начале строки
2. Система «1С-Битрикс» позволяет просмотреть права на файлы и папки, установленные на уровне системы. Данные параметры отображаются:
— на странице настроек модуля «Управление структурой»
+ в «Менеджере файлов»
— на странице настроек «Главного модуля»
3. Использование директивы AllowOverride в файле httpd.conf позволяет определить:
— типы директив файла httpd.conf, которые могут доминировать над более ранними настройками доступа
+ типы директив файла .htaccess, которые могут доминировать над более ранними настройками доступа
— каталоги, на которые распространяется действие файла .htaccess
4. Для того чтобы изменения файла .htaccess вступили в силу, необходимо:
— сохранить изменения, затем разрешить использование измененного файла .htaccess в файле настроек конфигурации сервера (httpd.conf)
+ сохранить файл
— сохранить файл и перезапустить сервер
5. Файл dbconn_error.php используется для
+ определения параметров сообщения об ошибке подключения к базе данных
— определения параметров сообщения об ошибке запроса к базе данных
— определения параметров подключения к базе данных
6. Утилита perror.exe позволяет:
— получить код ошибки по ее описанию
— перейти к восстановлению базы данных для устранения ошибки с указанным кодом
+ получить описание ошибки по ее коду
7. Если файл .htaccess размещен в одном из каталогов сайта, то действие его директив распространяется:
— на данный каталог и все вышележащие папки (если для них не создан свой файл .htaccess)
+ на данный каталог и все вложенные папки (если для них не создан свой файл .htaccess)
— на весь сайт
8. Строка define(«BX_FILE_PERMISSIONS», 0644), размещенная в файле dbconn.php, устанавливает:
— права на доступ к файлам и папкам, создаваемым либо редактируемым средствами системы
— права на доступ к файлам на сервере
— права на доступ к файлам и папкам на сервере
+ права на доступ к файлам, создаваемым либо редактируемым средствами системы
9. Использование в файле .htaccess инструкций, не разрешенных в конфигурации сервера, приводит к возникновению:
+ внутренней ошибки сервера
— ошибки запроса к базе данных
— ошибки соединения с базой данных
Как включаются закомментированные php директивы в файле htaccess
Курс предназначен для организаций, предоставляющих услуги хостинга и желающих получить компетенцию Рекомендуемый хостинг.
В курсе рассматриваются требования платформы Bitrix Framework к хостингу, вопросы установки, настройки продукта а также вопросы инструментов и методов оптимизации серверов и баз данных для работы с системой
Для хостеров не является обязательным, но рекомендуется изучение курсов Контент-менеджер и Администратор. Базовый для получения более полного представления о возможностях системы и способах работы с ней.
Рекомендуется ознакомиться с опытом настройки и тестирования серверов в блоге Дениса Шаромова, а так же с отзывами клиентов о хостингах в группе Черный и белый список хостингов социальной сети компании "1С-Битрикс".
Если ваш хостинг на Windows, то вам может быть полезна группа 1С-Битрикс на платформе Windows Server 2008 в социальной сети сайта "1С-Битрикс". В ней пользователи делятся опытом работы системы на IIS 7.
Тесты и сертификат
После изучения курса вам будет предложено пройти тесты на сертификацию. При успешной сдаче линейки тестов на странице Моё обучение можно просмотреть результат обучения и загрузить сертификат в формате PDF.
Также Вы можете поделиться ссылкой на страницу со своими сертификатами. Для этого на странице Моё обучение отметьте опцию Разрешить публичный доступ к резюме студента
и скопируйте ссылку на страницу резюме
. Страница с Вашим резюме будет доступна всем, кому Вы отправите ссылку на неё.
Комментарии к урокам
| На каждой странице курса авторизованный на сайте посетитель может дать комментарий к содержимому страницы. Комментарий — не форум, там не ведётся обсуждений или разъяснений. Это инструмент для сообщений нам об ошибках, неточностях. Для отправки комментария воспользуйтесь расположенной в правом нижнем углу окна браузера кнопкой: | ![]() |
У нас часто спрашивают, сколько нужно заплатить
Курс полностью бесплатен. Изучение курса, прохождение итоговых тестов и получение сертификатов — ничего из этого оплачивать не нужно.
Ещё у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров.
Баллы опыта
В конце каждого урока есть кнопка Прочитано! . При клике на неё в Вашу итоговую таблицу опыта добавляется то количество баллов, которое указано в прочитанном После нажатия кнопки Прочитано! появится
окно подтверждения:
уроке.
Периодически мы заново оцениваем сложность уроков, увеличивая/уменьшая число баллов, поэтому итоговое количество набранных Вами баллов может отличаться от максимально возможного. Не переживайте! Отличный результат — это если общее число набранных Вами баллов отличается от максимального на 1-2%.
Скачать материалы курса в формате EPUB. Файлы формата EPUB Чем открыть файл на
Android:
EPUB Reader
CoolReader
FBReader
Moon+ Reader
eBoox
iPhone:
FBReader
CoolReader
iBook
Bookmate
Windows:
Calibre
FBReader
Icecream Ebook Reader
Плагины для браузеров:
EpuBReader – для Firefox
Readium – для Google Chrome
iOS
Marvin for iOS
ShortBook
Linux:
Calibre
FBReader
Cool Reader
Okular обновляются периодически, поэтому возможно некоторое отставание их от онлайновой версии курса. Версия файла от 10.02.2023.
Как включаются закомментированные php директивы в файле htaccess
Конфигурирование сайта с помощью файла .htaccess
Синтаксис .htaccess
- Пути к файлам и каталогам должны указываться от корня сервера, например, /pub/articles/masters/php/
- При указании абсолютных url обязательно должны быть зааданы протоколы, например: Redirect / http://www.site.ru
- В файлах .htaccess недопустимы пробелы в указаниях путей к файлам и в названиях самих файлов, т.к. это приводит к генерации кода ответа 500 — ошибка конфигурации сервера: «Internal Server Error».
Примеры использования .htaccess
DirectoryIndex index.php index.shtml index.html
Обработка кодов ответов Web-сервера Apache
ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
- 401 ошибка — Запрос требует аутентификации пользователя (Unautorized).
- 403 ошибка — Доступ к запрашиваемому ресурсу запрещён (Forbidden).
- 404 ошибка — Запрашиваемый документ на сервере отсутствует (Not Found).
- 500 ошибка — Ошибка конфигурации сервера или внешней программы (Internal Server Error).
Выполнять код PHP в файлах HTML
RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml
