Статьи Использование .htaccess

Discussion in 'Статьи' started by foreva, 7 Feb 2005.

  1. foreva

    foreva HACKFORUM.RU

    Joined:
    5 Feb 2005
    Messages:
    48
    Likes Received:
    10
    Reputations:
    -2
    Использование .htaccess
    Взято с undergroundteam.org

    Назначение файла .htaccess
    .htaccess - это файл, в котором можно задавать настройки веб-сервера для каталога, в котором этот файл лежит и его подкаталогов (если .htaccess есть в корневом каталоге сайта, его действие будет распространяться на весь сайт, однако, если в каком-нибудь каталоге лежит другой .htaccess, то он будет «главным» в этом каталоге и его подкаталогах - если те, в свою очередь, не содержат своих .htaccess). Настройки, не упомянутые в .htaccess, будут определяться исходя из настроек сервера "по умолчанию" и настроек, указанных в вышележащих .htaccess. Пожалуй, наиболее часто .htaccess используется для ограничения доступа к определенным каталогам и файлам сайта.
    Краткий перечень директив файла .htaccess
    DirectoryIndex index.php3
    Устанавливает файл для директории, который грузится по умолчанию. Возможно указание нескольких имен через пробел (пример: DirectoryIndex index.php3 index.htm index.phtml), тогда сервер будет просматривать список слева направо и выдаст по умолчанию первый существующий файл.

    CharsetDefault windows-1251
    Кодировка, которую сервер выдает броузеру по умолчанию.

    CharsetSourceEnc windows-1251
    Кодировка, в которой Вы должны закачивать файлы на сервер.
    ErrorDocument 404 /index.php3
    Файл, который выдает сервер в случае, если произошла ошибка с указанным номером. 404-я ошибка возникает каждый раз, когда запрошенная страница не найдена на сервере.

    Об использовании .htaccess для ограничения доступа к каталогам сайта написано здесь.
    Как закрыть директорию паролем ?
    Вы можете воспользоваться панелью управления вашего сайта.

    Так же, Вы можете воспользоваться файлом .htaccess - его следует положить в защищаемую директорию с вот таким содержимым: # Access file
    order allow,deny
    allow from all
    require valid-user
    Authname DirectoryName
    Authtype Basic
    AuthUserFile /home/./.passwd
    Этот файл лучше положить в директорию недоступную через WWW. Узнать полный путь доступа к этому файлу лучше через telnet, зайдите в директорию с файлом .passwd и наберите команду pwd, и Вы увидите полное имя директории.
    Создать файл с паролями Вы можете на своем компьютере с помощью программы htpasswd, которую нужно запускать через shell-доступ.
    Наберите команду:

    htpasswd [-c] .passwd username

    Параметр -c нужен только в том случае, если Вы создаете новый файл с паролями. Если Вы хотите добавить нового пользователя к уже существующему файлу, то указывать -с не нужно. username - имя добавляемого пользователя
    После того, как Вы нажмете ENTER, Вам нужно ввести (два раза во избежание ошибки) пароль для нового пользователя. Это все!
    Так же, файл с паролями можно формировать и из скрипта, например на Perl:
    open(F, ">>.passwd") || die "
    Can`t append file .passwd";
    print F "$username:". crypt($password, 'ms') ."\n"; close(F);
    system "chmod 766 .htpasswd";

    в переменных $username и $password имя и пароль нового пользователя. Вместо 'ms' можно подставлять любые две буквы. Переадресация
    Весьма полезное применение переадресации - организация download обновленных версий вашего продукта.

    Когда выкладывается новая версия продукта, обычно меняется какой-то кусок в имени файла. Это очень удобно, так как это позволяет избежать путаницы в версиях. Однако когда Вы выпускаете обновленную версию, то возникает проблема. Вам придется хранить и старые версии, так как ходить к Вам будут за Вашим продуктом и по старым ссылкам.
    Избежать этого довольно просто использовав команду переадресации www-сервера Apache.
    Предположим что Ваша последняя версия MySoft12.exe, а предыдущие были MySoft10.exe и MySoft11.exe
    Создайте файл .htaccess и напишите в нем следующие строки:

    Redirect /MySoft11.exe http://www.your.com/MySoft12.exe

    Где:

    - Redirect - собственно команда переадресации;
    - /MySoft11.exe или /MySoft10.exe старые имена файлов;

    Правило формирования этого параметра такое: к имени Вашего сервера http://www.your.com будет добавлено то, что Вы напишите.
    Поэтому не забывайте про слэш в начале пути к файлу в этом параметре.
    - http://www.your.com/MySoft12.exe - полный интернет-адрес файла (!), который будет загружаться вместо /MySoft11.exe или /MySoft10.exe;
    Обратите внимание, что Вы можете написать здесь вообще любую ссылку в Интернет. (можно, также, использовать и RedirectMatch - это то же, что и просто Redirect, но позволяет использовать * и прочие выражения, например:


    RedirectMatch (.*)\.gif$ http://www.anotherserver.com$1.jpg )
    Как это будет работать.
    Вот вырезка из лога запроса на подобную ссылку: (использована программа ReGet http://www.reget.com/default.htm )

    > OUT GET /MySoft10.exe HTTP/1.0
    > IN HTTP/1.1 302 Found
    > IN Location: http://www.your.com/MySoft12.exe
    > IN Connection: close
    > IN Content-Type: text/html
    > INF Запрос перенаправлен на http://www.your.com/MySoft12.exe
    > INF Начинаем закачку http://www.your.com/MySoft12.exe. Попытка N 1
    > OUT GET /MySoft12.exe HTTP/1.0
    То есть по какой бы ссылке не качал будущий пользователь Вашу программу, он все равно загрузит самую последнюю.
    Настройка сообщений об ошибках
    Когда пользователь запрашивает какую-то страницу, которой нет на Вашем сайте, например неверно набран URL, то появится стандартное сообщение об ошибке: "File not found".
    Скорее всего, после этого пользователь закроет окно браузера и Вы его (клиента) потеряете. Можно ли вместо стандартного сообщения выдать какую-то свою страницу? Да. Для этого, опять же, надо прописать в файл .htaccess (и положить его в папку web) одну строчку:

    ErrorDocument 404 http://www.mydomain.com/404.html

    Все. Осталось создать страницу 404.html, где показать, например, карту Вашего сайта.

    (!) Для кода/ошибки 401 "Unauthorized" нельзя использовать полный адрес URL в качестве параметра для директивы ErrorDocument.
    Как сделать чтобы по умолчанию открывался не index.html, а index.htm?
    Нужно удалить файл index.html и положить index.htm :)
    На самом деле, достаточано положить в директорию файл .htaccess: DirectoryIndex index.htm index.html index.shtml (и т.д.)

    Действие этого файла распространяется на все вложенные папки.
    Как сделать чтобы файл с нестандартным расширением открывался как текстовый в окне браузера?
    Чтобы файл с расширением, например, .lng открывался как текстовый в окне браузера, необходимо в файл .htaccess добавить строчку:

    AddType text/plain .lng

    А если надо чтобы сохранялся на диске (как *.zip, *.exe, etc) то строчка должна выглядеть так:

    AddType application/octet-stream .lng
    Если в папке нет index.html , как сделать чтобы не показывалось ее содержимое?
    Положите туда файл .htaccess с одной строкой

    Options -Indexes

    При этом будет выдана ошибка.