Ответы на Вопросы

Ответы на Вопросы
Навигация: Главная Страница | Просмотреть Все | Вернуться Назад

Слово:  Категория:  Где Ищем:

1. Веб-сервер Apache (.htaccess, .htpasswd)
2. FAQ по файлу .htaccess (общий)
3. Как на хостинге включить globals ?
4. Как сделать, чтобы мои Ява файлы .jar и .jad корректно открывались с сервера, а не как текстовые файлы ?
5. Скрипт загружает файлы размером только 2Мб, как увеличить размер загружаемого файла?
6. Как сделать, чтобы .cgi скрипты запускались не только из папки /cgi-bin?

В: Веб-сервер Apache (.htaccess, .htpasswd)
О: Веб-сервер Apache (.htaccess, .htpasswd)

Что такое web-сервер?
Когда Вы хотите открыть в своем браузере какой-либо сайт, Вы набираете в адресной строке его адрес. Браузер обращается к серверу и, образно говоря, говорит ему: "Выдай-ка мне вот это сайт!". Web-сервер - это та программа, которая этот запрос принимает и выполняет, отправляя Вам запрошенный сайт.
Исторически сложилось так, что самым популярным web-сервером в интернете стал web-сервер Apache. Существует много различных версий этого сервера, переделанных под разные задачи. Мы используем Russian Apache, т.е. Apache, умеющий работать с русскими кодировками.

Как можно управлять Apache?
Управление Apache осуществляется путем добавления в файл .htaccess специальных директив. По сути дела, инструкций, говорящих web-серверу как поступать в той или иной ситуации. Файл .htaccess - это обычный текстовый файл, который можно либо создать непосредственно на сервере, используя, к примеру, текстовый редактор vi, либо создать у себя на компьютере и закачать на сервер по протоколу FTP.
Директивы файла .htaccess действуют для каталога, в котором этот файл лежит, и его подкаталогов, если в них нет своих файлов .htaccess. Директивы в файле .htaccess, лежащем в подкаталоге, замещают (переопределяют) собой аналогичные директивы в вышележащем .htaccess. Т.е. директивы, которые были определены в каталоге и не были переопределены в подкаталоге, продолжают действовать на все нижележащие подкаталоги.

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

Какие директивы можно использовать?
На нашем хостинге можно использовать все директивы Apache, применимые к файлу .htaccess. Примеры использования .htaccess приведены в разделе "FAQ по файлу .htaccess"

Как можно поставить пароль на директорию?
Для того, чтобы при обращении к защищенной директории web-сервер Apache спрашивал пароль, нужно в эту директорию поместить файл .htaccess, в котором прописать следующие директивы:
AuthName ProtectedZone
Вместо ProtectedZone можно написать все, что угодно. Это название защищенной области, оно будет показываться в браузере при запросе пароля, являясь по сути дела подсказкой пользователю. Если Вы хотите использовать русские буквы или же более одного слова, необходимо использовать кавычки.
Пример: AuthName "Введите пароль для входа"

AuthType Basic
Это метод шифрования пароля. Практически всегда используется именно данный вид шифрования.
Пример: AuthType Basic

AuthUserFile /полный_путь_к_файлу/.htpasswd
Это путь к файлу, в котором будут храниться логины и пароли. Он может иметь практически любое имя и располагаться в любом каталоге, главное, чтобы web-сервер мог его прочитать, что требует установки соответствующих прав доступа к этому файлу (на нашем сервере - 644). Однако, традиционно такие файлы называют .htpasswd.
Пример: AuthUserFile /home/test/www/site1/public_html/.htpasswd

require valid-user
Эта строка говорит о том, что доступ в защищенную директорию будет разрешен всем пользователям, чьи логины и пароли есть в файле .htpasswd. Если нужно дать доступ конкретным пользователям, то тогда указывается require user логины_пользователей_через_пробел.
Пример: require user vasya kolya petya
Пример: require valid-user

Как редактировать файл .htpasswd?
Файл паролей .htpasswd - это обычный текстовой файл. Каждый пользователь описан в нем одной строкой вида логин:шифрованый_пароль. Для шифрования паролей используется специальная программа htpasswd. Обратите внимание, в файл нельзя просто вручную записать пароль, пароль обязательно должен быть зашифрован программой htpasswd.
Если файл .htpasswd еще не существует, программа htpasswd должна быть запущена с ключом -c:

htpasswd -c /полный_путь_к_файлу/.htpasswd логин_пользователя
Пример: htpasswd -c /home/test/www/site1/public_html/.htpasswd vasya

При этом программа htpasswd создаст файл .htpasswd, запросит пароль для пользователя и создаст запись о пользователе с указанными логином и паролем в этом файле. При добавлении следующих пользователей и изменении паролей уже существующих программа вызывается подобным же образом, но без указания ключа -c. Для удаления пользователя достаточно открыть файл .htpasswd обычным текстовым редактором и удалить строчку с его логином и паролем.

Как создать файл .htpasswd если тарифный план не предусматривает доступа по SSH?
Если тарифный план не предусматривает доступ по SSH (доступ к командной строке сервера), то для создания файла .htpasswd можно воспользоваться специальной windows-программой. Для этого, нужно скачать дистрибутив, распаковать его и запустить программу passwd.exe. После этого в окне по закладке "Single Password" с помощью кнопки "Browse" задать имя файла (обычно это .htpasswd), а в верхней части окна ввести имя пользователя, пароль и нажать кнопку "Encode and Save". После этого полученный файл необходимо закачать по протоколу FTP в нужную директорию на нашем сервере.

Где я могу получить дополнительную информацию?
Для получения дополнительной информации о настройках файла .htaccess и о web-сервере Apache в целом Вы можете воспользоваться официальным сайтом данного программного продукта - Apache.org. На сайте дана подробная справочная информация и приведены примеры работы с данным web-сервером.
К: .htaccess | 16-08-2009 15:13:04

В: FAQ по файлу .htaccess (общий)
О: В данном разделе мы привели несколько примеров директив, которые Вы можете использовать в файле .htaccess для более полной и точной настройки веб-сервера Apache.

DirectoryIndex index.php
Устанавливает файл для директории, который грузится по умолчанию. Возможно указание нескольких имен через пробел, тогда сервер будет просматривать список слева направо и выдаст по умолчанию первый существующий файл. В случае, если ни одного из файлов, заданных директивой DirectoryIndex, не найдено в текущем каталоге, то web-сервер выдает 403-ю ошибку.
Пример: DirectoryIndex index.php index.shtml index.html

ErrorDocument 404 /index.html
Файл, который сервер выдает в случае, если произошла ошибка с указанным номером. Путь к файлу указывается от корневой директории сайта. Номера некоторых ошибок: 404 - файл не найден; 500 - ошибка скрипта; 403 - доступ запрещен.

CharsetRecodeMultipartForms Off
Директива выключает перекодировку передаваемых на сервер данных. Используется в тех случаях, когда скрипт производит загрузку на сервер каких-либо файлов, например картинок. Важно чтобы файл .htaccess лежал в той же директории, что и скрипт с формой закачки, либо находился выше его уровнем.

Устанавливаем страницу, которая будет открываться в браузере, если не указана конкретная, а только путь к директории.
Пропишем в файле .htaccess:

DirectoryIndex primer.php

При обращении к директории, в которой лежит .htaccess, будет грузиться файл primer.php5

Запрет доступа с помощью .htaccess При желании можем дать запрет на все файлы:
deny from all

Никто ничего не увидит. обращаем внимание на то, что скриптам, работающим на стороне сервера файлы все равно будут доступны.

Разрешить доступ посетителю только с определенного ip:
Order Allow,Deny
deny from all
allow from 192.168.8.1

Всем кроме посетителя с IP 192.168.8.1 доступ запрещен.

Также можно указать вместо айпи доменное имя

Order Deny,Allow
Deny from all
Allow from .test.com

Только для .test.com будет доступен ваш сайт

Перенаправляем посетителей на другой URL (редирект). В .htaccess пишем:
Redirect / http://www.test.com

Все посетители будут перенаправлены на http://www.test.com

Перенаправление посетителей при запросе определенных страниц:
Для любителей поиска скриптов с уязвимостями и дыр в защите
Добавляем в .htaccess:

redirect /scripts http://www.microsoft.com
redirect /_vti_bin http://www.microsoft.com
redirect /MSADC http://www.microsoft.com
redirect /_mem_bin http://www.microsoft.com
redirect /msadc http://www.microsoft.com
RedirectMatch (.*)cmd.exe$ http://www.microsoft.com$1

Любой запрос с адресом /_vti_bin или /scripts будет автоматически перенаправляться на сайт Microsoft.

Редирект посетителей в зависимости от реффера (ссылающейся страницы):
RewriteCond %{HTTP_REFERER} http://www.xakers.ru
RewriteRule ^/hack.html$ /von.html [L]

В данном случае все с форума /www.xakers.ru вместо файла hack.html получат файлик von.html

Ставим запрет на отображение содержимого директории при отсутствии индексного файла:
Options -Indexes

У нас на серверах установлено по умолчанию. Чтобы, наоборот, разрешить веб-серверу отображать содержимое директории при отсутствии индексного файла, надо добавить инструкцию:

Options +Indexes
Поставить пароль на директорию:
Доступ к директории извне контролируется файлами .htaccess и .htpasswd. Более подробно читайте в "Веб-сервер Apache (.htaccess, .htpasswd)".

Также полезные материалы:

http://htaccess.net.ru/
http://www.iho.ru/faq/manual/htaccess.html
К: .htaccess | 16-08-2009 15:13:04

В: Как на хостинге включить globals ?
О: В файле .htaccess (в папке public_html) пропишите строку:
php_value register_globals on
К: .htaccess | 16-08-2009 15:13:04

В: Как сделать, чтобы мои Ява файлы .jar и .jad корректно открывались с сервера, а не как текстовые файлы ?
О: В файл .htaccess пропишите 2 строки:
AddType text/vnd.sun.j2me.app-descriptor jad
AddType application/java-archive jar
К: .htaccess | 16-08-2009 15:13:04

В: Скрипт загружает файлы размером только 2Мб, как увеличить размер загружаемого файла?
О: Вы можете сделать это дописав строку php_value upload_max_filesize 15M в файл .htaccess в public_html. 15мб это максимально разрешенный размер.
Также иногда для форумов и прочего требуется увеличить параметр post. Делается это аналогично через .htaccess, пропишите отдельной строкой php_value post_max_size 15M
К: .htaccess | 23-11-2009 15:16:59

В: Как сделать, чтобы .cgi скрипты запускались не только из папки /cgi-bin?
О: Пропишите в корневой .htaccess следующие записи:

AddHandler cgi-script .cgi
Options +ExecCGI
К: .htaccess | 24-11-2013 23:55:06