| Синтаксис написания файла htaccess в примерах |
|
|
| Автор Administrator | ||||
| 18.05.2008 г. | ||||
|
Вот почему у меня появилась идея написать статью о том, как правильно писать файл .htaccess и с какими задачами Вы можете столкнуться при его написании. На этом закончим предисловие и перейдем к руководству по написанию файла .htaccess. Пути к файлам (директориям) указываются от корня сервера на хостинге. Начинаются они с команды DirectoryIndex, далее следует полный путь к файлу (директории). Ниже приведен пример. Отмечу сразу, что буду указывать два примера – правильный и ошибочный, что бы было понятней о чем я говорю. Бывает, что необходимо указать адресацию к документам, расположенным на других сайтах. Такое действие должно выполняться с указанием протокола. Пока не забыл упомянуть, скажу, что для того что бы сделать комментарий в файле .htaccess, необходимо в начале строки (предполагается, что строка будет комментарием) поставить символ #. К тому же, в выражениях можно использовать переменные окружения, например %{REMOTE_ADDR} или %{HTTP_REFERER}. Далее рассмотрим определение области действия директив. Сомневаюсь, что Вам придется сталкиваться с таким при установке каких-либо скриптов, но все же опустить этот момент не могу. Хотя, возможно я и ошибаюсь немного. <Files my_my_file.html> Здесь мы запрещаем доступ всем к файлу 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)$”> Думаю, с учетом подробного описания выше, всем понятно, что делает данный кусок кода. Директива 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/ Директива RedirectMatch. Директива аналогична Redirect, за исключением того, что вместо адреса запрашиваемого документа пишется регулярное выражение (шаблон). Синтаксис написания таков: Redirect [status] regexp URL, где status: аналогично описанию директивы Redirect. URL-path: локальная часть URL запрашиваемого документа. regexp: регулярное выражение (шаблон), описывающее группу URL-ов. Пример использования директивы: RedirectMatch в файле .htaccess показан ниже. RedirectMatch (.*)\.gif$ http://www.webseoworld.com$1.jpg Бывает такая ситуация, когда определенному IP-адресу нужно отдать совсем другую страницу, не такую как остальных пользователям (пришедшим с других IP-адресов). В этом случае стоит использовать следующую структуру директив. В приoмере ниже, пользователю пришедшему с IP192.167.58.42, мы сразу же отдаем страницу index_temp.html. RewriteCond %{REMOTE_ADDR} 192.167.58.42 Второй пример, немного похожий на первый, но в тоже время отличающийся по функционалу. Допустим, на сайте http://www.avtoboard.com , вернее на его странице seo-articles.html разместили ссылку, на свой ресурс. И хотите, что бы пользователи перешедшие по ней попадали не на указанную страницу в ссылке (к примеру about-seo.html), а на другую (seo-prices.html). Для этого стоит прибегнуть к использованию следующей структуре директив в файле .htaccess. RewriteCond %{HTTP_REFERER} http://www.avtobard.com/seo-articles.html Далее рассмотрим директивы, отвечающие за ограничение доступа (пароли) к директориям, фалам. Полезная вещь при написании .htaccess.
Директива Order. Эта директива устанавливает порядок работы директив Deny и Allow. Синтаксис ее следующий: Order порядок, где порядок может принимать значения Deny,Allow или Allow,Deny. Последовательность не имеет значения. По умолчанию принято записывать в следующем виде: Директива Deny. Запрещает доступ определенных клиентов к ресурсам. Можно запретить всем, или же определенному хосту. Синтаксис таков: Deny from all|host (или первое, или второе), где host может принимать значения IP адреса или имени хоста. Пример использования директивы в файле .htaccess приведен ниже: Order Allow,Deny Директива Allow. Противоположность директиве Deny. Разрешает доступ определенных клиентов к ресурсам. Можно зразрешить всем, или же определенному хосту. Синтаксис таков: Allow from all|host, где host может принимать значения IP адреса или имени хоста. Ниже приведен пример разрешения на доступ для определенных IP адресов. Order Deny,Allow Ниже приведен пример запрета на доступ к определенному файлу. Допустим, нам нужно закрыть доступ к файлу .htpass для всех посетителей. Тогда стоит прибегнуть к использованию следующей конструкции: <Files “.htpasswd”> Стоит так же отметить, что можно установить запрет на доступ для определенной группы файлов. В примере, приведенном ниже, запрещается доступ к файлам с расширениями “lib” и “pm” для всех посетителей. <FilesMatch “\.(lib|pm)$”> Теперь рассмотрим пример установки пароля на доступ. Такое может понадобится в случае, если Вы хотите спрятать какую-то директорию от всех посетителей, кроме одного-нескольких. Как яркий пример, такой директорией может служить директория хранящая логии статистики. Ведь не особо хочется, что бы конкуренты изучали Вас по логах, узнавали откуда к вам пользователи приходят, по каких ключевых запросах и т.д. Директива AuthName. Данная директива будет выводится для посетителя и может использоваться для пояснения запроса авторизации. Например можно написать, что пользователь попал в защищенную область и если он не знает нужных данных для аутентификации, то может идти гулять лесом. Директива AuthType. Эта директива выбирает тип аутентификации. Возможны следующие два типа: Basic и Digest. Синтаксис использования данной директивы следующий: AuthType Basic|Digest (или первое, или второе). Директива Require. Эта директива файла .htaccess определяет пользователей, которые могут получить доступ к закрытой директории (к директории, которую Вы хотите спртать). Синтаксис: Require имя-пользователя|valid-user. Указывая valid-user вы разрешаете доступ всем пользователям, перечисленным в файле паролей. Первый пример разрешает доступ к директории всем пользователям, указанным в файле .htpsswd: AuthName “Вы попали в защищенную область” Второй пример - разрешает доступ к директории только 3-м пользователям: AuthName “Введите пароль и логин для доступа к файлам” Пример третий - ограничение доступа к определенным типам фалов, в данном случае к rar архивам . <FilesMatch “\.rar$”> Пример четвертый - ограничение доступа к одному файлу (в этом примере ограничен доступ к файлу .htpasswd) <Files “.htpasswd”> Ну вот, с директивами установки доступа разобрались. Теперь посмотрим на директивы управление сервером с помощью файла .htaccess. Директива DirectoryIndex. Полезная директива, предназначена для изменения страницы по умолчанию (стартовой). Она позволяет изменить страницу, которая будет показываться при обращении к директории. А если быть точнее, то название страницы. Синтаксис директивы таков: DirectoryIndex page [page], где page - название стартовой страницы. Может быть указано несколько страниц. Ниже приведен пример: DirectoryIndex main.html index.php test.shtml Директива ErrorDocument. Предназначена для обработки ошибок. Эта директива позволяет установить альтернативные страницы ошибок Синтаксис: ErrorDocument code URL-path, где URL-path - локальный адрес страницы, а code - код ошибки. Наиболее типичные коды ошибок таковы: ErrorDocument 401 /401.html Директива AddOutputFilter. Предназначена для установки фильтра (SSI). О том, что такое SSI, читайте в следующей статье. Пример ее использования таков: <FilesMatch “\.(mytype)$”> Директива 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 Директива AddDefaultCharset. Бывают случаи, когда необходимо поменять кодировку на сервере принятую по умолчанию, вот это можно сделать с помощью данной директивы в файле .htaccess. допустим, что по умолчанию на сервере установлена кодировка Windows-1251, а вам бы хотелось изменить ее на utf-8. Тогда следует в файле .htaccess добавить следующую строчку: AddDefaultCharset utf-8 Если Вы пишете свои сайты, то наверняка используете разбиение страницы на части. И каждую из частей вводите в отдельный файл, что бы легче было вносить изменения в десятки, а то и в сотни страниц (обычно разбивают на header.html, footer.html и index.html который включает в себя первые файла). Так вот, как же заставить Апач обрабатывать SSI директивы? Кстати, напишу все такие немного о SSI, так как уже второй раз в статье встречается. AddOutputFilter Includes .html .htm Ну вот, на этом и закончим рассмотрение директив файла .htaccess. Но на последок рассмотрим ситуацию: Вы добавил файл .htaccess, и теперь сервер выдает 500 ошибку. Почему такое происходит? Причин может быть пару: 1. неверный синтаксис .htaccess Вот теперь все. Надеюсь эта статья хотя бы немного Вам поможет и при надобности Вы сделаете все как надо и работать оно будет как часики.
Рекомендуйте этот пост своим знакомым... Добавить в любимые (144) | Просмотров: 43403
Только зарегистрированные пользователи могут оставлять коментарии. |
||||
| « Пред. | След. » |
|---|





Ключи для NOD32


