800x6001024x768Auto Width
Главная
Forum
WordPress
Joomla
Drupal
Template Box
Php-Fusion
BoxedArt Template
DLE
TM
vBulletin
Scripts
Photoshop & Corel
Icons
Учебники
Шрифты
Templates
Programms
Articles
SEO
MP3
Ссылки
Контакты
Rapidshare Search
YouTube Download
Online Photoshop
Nod32 fresh keys
iPhone,iPod soft
Web Tools
Sitemap
Partners

Free Full Downloads

Auto Submitter

 

Статистика
Рейтинг@Mail.ru

Rambler's Top100
Синтаксис написания файла htaccess в примерах Печать E-mail
Автор Administrator   
18.05.2008 г.
 htaccess Многие уже сталкивались с такой вещью как системы управления контентом, с установкой различных скриптов. И наверняка, при установке некоторых систем, приходилось заглядывать в файл помощи. Что бы глянуть, что и как нужно правильно сделать. К чему я клоню, к тому что часто при данном процессе необходимо вносить какие-то изменения в файл .htaccess.


И хорошо, если в руководстве написан кусок кода, который просто нужно вставить в .htaccess. А бывает ведь такое, что просто сказано: «запретить доступ к такой то папке в файле .htaccess». И тут Вы начинаете вспоминать все нехорошие слова, которые знаете, адресуя в адрес автора руководства. Я могу Вас понять, раньше сам с такими ситуациями сталкивался, и когда пишу скрипты, стараюсь сделать максимально понятное руководство, понятное даже «домохозяйке».
Вот почему у меня появилась идея написать статью о том, как правильно писать файл .htaccess и с какими задачами Вы можете столкнуться при его написании. На этом закончим предисловие и перейдем к руководству по написанию файла .htaccess.

Пути к файлам (директориям) указываются от корня сервера на хостинге. Начинаются они с команды DirectoryIndex, далее следует полный путь к файлу (директории). Ниже приведен пример. Отмечу сразу, что буду указывать два примера – правильный и ошибочный, что бы было понятней о чем я говорю.
Правильно: DirectoryIndex /home/st1331/www/data/main.html
Ошибка: DirectoryIndex /www/news/main.html

Бывает, что необходимо указать адресацию к документам, расположенным на других сайтах. Такое действие должно выполняться с указанием протокола.
Правильно: Redirect /oldsite/ http://www.site.ru/
Ошибка: Redirect /oldsite/ www.site.ru/

Пока не забыл упомянуть, скажу, что для того что бы сделать комментарий в файле .htaccess, необходимо в начале строки (предполагается, что строка будет комментарием) поставить символ #. К тому же, в выражениях можно использовать переменные окружения, например %{REMOTE_ADDR} или %{HTTP_REFERER}.

Далее рассмотрим определение области действия директив. Сомневаюсь, что Вам придется сталкиваться с таким при установке каких-либо скриптов, но все же опустить этот момент не могу. Хотя, возможно я и ошибаюсь немного.
Директива Files. Ограничивает директив одним файлом. Синтаксис написания следующий: <Files filename> … </Files>, где filename имя файла, а вместо «…» прописываем условия. Ниже приведен пример.

<Files my_my_file.html>
Order Deny,Allow
Deny from all
Allow from 192.167.58.42
</Files>

Здесь мы запрещаем доступ всем к файлу my_file.html, кроме пользователей, который будут загружать его с IP: 192.168.58.42. Весьма полезная вещь, если Вы собираетесь работать с каким-то элементом сайта только из одного рабочего места, у которого постоянный IP-адрес. Хотя, можно закомментировать строку Allow from 192.167.58.42, а при потребности заходить через FTP и снимать комментарий со строки в тоже время не забыв указать нужный IP-адрес.

Директива FilesMatch. Данная директива может понадобится, если Вы хотите запретить доступ к определенном типу файлов какому-нибудь IP-адресу. Такое может понадобится, в случае если кто-то захочет подгружать ваши картинки себе на сайт, или использовать элементы дизайна вашего ресурса у себя. Спросите: «Зачем?». А за трафик кто по вашему будет платить? Конечно же Вы. Если по логах Вы вычислили IP-адрес, который постоянно загружает один и тот же медиа контент и только, то следует в прибегнуть к использованию данной директивы. Синтаксис ее таков: <Files regex> … </Files>, где regexp: регулярное выражение (шаблон), описывающее группу файлов. Ниже приведен пример как ее нужно использовать в файле .htaccess.

<FilesMatch “\.(gif|jpe?g|png)$”>
Order Allow,Deny
Allow from all
Allow from 192.167.58.42
</FilesMatch>

Думаю, с учетом подробного описания выше, всем понятно, что делает данный кусок кода.
Следующий тип директив – это перенаправление, или как его привычней называют редирект.

Директива Redirect. Выполняет редирект посетителя, запрашивающего документ на другой URL. При выполнении сообщает браузеру о необходимости загрузить другой URL, вместо того, что запросил пользователь. Данную дериктиву можно отнести к внешнему редиректу.

Синтаксис директвы следующий: Redirect [status] URL-path URL, где status: необязательное поле, определяет код возврата, допустимые значения: permanent (301 — документ перемещен постоянно), temp (302 — документ перемещен временно), seeother (303 — смотрите другой), not fond (404 — не найден). URL-path: локальная часть URL запрашиваемого документа. И последний параметр - URL: URL куда должен быть выполнен редирект. Пример применения директивы Redirect в файле .htaccess приведен ниже.

Redirect temp / http://www.webseoworld.com/about/
Redirect temp /index.html http://www.webseoworld.com/registre.html
Redirect permanent /prices2002.html http://www.iho.ru/prices2003.html
Redirect [404]/ http://www.webseoworld.com/

Директива RedirectMatch. Директива аналогична Redirect, за исключением того, что вместо адреса запрашиваемого документа пишется регулярное выражение (шаблон). Синтаксис написания таков: Redirect [status] regexp URL, где status: аналогично описанию директивы Redirect. URL-path: локальная часть URL запрашиваемого документа. regexp: регулярное выражение (шаблон), описывающее группу URL-ов. Пример использования директивы: RedirectMatch в файле .htaccess показан ниже.

RedirectMatch (.*)\.gif$ http://www.webseoworld.com$1.jpg
RedirectMatch (.*\.jpg)$ http://www. webseoworld.com$1

Бывает такая ситуация, когда определенному IP-адресу нужно отдать совсем другую страницу, не такую как остальных пользователям (пришедшим с других IP-адресов). В этом случае стоит использовать следующую структуру директив. В приoмере ниже, пользователю пришедшему с IP192.167.58.42, мы сразу же отдаем страницу index_temp.html.

RewriteCond %{REMOTE_ADDR} 192.167.58.42
RewriteRule ^/$ / index_temp.html [L]

Второй пример, немного похожий на первый, но в тоже время отличающийся по функционалу. Допустим, на сайте http://www.avtoboard.com , вернее на его странице seo-articles.html разместили ссылку, на свой ресурс. И хотите, что бы пользователи перешедшие по ней попадали не на указанную страницу в ссылке (к примеру about-seo.html), а на другую (seo-prices.html). Для этого стоит прибегнуть к использованию следующей структуре директив в файле .htaccess.

RewriteCond %{HTTP_REFERER} http://www.avtobard.com/seo-articles.html
RewriteRule ^/about-seo.html$ /seo-prices.html [L]

Далее рассмотрим директивы, отвечающие за ограничение доступа (пароли) к директориям, фалам. Полезная вещь при написании .htaccess.

 

Директива Order. Эта директива устанавливает порядок работы директив Deny и Allow. Синтаксис ее следующий: Order порядок, где порядок может принимать значения Deny,Allow или Allow,Deny. Последовательность не имеет значения. По умолчанию принято записывать в следующем виде:
Order Deny,Allow.

Директива Deny. Запрещает доступ определенных клиентов к ресурсам. Можно запретить всем, или же определенному хосту. Синтаксис таков: Deny from all|host (или первое, или второе), где host может принимать значения IP адреса или имени хоста. Пример использования директивы в файле .htaccess приведен ниже:

Order Allow,Deny
Allow from all
Deny from .webseoworld.com
Deny from 192.167.58.42

Директива Allow. Противоположность директиве Deny. Разрешает доступ определенных клиентов к ресурсам. Можно зразрешить всем, или же определенному хосту. Синтаксис таков: Allow from all|host, где host может принимать значения IP адреса или имени хоста. Ниже приведен пример разрешения на доступ для определенных IP адресов.

Order Deny,Allow
Deny from all
Allow from .webseoworld.com
Allow from 192.167.58.42

Ниже приведен пример запрета на доступ к определенному файлу. Допустим, нам нужно закрыть доступ к файлу .htpass для всех посетителей. Тогда стоит прибегнуть к использованию следующей конструкции:

<Files “.htpasswd”>
Order Deny,Allow
Deny from all
</Files>

Стоит так же отметить, что можно установить запрет на доступ для определенной группы файлов. В примере, приведенном ниже, запрещается доступ к файлам с расширениями “lib” и “pm” для всех посетителей.

<FilesMatch “\.(lib|pm)$”>
Order Deny,Allow
Deny from all
</FilesMatch>

Теперь рассмотрим пример установки пароля на доступ. Такое может понадобится в случае, если Вы хотите спрятать какую-то директорию от всех посетителей, кроме одного-нескольких. Как яркий пример, такой директорией может служить директория хранящая логии статистики. Ведь не особо хочется, что бы конкуренты изучали Вас по логах, узнавали откуда к вам пользователи приходят, по каких ключевых запросах и т.д.

Директива AuthName. Данная директива будет выводится для посетителя и может использоваться для пояснения запроса авторизации. Например можно написать, что пользователь попал в защищенную область и если он не знает нужных данных для аутентификации, то может идти гулять лесом.

Директива AuthType. Эта директива выбирает тип аутентификации. Возможны следующие два типа: Basic и Digest. Синтаксис использования данной директивы следующий: AuthType Basic|Digest (или первое, или второе).
Директива AuthUserFile. Указывает имя файла с паролями для аутентификации пользователей. Предварительно нужно создать файл, где будут хранится данные для доступа. Путь к файлу с паролями задается относительно корня веб-сервера. Лучше всего хранить файл с паролями в папке, доступ к которой закрыт для пользователей. Синтаксис таков: AuthUserFile путь-к-файлу.

Директива Require. Эта директива файла .htaccess определяет пользователей, которые могут получить доступ к закрытой директории (к директории, которую Вы хотите спртать). Синтаксис: Require имя-пользователя|valid-user. Указывая valid-user вы разрешаете доступ всем пользователям, перечисленным в файле паролей.
Ну вот, мы рассмотрели несколько директив, которые используются для установки пароля доступа. Теперь стоит привести наглядный пример, что бы Вам стало понятней. Допустим, что данные о пользователях и паролях хранятся в файле .htpasswd, который лежит в папке data на домене.

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

AuthName “Вы попали в защищенную область”
AuthType Basic
AuthUserFile /home/user/www/data/.htpasswd
Require valid-user

Второй пример - разрешает доступ к директории только 3-м пользователям:

AuthName “Введите пароль и логин для доступа к файлам”
AuthType Basic
AuthUserFile /home/st1331/www/data/.htpasswd
Require user smart smart1 smart2

Пример третий - ограничение доступа к определенным типам фалов, в данном случае к rar архивам .

<FilesMatch “\.rar$”>
AuthName “Только зарегистрированным пользователям можно скачивать RAR-архивы .”
AuthType Basic
AuthUserFile /home/user/www/data/.htpasswd
Require valid-user
</FilesMatch>

Пример четвертый - ограничение доступа к одному файлу (в этом примере ограничен доступ к файлу .htpasswd)

<Files “.htpasswd”>
AuthName “доступ запрещен к данному файлу.”
AuthType Basic
AuthUserFile /home/user/www/data/.htpasswd
Require user smart smart1
</Files>

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

Директива DirectoryIndex. Полезная директива, предназначена для изменения страницы по умолчанию (стартовой). Она позволяет изменить страницу, которая будет показываться при обращении к директории. А если быть точнее, то название страницы. Синтаксис директивы таков: DirectoryIndex page [page], где page - название стартовой страницы. Может быть указано несколько страниц. Ниже приведен пример:

DirectoryIndex main.html index.php test.shtml

Директива ErrorDocument. Предназначена для обработки ошибок. Эта директива позволяет установить альтернативные страницы ошибок Синтаксис: ErrorDocument code URL-path, где URL-path - локальный адрес страницы, а code - код ошибки. Наиболее типичные коды ошибок таковы:
401 — Требуется авторизация (Authorization Required)
403 — пользователь не прошел аутентификацию, запрет на доступ (Forbided)
404 — запрашиваемый документ (файл, директория) не найден (Not Found)
500 — внутренняя ошибка сервера — ошибка скрипта или ошибка в синтаксисе файла .htaccess - (Internal Server Error). Пример применения я написал ниже:

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

Директива AddOutputFilter. Предназначена для установки фильтра (SSI). О том, что такое SSI, читайте в следующей статье. Пример ее использования таков:

<FilesMatch “\.(mytype)$”>
SetOutputFilter INCLUDES
</Directory>

Директива SetHandler. Используется для установки обработчика (PHP, Parser). Она устанавливает обработчик для файлов в заданной директории. Синтаксис применения таков: SetHandler handler-name. Пример:

SetHandler php-script

Директива AddHandler. Нужна для установки обработчика (PHP, Parser). Она устанавливает обработчик для файлов указанного типа. Синтаксис: AddHandler handler-name filename-extension, где handler-name – имя обработчика, а filename-extension – расширение файла для которого будет использоваться обработчик. Пример:

AddHandler php-script .html
AddHandler parser-script .htm

Директива AddDefaultCharset. Бывают случаи, когда необходимо поменять кодировку на сервере принятую по умолчанию, вот это можно сделать с помощью данной директивы в файле .htaccess. допустим, что по умолчанию на сервере установлена кодировка Windows-1251, а вам бы хотелось изменить ее на utf-8. Тогда следует в файле .htaccess добавить следующую строчку:

AddDefaultCharset utf-8

Если Вы пишете свои сайты, то наверняка используете разбиение страницы на части. И каждую из частей вводите в отдельный файл, что бы легче было вносить изменения в десятки, а то и в сотни страниц (обычно разбивают на header.html, footer.html и index.html который включает в себя первые файла). Так вот, как же заставить Апач обрабатывать SSI директивы? Кстати, напишу все такие немного о SSI, так как уже второй раз в статье встречается.
SSI позволяют “собирать” страницу из кусочков. В одном кусочке у вас код меню, в другом код верхней части страницы, в третьем - нижней. А посетитель видет обычную страницу, которая состоит из того кода, который входит в ваши кусочки. Необходимы обязательные установки в httpd.conf: В блоке, начинающемся с <Directory/> и заканчивающийся </Directory> в строку Options Indexes добавьте Includes. После, в файле .htaccess пишем:

AddOutputFilter Includes .html .htm

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

1. неверный синтаксис .htaccess
2. файл .htaccess записан в формате Windows, а должен быть записан в формате UNIX

Вот теперь все. Надеюсь эта статья хотя бы немного Вам поможет и при надобности Вы сделаете все как надо и работать оно будет как часики.

 

http://www.webseoworld.com.

Рекомендуйте этот пост своим знакомым...


Добавить в любимые (144) | Просмотров: 43403

Ваш коментарий будет первым
RSS комментарии

Только зарегистрированные пользователи могут оставлять коментарии.
Пожалуйста зарегистрируйтесь или войдите в ваш аккаунт.

 

Добавить комментарий


Защитный код
Обновить

« Пред.   След. »
FrenchGermanItalianPortugueseRussianSpanish
Eset Nod32 keys Ключи для NOD32
Меню пользователя
All4webNews Subscribe to All 4web news by Email
Топ вирусов
Последние коментарии
Создай открытку за 5 минут-Por...
Troubleshot?
15/08/10 18:55 Ещё...
Написал Admin

Joomla Super Pack 2009 DVD
:( :( :( :( :( :( :( :(
14/08/10 16:02 Ещё...
Написал svs

Создай открытку за 5 минут-Por...
Problem with activation
Hi there, I dont know if I am writing in a proper board but ...
06/08/10 23:35 Ещё...
Написал Sylvia

JS Library 1.0 RUS - 1000 уник...
The file could not be found. Please check the download link.
16/07/10 10:44 Ещё...
Написал error

Жукладочник v3.0.0.90 PRO Crac...
Кряк не рабочий, выкидывает при работе в течении минуты
14/07/10 09:00 Ещё...
Написал Саша

Ad Muncher 4.8 Build 31318 Fin...
Отличная программа!!!
13/06/10 07:30 Ещё...
Написал Кантик

Ad Muncher 4.8 Build 31318 Fin...
Прога шикарная!!!!Скачал,крякнул и живи в интернете,и не нер...
13/06/10 07:29 Ещё...
Написал Василий

Десятка лучших генераторов шаб...
ОНЛАЙН-ХЕРНЯ,лудше десктопные проги такого-же плана описали
05/05/10 12:25 Ещё...
Написал dt

49 future PNG icons
Рабочая ссылка.
20/04/10 19:36 Ещё...
Написал Admin

49 future PNG icons
И наХРЕН так делать , объясните???? :x :x :x
20/04/10 14:34 Ещё...
Написал Александр Чудо


Украинская Баннерная Сеть