Anshlag - калужское объединение друзей - туристов. Отдых, путешествия, туризм.

Anshlag - калужское объединение друзей - туристов. Отдых и путешествия по Карелии, туризм, водные походы. Отчеты о походах, рассказы туристов, новости туризма. Форум, гостевая, походные фотографии.



  
 Среда, 21 августа 2019, 10:00:26 

Редактируем .htaccess
Настройки сервера Apache для использования файла .htaccess

Быстрый переход ...

» Для чего служит .ht...
» Синтаксис .htaccess
» Настройки сервера A...

[ оглавление ]
Настройки сервера Apache для использования файла .htaccess
Для использования файла .htaccess для сервера Apache необходимо внести Вот обязательной синтаксис, несоблюдение которого приводит к ошибкам сервера:
- пути к файлам (директориям) указываются от корня сервера. Пример: /opt/home/www.astanafoto.com/htdocs/config/.htpasswords
- домены с указанием протокола
Пример: Redirect / http://www.site.ru

Файл имеет название именно "точка" htaccess
Должен быть записан в UNIX-формате. Для оболочки FAR, достигается F4 (редактирование файла), Shift+F2 (выбрать "сохранить как UNIX-текст").
________________________________________
[ оглавление ]

Как запретить веб-посетителям читать файлы в директории?
Запрет на все файлы:
deny from all
Где all обозначает "все".
________________________________________

Разрешить доступ только с определенного ip:
order allow deny
deny from all
allow from <ваш ip>

В данном случае, <ваш ip> обозначает конкретный адрес.
Например:
order allow deny
deny from all
allow from 192.126.12.199
________________________________________

Запретить доступ для определенного ip:
order allow deny
deny from all
deny from <ваш ip>

Использование <ваш ip> аналогично для примера выше.
________________________________________

Запрет доступа на группу файлов по маске:

order allow,deny
deny from all


Определяет доступ к файлу по его расширению.
Например запрет на доступ к файлам с расширениям "inc" для веб-посетителей:

order allow,deny
deny from all


В данном примере сам веб-сервер Апач может обращаться к файлам с таким расширениям, в отличие от посетителей сайта.
________________________________________

Запрет доступа на конкретный файл:
Можно поставить запрет на конкретный файл по его названию и расширению.

order allow,deny
deny from all


В данном примере стоит запрет на обращения к файлу config.inc.php посетителями сайта, сам же сервер может использовать этот файл.
________________________________________

Пароль на директорию:
AuthName "Private zone"
AuthType Basic
AuthUserFile /pub/home/твой_логин/.htpasswd
require valid-user


Значение AuthName будет выводиться для посетителя и может использоваться для пояснения запроса авторизации. Значение AuthUserFile указывает на место, где хранится файл с паролями для доступа к данной директории. Этот файл создается специальной утилитой htpasswd.exe.

Например в директории, которую защищаем паролем создаем такой .htaccess:
AuthName "For Registered Users Only"
AuthType Basic
AuthUserFile /pub/site.ru/.htpasswd
require valid-user


В этом примере, посетитель при запросе директории, будет читать фразу "For Registered Users Only", файл с паролями для доступа должен лежать в директории /pub/site.ru/ и называться .htapasswd . Директория указывается от корня сервера, если вы неправильно зададите директорию, то Апач не сможет прочитать файл .htpasswd и никто не получит доступа к данной директории.
________________________________________

Пароль только на 1 файл:
Аналогично паролированию директории полностью, можно ставить пароль только на 1 файл.
Пример установки пароля на файл private.zip:

AuthName "Users zone"
AuthType Basic
AuthUserFile /pub/home/твой_логин/.htpasswd

________________________________________

Пароль на группу файлов:
Аналогично, используя , можно ставить пароли по маске файлов.
Пример установки пароля на доступ ко всем файла с расширением "sql":

AuthName "Users zone"
AuthType Basic
AuthUserFile /pub/home/твой_логин/.htpasswd

________________________________________
[ оглавление ]

Проверка прав доступа
Задача: есть каталог a1 и в нем два вложенных каталога a2, a3, введено 2 уровня пользователей. 1 группа имеет доступ только к a1 и a2, 2-я ко всем трем каталогам. Необходимо проводить аутентификацию только 1 раз - при доступе к a1, но при этом соблюдать права на доступ к а2 и а3.
Ник и пароль запрашиваются только при входе на а1 - если у юзвера есть доступ на а2 пароль уже не запрашивается. Если на а3 доступа нет, вылетит табличка "введите пароль".

www.site.ru/a1
www.site.ru/a1/а2
www.site.ru/a1/a3
a1 - общий и вместе с тем закрытый. а2 и а3 только для отдельных личностей.
________________________________________

файл .htaccess для каталога а1:
AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/login/htdocs/clousearea/.htpasswd"

require valid-user


файл .htaccess для каталога а2:
AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/login/htdocs/clousearea/.htpasswd"

require user юзвер1 юзвер2 юзвер3


файл .htaccess для каталога а3:
AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/абв/htdocs/clousearea/.htpasswd"

require user юзвер1 юзвер4 юзвер5

________________________________________
[ оглавление ]

Как сделать перенаправление (редирект) посетителя?
Редирект на другой url:
Что бы сделать перенаправления посетителя на сайт http://site.ru в .htaccess пишем:
Redirect / http://www.site.ru
________________________________________

Показ разных страниц, в зависимости от IP адреса посетителя:
SetEnvIf REMOTE_ADDR <нужный ip адрес> REDIR="redir"
RewriteCond %{REDIR} redir
RewriteRule ^/$ /another_page.html

Например, перенаправление посетителей с ip адресом 192.12.131.1 на страницу about_my_sity.html:
SetEnvIf REMOTE_ADDR 192.12.131.1 REDIR="redir"
RewriteCond %{REDIR} redir
RewriteRule ^/$ /about_my_sity.html
________________________________________

Перенаправление посетителя при запросе определенных страниц:
Это уже для всех сетевых вирусов и сканеров. Теперь любой запрос с адресом /_vti_bin будет автоматически перенаправляться на Microsoft:

redirect /_vti_bin http://www.microsoft.com
redirect /scripts http://www.microsoft.com
redirect /MSADC http://www.microsoft.com
redirect /c http://www.microsoft.com
redirect /d 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
________________________________________
[ оглавление ]

Как сделать стартовой другую страницу?
Что бы поменять страницу, которая будет показываться при обращении к директории, пишем:
DirectoryIndex <нужная страница>

Можно указывать несколько страниц.

DirectoryIndex index.shtml index.php index.php3 index.html index.htm
________________________________________
[ оглавление ]

Как заставить Апач обрабатывать SSI директивы?
SSI позволяют "собирать" страницу из кусочков. В одном кусочке у вас код меню, в другом код верхней части страницы, в третьем - нижней. А посетитель видет обычную страницу, которая состоит из того кода, который входит в ваши кусочки.
Необходимы обязательные установки в httpd.conf:
В блоке, начинающемся с и заканчивающийся в строку Options Indexes добавьте Includes.

После, в файле .htaccess пишем:

AddHandler server-parsed .shtml .shtm .html .htm
________________________________________
[ оглавление ]

Как заставить Апач выполнять php код в файлах с расширением отличным от php?
Иногда бывает полезно "обмануть" посетителя, выдавая ему свои php-скрипты или иные файлы, как html файлы. Реально используется для индексации поисковой системой Rambler php-скриптов.
Некоторые делаю мелкие фишки, вроде того, что дают фалам расширения совпадающие с какими-либо "знаковыми" именами. Например, на сайте www.osg.ru используются файлы с расширением osg: index.osg, script.osg и т.п.
Такие возможности достигаются простым пересопоставлением обработчика файлов:

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

Заметьте, так как файлам с расширением .html и .htm сопоставлено, что это файлы с гипертекстовой разметкой, то мы первой строкой убираем это сопоставление и добавляем обработку таких файлов php интерпретатором.

Предположим, вы сменили платформу хостинга (NT to Unix), а у ваших посетителей остались точные закладки на ваши файлы. Тогда прописываем обработку .asp файлов, как php скриптов и уже в скрипте решаем, что делать с посетителем:

AddType application/x-httpd-php .php .asp

В отличие от примера выше, мы не пишем RemoveHandler ... , так как на Unix системах обычно с расширением .asp не сопоставлена ни одна программа.
При большой посещаемости сервера такие ухишрения могут вызвать тормоза. Спрашивайте у админа.
________________________________________
[ оглавление ]

Как самому обрабатывать ошибки Апача?
Наиболее интересные и полезные ошибки Апача это: 401, 403-404, 500.
401 - Требуется авторизация (Authorization Required).
403 - пользователь не прошел аутентификацию, запрет на доступ (Forbided).
404 - запрашиваемый документ (файл, директория) не найден (Not Found).
500 - внутренняя ошибка сервера - к примеру, ошибка в синтаксисе файла .htaccess - (Internal Server Error).
Для того, что бы пользователю при этих ошибках были показаны ваши собственные сообщения об ошибках, в .htaccess пишем:

ErrorDocument 401 /errors/401.html
ErrorDocument 403 /errors/403.html
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html

При этом при возникновении 401 ошибки пользователю загрузится файл errors/401.html, и так далее, соответственно.
________________________________________

Удобно делать собственный обработчик на некоторые ошибки. В .htaccess пишем:
ErrorDocument 403 /errors/error.php?403
ErrorDocument 404 /errors/error.php?404
ErrorDocument 500 /errors/error.php?500

В error.php через $HTTP_SERVER_VARS['REQUEST_URI'] определяем какой документ вызвал ошибку и дальше обрабатываем. Если в .htaccess на ErrorDocument стоит указание файла с полным путем (http://site.ru/error.php), то $HTTP_SERVER_VARS['REQUEST_URI'] будет содержать этот файл, а не вызвавший ошибку.
В Internet Explorer 5.0 неправильно обрабатывается файл, вызывающийся при ошибке, если его размер меньше 1 килобайта. Будет вызвана стандартная страница IE 404.
________________________________________
[ оглавление ]

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

Options -Indexes
________________________________________
[ оглавление ]

Можно ли указать кодировку на все файлы, в которой по умолчанию получает документы браузер?
На заре интернета и зарождения браузеров, часто была ситуация, что браузер не мог автоматически определить, в какой из русских кодировок написан документ и в браузер выдавалась какая-то каша. Для избежания этого указываем, что все отдаваемые страницы будут иметь кодировку windows-1251:

AddDefaultCharset windows-1251
________________________________________
[ оглавление ]

Можно ли указать кодировку на загружаемые файлы?
При загрузке файла на сервер (не важно кем - админом или посетителем), возможна перекодировка его - указываем, что все получаемые файлы будут иметь кодировку windows-1251:

CharsetSourceEnc windows-1251
________________________________________
[ оглавление ]

Я закачиваю на сайт файл в одной кодировке, а Apache их перекодирует, как избавиться?
Акутально для "Русского Apache" [ http://apache.leha.ru ]
Вам необходимо отменить перекодировку сервером файлов. К примеру, отменяем перекодировку файла scriptName.php


CharsetDisable On

________________________________________
[ оглавление ]

Как применять различные кодировки для различных типов файлов?
Предположим, что вам необходимо установить кодировку windows-1251 на все файлы с расширением .htm и кодировку koi-8r на все файлы с расширением .htm:

AddType "application/x-httpd-php3; charset=windows-1251" .html
AddType "application/x-httpd-php3; charset=koi-8r" .htm
________________________________________
[ оглавление ]

Создал файл .htaccess, но сервер выдает 500 ошибку - Internal Erorr
Ошибка синтаксиса или файл записан не в том формате.
Смотрите вопрос #2.
________________________________________
[ оглавление ]

Благодарности
Использованы материалы:
http://hostforum.ru
http://phpdev.com
http://webhowto.ru


Прокомментировать
Хотите оставить свои комментарии? Зарегистрируйтесь на нашем сайте!

 
(c) Anshlag 2002 - 2008