К основному контенту

.htaccess2

Синтаксис .htaccess

- пути указываются от корня сервера. Пример: /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:
В данном случае, <ваш ip> обозначает конкретный адрес.
Например:
order allow deny
deny from all
allow from 192.126.12.199


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


Запрет на группу файлов по маске:
<Files '\.(incsql...другие расширения...)$'>
order allow,deny
deny from all
</Files>


Определяет доступ к файлу по его расширению.
Например запрет на доступ к файлам с расширениям 'inc' для веб-посетителей:
<Files '\.(inc)$'>
order allow,deny
deny from all
</Files>

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

Запрет на конкретный файл:
Можно поставить запрет на конкретный файл по его названию и расширению.
<Files config.inc.php>
order allow,deny
deny from all
</Files>


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

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


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

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


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




Пароль только на 1 файл:
Аналогично паролированию директории полностью, можно ставить пароль только на 1 файл.
Пример установки пароля на файл private.zip:
<Files private.zip>
AuthName 'Users zone'
AuthType Basic
AuthUserFile /pub/home/твой_логин/.htpasswd
</Files>




Пароль на группу файлов:
Аналогично, используя <Files '\.(incsql...другие расширения...)$'>, можно ставить пароли по маске файлов.
Пример установки пароля на доступ ко всем файла с расширением 'sql':
<Files '\.(sql)$'>
AuthName 'Users zone'
AuthType Basic
AuthUserFile /pub/home/твой_логин/.htpasswd
</Files>



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

Проверка прав доступа

Задача: есть каталог 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'
<Files *.*>
require valid-user
</Files>


файл .htaccess для каталога а2:
AuthName 'Input password'
AuthType Basic
AuthUserFile '/pub/home/login/htdocs/clousearea/.htpasswd'
<Files *.*>
require user юзвер1 юзвер2 юзвер3
</Files *.*>


файл .htaccess для каталога а3:
AuthName 'Input password'
AuthType Basic
AuthUserFile '/pub/home/абв/htdocs/clousearea/.htpasswd'
<Files *.*>
require user юзвер1 юзвер4 юзвер5
</Files *.*>



Как сделать перенаправление (редирект) посетителя?

Редирект на другой 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:
В блоке, начинающемся с <Directory/> и заканчивающийся </Directory> в строку Options Indexes добавьте Includes.

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

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



Как заставить Апач выполнять в html документах 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


При большой посещаемости сервера может вызвать тормоза. Спрашивайте у админа.



Как самому обрабатывать ошибки Апача?

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

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


При этом при возникновении 404 ошибки пользователю загрузится файл errors/403.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



Создал файл .htaccess, но сервер выдает 500 ошибку - Internal Erorr

Ошибка синтаксиса или файл записан не в том формате.
Смотрите. вопрос 2


Благодарности

Использованы материалы:


master.ru

Комментарии

Популярные сообщения из этого блога

Русская кодировка ASCII, ANSI и UTF-8, windows-1251 (CR, LF, CR LF)

Что нужно знать: Encoding – это кодировка для вывода данных (UTF-8, windows-1251) Line Endings – формат строк (CR, LF, CR LF) Byte Order Marker (BOM) – системная область в начале файла. LF – используется в UNIX вместе с кодировками UTF-8 или windows-1251 CR – используется в MAC системах. на сервере лучше использовать кодировку ANSI это и есть кириллица (Windows), символ занимает 1 байт (оптимизированный ASCII) UTF-8 может содержать заголовок BOM который содержит системную информацию, символ занимает 2 байта wysiwyg редакторы добавляют метатег в html страницы с кодировкой кирилицы. это не очень хорошо, если сервер настроен на UTF-8, в этой кодировке корректно работают некоторые библиотеки приложения и прочие

Как узнать время включения/выключения компьютера.

Способов масса, одни из них: в журнале событий windows  выбрать eventlog, теперь в таблице легко найти события с кодами: 6005 - событие остановки eventlog - компьютер выключился 6006 - событие запуска eventlog - компьютер включился обычно эта служба запускается и остонавли во время включения/выключения компьютера, и пишет в журнале событий системы код события и время.

Сделать свой Трекер

Что надо для того что-бы установить и поддерживать трекер на базе TBdev в рабочем состоянии:    1. Веб-сервер с поддержкой PHP (например Apache или LightTPD).    2. PHP версии 5.1.1 или выше.    3. Сервер базы данных mySQL версии 4.1 или выше, лучше 5.0.    4. Любая оболочка для работы с СУБД mySQL (например phpMyAdmin 2.9.2 или EMS SQL Manager 2007 Pro for mySQL. Так-же важными компонентами являются:    1. Прямые руки v1.0    2. Базовое знание английского языка.    3. Понимание принципа "Понимание ошибки - половина ее решения". Рабочее окружение в котором трекер разрабатывается (поможет создать похожее на вашем хостинге и улучшить работу трекера) и работает лучше всего:    1. Веб-сервер LightTPD 1.4.16 скомпилированный под ОС Windows.    2. PHP 5.2.1 скомпилированный в режиме Fast-CGI.    3. Сервер базы данных mySQL версии 4.1.16.