Основы PHP
  Что такое PHP?
  Возможности PHP
  Преимущества PHP
  История развития
  Что нового в PHP5?
  «Движок» PHP
  Переход на PHP 5.3
New Переход на PHP 5.6
  Введение в PHP
  Изучение PHP
  Основы CGI
  Синтаксис PHP
  Типы данных PHP
  Переменные в PHP
  Константы PHP
  Выражения PHP
  Операторы PHP
  Конструкции PHP
  Ссылки в PHP
  PHP и ООП
  Безопасность
  Функции PHP
  Функции по категориям
  Функции по алфавиту
  Стандартные функции
  Пользовательские
  PHP и HTTP
  Работа с формами
  PHP и Upload
  PHP и Cookies
  PHP и базы данных
  PHP и MySQL
  Документация MySQL
  Учебники
  Учебники по PHP
  Учебники по MySQL
  Другие учебники
  Уроки PHP
  Введение
  Самые основы
  Управление
  Функции
  Документация
  Математика
  Файлы
  Основы SQL
  Дата и время
  CURL
  Изображения
  Стили
  Безопасность
  Установка
  Проектирование БД
  Регулярные выражения
  Подготовка к работе
  Быстрый старт
  Установка PHP
  Установка MySQL
  Конфигурация PHP
  Download / Скачать
  Скачать Apache
  Скачать PHP
  Скачать PECL
  Скачать PEAR
  Скачать MySQL
  Редакторы PHP
  Полезные утилиты
  Документация
  PHP скрипты
  Скачать скрипты
  Инструменты
  PHP в примерах
  Новости портала
 Главная   »  Сборник статей
 
 

.htaccess - великий защитник

Автор: Webdocs.ru

Как известно, самым популярным на сей день веб-сервером является Apache в различных версиях (а вовсе не IIS, как утверждает Microsoft). Его ставят на свои сервера большинство хостителей, услуга же "NT-хостинга" (т.е. как раз IIS) стоит обычно дороже. Оно и понятно - и неудобный он для привыкших к Linux админов, и глючный (почему-то червяки плодятся именно под IIS), и поэтому дорогой.

Настраивать Apache можно по-разному. Кому-то хочется, чтобы на его страницы можно было переходить только по ссылкам с титульной, кому-то хочется, чтобы при отсутствии в папке индексного файла выводилось содержимое папки, кому-то хочется сам индексный файл переименовать в yakrutoiadmin.html... Нет никаких проблем, если вы один на своем личном сервере - редактируете настройки Apache как вам хочется, и все пучком. А если вы пользуетесь чужим хостингом?

Представьте себе ситуацию, когда доблестный админ компании MegaHoster.Network мужественно рожает новые настройки по каждой новой заявке, которая противоречит предыдущей. Что получится? Правильно, ничего работать ни у кого не будет. А теперь представьте, что настройки у всех одинаковые, т.е. такие, какие нужны большинству (которое, как это обычно бывает, вовсе даже не большинство, а просто стадо). В обоих случаях нормальному человеку делать будет нечего, как клепать уродские сайты.

На помощь человечеству приходит .htaccess - защитник всего живого на планете! С помощью этого чудесного файла можно изменять настройки Apache применительно к конкретным папкам конкретного пользователя. На самом деле далеко не всегда этот файл так называется, и работать он будет тоже далеко не всегда. Все опять зависит от настроек апача.

В файле настройки Apache есть несколько замечательных директив, а именно AccessFileName и AllowOverride. Первая задает имя файла настройки (по умолчанию .htaccess), вторая разрешает/запрещает его использование в папке. Чтобы работали настройки .htaccess, обе директивы должны быть настроены соответствующим образом. Только убедившись в том, что это так, можно начинать создавать собственный вариант защитника всего живого. Кстати, большинство бесплатных хостингов, хотя и держат у себя Apache, использование .htaccess не разрешают.

В первую очередь убедитесь, что ваш сервер использование .htaccess разрешает. Для этого можно создать файл .htaccess (он должен лежать в настраиваемой папке, т.е. в корне), состоящий из одной только строки:

ErrorDocument 404 /missing.html 

В missing.html запишите что-нибудь типа

<html><head> <title>Дурак косой</title> 
  </head><body> Вы пытаетесь попасть на несуществующую страницу. 
  </body> </html> 

Теперь попробуйте набрать что-то типа http://вашадрес.дм/dfdfdfdfd. Если вас обозвали косым дураком, значит .htaccess у вас работает, а заголовок врет :). Кстати, вот и первое семейство директив. Вы можете настроить реакцию сервера на любую ошибку, используя конструкцию

ErrorDocument номер ошибки /имяфайла.html 

Напоминаю, что номера ошибок расшифровываются так:

401 - Требуется авторизация (Authorization Required)
403 - Доступ запрещен (Forbidden)
404 - Страница не найдена (Not Found)
500 - Ошибка в скрипте (Internal Server Error) 

Еще одна важная директива позволяет настроить тот самый многострадальный индексный файл. Например, можно изменить index.shtml на privet.php:

DirectoryIndex privet.php 

Следующие директивы указывают, в какую кодировку Apache должен перекодировать файлы, и в какой кодировке вы их на сервер закачиваете. Напоминаю, что кодировка может быть еще, например, koi8-r.

CharsetDefault windows-1251 CharsetSourceEnc windows-1251

Еще обычно получается плохо, когда пользователь может посмотреть список файлов в папке, если там нет индексного файла. Чтобы избежать этого эффекта, необходимо добавить в .htaccess строчку

Options -Indexes

Или, например, злобный хоститель заботится о загрузке процессора своего сервера, и заставляет делать файлам с SSI-директивами расширение shtml... Изменить это легко и просто, добавлением в .htaccess всего одной только строчки:

AddHandler server-parsed .shtml .shtm .htm .html

Теперь, как нетрудно догадаться, все перечисленные расширения будут знаменовать собой файл, содержащий SSI включения. А вот чтобы использовать в .html файлах PHP включения, придется сделать немного хитрее, так как придется учитывать то, что SSI и PHP в одном файле использовать нельзя. Надо писать так:

RemoveHandler .html .htm AddType application/x-httpd-php .php .htm .html .phtml

Еще может возникнуть проблема, заключающаяся в том, что закачиваемые на сервер скриптом файлы получаются в неправильной кодировке. Можно попробовать решить ее так:

<Location /path/to/upload.cgi>
CharsetDisable On
</Location> 

Более подробная информация о директивах .htaccess уже не относится к разделу FAQ-документов, и может обсуждаться в форуме. Остается добавить, что крайне сложно уломать Notepad, в котором и редактируются файлы, сохранить файл без имени, да еще и с таким нестандартным расширением, как .htaccess. Необходимо сохранить его с типом "Все файлы/All files" и тшательно проследить, что умный Notepad не исправил нашу "ошибку".

 
 » Обсудить эту статью на форуме

 
 Сборник статей 
 Содержание раздела 
Есть еще вопросы или что-то непонятно - добро пожаловать на наш  форум портала PHP.SU 
 

 
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS