Обработка файлов и папок в htaccess: запрет, правила
Существует возможность поставить в файле «.htaccess» запрет на обработку некоторых файлов или наоборот заставить файл обрабатываться вне зависимости от его расширения. К примеру, можно заставить файлы с расширением «.html» обрабатывать как будто у них расширение «.php». Это делается с помощью оператора AddHandler. Попробуем сделать это. Откроем файл «.htaccess» в корне сайта и запишем первой строчкой:
AddHandler application/x-httpd-php .html
Запрет доступа к файлу
Приведём пример запрета на доступ к файлу:
<Files "secret.php"> Deny From All </Files>
Теперь если сделать запрос к файлу secret.php, который находится в корневой папке сайта, то вернётся статус 403 (доступ запрещён) и будет показано сообщение:
Forbidden You don't have permission to access secret. php on this server.
Apache/XXX (YYYY) Server at ZZZZ Port №№
Вместо отдельного файла «secret.php» можно поставить папку «/secret/». Тогда получится запрет на доступ к папке и всем вложенным в неё папкам/файлам.
Попробуем изменить сообщение о запрете доступа. Для этого поставим опцию ErrorDocument, которая указывает, какой документ необходимо выдавать на какую ошибку:
ErrorDocument 403 /403.html <Files "secret.php"> Deny From All </Files>
Теперь при обращении к файлу «secret.php» будет выдаваться страница
Запрет на отображение содержимого папки
Из соображений безопасности на сайтах часто ставят запрет на отображение списка файлов в папке без индексного файла. Представьте ситуацию: пользователь переходит по адресу сайта, который как папка. К примеру, так: site.ru/products/
. Но из-за того что в этой папке не оказалось файла index.php, пользователю показывается не пустая страница, а структура файлов сайта. Чтобы этого не происходило, в .htaccess записывается опция:
Options -Indexes
Тогда при заходе в папке сайта без индексного файла, будет выдаваться статус 403.
Cмотрите другие статьи:
Что такое htaccess, редирект через htaccess и изменение адресов с mod_rewrite
Установить пароль на папку сайта через htaccess
Была ли эта статья полезна? Есть вопрос?
Закажите недорогой хостинг Заказать
всего от 290 руб
Использование файла .htaccess | 8HOST.COM
Linux, VPS | Amber | Комментировать запись
Что такое файл . htaccess?Файл .htaccess позволяет задать конфигурации веб-сайта без необходимости изменять конфигурационные файлы сервера. Точка в начале имени файла означает, что файл является скрытым.
Файл .htaccess можно создать в текстовом редакторе, а затем подгрузить его на сайт с помощью ftp-клиента
Примечание: имя файла .htaccess не содержит дополнительных слов или расширений.
Кроме того, расположение такого файла также имеет огромное значение. Конфигурации в этом файле будет влиять на все содержимое каталога, в котором находится сам файл, а также на все его подкаталоги.
Хотя страница .htaccess невероятно полезна и может заметно улучшить сайт, при ее использовании нужно помнить о двух моментах.
Во-первых, это скорость. Страница .htaccess может немного снизить скорость сервера; в большинстве случаев это почти незаметно. Это происходит из-за расположения страницы: как уже говорилось, файл . htaccess влияет на страницы и подкаталоги в своем каталоге. Каждый раз, когда страница загружается, сервер проверяет ее каталог, а также каждый каталог уровнем выше, пока не достигает наивысшего каталога или файла .htaccess. Этот процесс будет происходить до тех пор, пока параметр AllowOverride позволяет использовать файлы .htaccess, вне зависимости от того, существуют ли вообще такие файлы в системе.
Во-вторых, это безопасность. Получить доступ к файлу .htaccess гораздо проще, чем к обычному конфигурационному файлу Apache, а внесенные в него изменения будут активированы сразу, без необходимости перезагружать сервер. Потому пользователи, имеющие права на внесение изменений в файл .htaccess, могут серьезно влиять на сам сервер. Любая директива, внесенная в .htaccess, имеет тот же эффект, что и директива, внесенная непосредственно в конфигурации Apache.
В общем и целом, Apache не рекомендует использовать .htaccess, если пользователь имеет доступ к конфигурационным файлам Apache.
Имея доступ к настройкам сервера, можно отредактировать конфигурации Apache, чтобы позволить файлам .htaccess подменять стандартные конфиги сайта. Откройте конфигурационный файл хоста apache2 по умолчанию.
Примечание: на данном этапе понадобятся sudo-привилегии.
sudo nano /etc/apache2/sites-available/default
Открыв файл, найдите следующий раздел и измените значение директивы AllowOverride с None на All. Раздел должен выглядеть так:
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Сохраните и закройте файл, а затем перезапустите apache.
sudo service apache2 restart
Как уже говорилось, файл .htaccess можно создать при помощи текстового редактора, а затем загрузить его на сайт через ftp-клиент (при этом имя файла . htaccess не должно содержать дополнительных слов или расширений).
Или же можно создать такой файл с помощью терминала; для этого используйте следующую команду, заменив example.com именем сайта.
sudo nano /var/www/example.com/.htaccess
Один из самых полезных аспектов файла. Пространство файла .htaccess можно использовать для того, чтобы определить/изменить способ отображения URL-адресов и веб-страниц на сайте. Подробную информацию о том, как это делается, можно найти по этой ссылке.
2. АутентификацияХотя файл .htaccess не требует столько прав, как стандартный конфигурационный файл apache2.conf, его все же можно использовать, чтобы внести в защиту сайта эффективные изменения. Дело в том, что .htaccess позволяет запрашивать пароль для доступа к определенным разделам веб-страницы. Пароли .htaccess хранятся в файле по имени .htpasswd.
Примечание: по соображениям безопасности хранить такой файл в каталоге сайта категорически не рекомендуется.
В файле .htpasswd нужно указать имена и пароли всех пользователей, которым разрешен доступ к защищенной части сайта.
Имена и пароли вносятся в файл в виде пары имя_пользователя:зашифрованный_пароль. Например, если пользователь с именем best_user имеет пароль awesome, то такая пара может иметь вид «best_user:VtweQU73iyETM».
Примечание: каждая пара вносится в отдельную строку. Файл .htpasswd может содержать столько строк, сколько необходимо.
Создав .htpasswd, внесите в .htaccess следующий код, чтобы активировать функцию аутентификации:
AuthUserFile /usr/local/username/safedirectory/.htpasswd
AuthGroupFile /dev/null
AuthName Please Enter Password
AuthType Basic
Require valid-user
Строка AuthUserFile определяет путь к файлу .htpasswd.
Строка AuthGroupFile указывает расположение .htgroup. Поскольку на данный момент такого файла не существует, оставьте значение /dev/null.
Строка AuthName содержит текст, который будет отображаться в приглашении ввести пароль (можно ввести абсолютно любой текст).
AuthType относится к типу аутентификации, который будет использоваться для проверки паролей. Пароли проверяются через HTTP, ключевое слово Basic изменять нельзя.
Строка Require valid-user говорит файлу .htaccess, что в защищенные паролем разделы сайта должны иметь доступ несколько человек. В случае если нужно указать определенного человека, имеющего доступ к закрытым частям сайта, вместо строки Require valid-user используется строка Require user имя_пользователя.
3. Пользовательские страницы ошибокФайл .htaccess позволяет создавать для сайта пользовательские страницы ошибок. Некоторые из наиболее распространенных ошибок являются:
- 400 Bad Request (Неверный запрос)
- 401 Authorization Required (Требуется авторизация)
- 403 Forbidden Page (Запрещенная страница)
- 404 File not Found (Файл не найден)
- 500 Internal Error (Внутренняя ошибка)
Пользовательские страницы ошибок создаются с целью сделать страницы сайта более доброжелательными и предоставить посетителю сайта более подробную информацию, чем страницы ошибок сервера по умолчанию.
Для примера можно создать страницу 404 (попробуйте создать любую страницу ошибки на ваш выбор).
Создав и загрузив страницу ошибки, укажите ее местонахождение в файле .htaccess:
ErrorDocument 404 /new404.html
Запомните: Apache ищет страницу 404 в root-каталоге сайта. Поместив новую страницу ошибки 404 в каком-либо подкаталоге, не забудьте добавить этот подкаталог в строку, например:
ErrorDocument 404 /error_pages/new404.html
В случаях, когда на сайте размещены некоторые файлы приложений, для отображения которых сервер не был настроен, в файл .htaccess можно добавить MIME-типы для сервера Apache с помощью следующего кода:
AddType audio/mp4a-latm .m4a
Не забудьте заменить приложение и расширение файла MIME-типом, который нужно поддерживать.
5. SSIТехнология Server Side Includes отлично экономит время на веб-сайте. Одним из наиболее распространенных способов использования SSI является обновление большого количества страниц, содержащих определенный блок данных, без необходимости обновлять каждую страницу по отдельности (например, чтобы изменить цитату в нижней части страницы).
Чтобы включить SSI, введите в .htaccess следующий код:
AddType text/html .shtml
AddHandler server-parsed .shtml
Эти строки сообщают .htaccess о том, что файлы .shtml действительны, а вторая строка говорит серверу проверять все файлы, которые заканчиваются на .shtml, на наличие SSI-команд.
Тем не менее, если на сервере находится большое количество страниц .html, поменять расширение которых на .shtml займет много времени, можно использовать другую тактику их проверки на SSI-команды. Для этого используется параметр XBitHack.
Добавление этой строки в файл .htaccess заставляет Apache проверять все html-файлы с соответствующими правами для Server Side Includes.
XBitHack on
Чтобы позволить странице использовать XBitHack, введите:
chmod +x имя_страницы.html
Данное руководство охватывает лишь основные функции страницы .htaccess, которые, тем не менее, делают работу с сайтом гораздо более гибкой. При возникновении каких-либо вопросов или дополнений о возможностях файла .htaccess, пожалуйста, оставьте свой комментарий.
Tags: .htaccess, Linux, MIME, Mod_Rewrite, SSI, VPSregex — Как я могу остановить обработку htaccess?
Задавать вопрос
спросил
Изменено 2 года, 10 месяцев назад
Просмотрено 229 раз
У меня есть две директивы в htaccess. 9(.*)$ /it/$1 [R=301,L]
, но когда я звоню:
http://HOST/my-page
по URL, я получаю, с «ERR_TOO_MANY_REDIRECTS»:
http://HOST/it/my-page?lng=it&lng=it&{many-others-lng=it}
слово «/it» добавлено правильно в начале URL, а также бесконечность «lng=it»
Я использую флаг «L»: это должно остановить обработку набора правил. (.*)$ /it/$1 [R=301,L]
- регулярное выражение
- apache
- .htaccess
- apache2.4
4
Просто помните, что mod_rewrite
работает в цикле до тех пор, пока не перестанет срабатывать правило. Вы получаете цикл перенаправления, потому что первое правило удаляет /it/
из начала URI, а правило 301
добавляет его впереди.
- Изменение порядка правил
- Использование
THE_REQUEST 9catalogue-men$ views/main/pages/index.cfm?gen=1 [QSA,NC,L]
0
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
php - htaccess останавливает обработку, если указан каталог
спросил 9joomla(/.