sonyps4.ru

Как сделать портфолио в фотошопе cs5. Простое портфолио в Photoshop

Начнем издалека, чтобы и новичкам был понятен принцип работы описываемого в статье файла. Для функционирования сайта в Интернете нужен не только компьютер и выход к сети, но и установленное на него специальное ПО, которое обеспечивает доступ к данным по протоколам http и https. Таким программным обеспечением и является веб-сервер. Существуют различные типы веб-серверов, но самый распространенный — Apache. Он построен на открытом коде, предоставляется бесплатно, постоянно дорабатывается и улучшается, совместим с многими скриптами и работает почти на всех платформах, включая Windows, Linux, Netware 5.x.

Настраивается Apache через конфигурационные файлы, которые хранятся в текстовом формате. С их помощью можно задать определенные правила действия веб-сервера. Главный конфигурационный файл называется httpd.conf или apache.conf (в зависимости от дистрибутива ОС). Во многих случаях все конфигурации сервера можно указывать именно здесь, и в основном такой способ предпочтительней, потому что:

А) уменьшает время ответа веб-сервера при запросе (так при каждом обращении к веб-серверу Apache не будет просматривать все каталоги на наличие.htaccess); б) некоторые директивы, например директивы модуля mod_rewrite, во многих отношениях работают лучше из главного конфигурационного файла.

Но доступ к этому файлу может быть не у всех пользователей сервера (например, в случае с виртуальным хостингом), поэтому остальным предлагается файл дополнительной конфигурации веб-сервера — .htaccess (c точкой в начале названия).

Что такое.htaccess и для чего он нужен

Файл (или файлы) .htaccess будет задавать правила работы веб-сервера только в каталоге, где он размещен, и его дочерних каталогах, без глобальных изменений работы всего сервера. Возможность использовать.htaccess прописывается директивой (т.е. командой) — AllowOverride — в главном конфигурационном файле httpd.conf, название которой прямо говорит о том, что настройки внутри.htaccess приоритетны перед настройками в httpd.conf (если иное не ограничено все той же директивой AllowOverride). С помощью этой директивы можно позволить все, а можно — только некоторые действия. Детальную инструкцию по его применению можно найти на сайте Apache.

С ней, при каждом обращении к веб-серверу, Apache будет просматривать все каталоги на наличие.htaccess. Изменения в файле действительны сразу после сохранения — перезагрузка всего веб-сервера не нужна (в отличие от изменений в httpd.conf).

Имя файла.htaccess — общепринятое, но вовсе не обязательное. В httpd.conf можно задать другое имя с помощью директивы AccessFileName , например, так:

AccessFileName .config

Как создать файл.htaccess

Как уже говорилось, конфигурационные файлы имеют текстовый формат, и создать.htaccess также можно с помощью текстового редактора (например, Блокнота или NotePad++ в Windows).

Имя файла — .htaccess (с точкой в начале);

тип — “Все файлы”;

формат переноса по словам;

режим ASCII (при загрузке.htaccess на хостинг по FTP-протоколу).

Apache — регистрозависимый веб-сервер, поэтому важно написать название маленькими буквами: .HTaccess и.htaccess — это разные файлы.

В Mac ОS файлы, начинающиеся с точки, невидимы. Поэтому Вы можете назвать его иначе и после, переместив по FTP на хостинг, переименовать. Обычно размещают файл в корневой директории веб-сервера (/public_html ) либо в корневой директории сайта (/public_html/site.com/ ).

Синтаксис.htaccess

Синтаксис.htaccess аналогичен синтаксису httpd. Для каждой директивы предполагается отдельная строка. Для своего же удобства, Вы можете вносить в файл комментарии с помощью знака #, и значение после # будет игнорироваться веб-сервером. Этот трюк можно использовать для отключения любой директивы. Ее не нужно удалять полностью из файла — достаточно просто закомментировать.

Возможности конфигурационного файла огромны. Ниже приведены базовые настройки в.htaccess.

Возможности.htaccess

Контроль доступа

Запрет веб-доступа:

Order Deny,Allow Deny from all

Запрет веб-доступа, кроме IP:

Order deny,allow deny from all allow from xxx.xxx.xxx.xxx

Запрет веб-доступа для IP:

Order allow,deny Allow from all Deny from xxx.xxx.xxx.xxx

Запрет доступа к файлу:

Order allow,deny Deny from all

Защита директории с помощью пароля:

AuthType Basic AuthName "Directory Name" AuthUserFile /home/cpanel_user/.htpasswds/public_html/smth/passwd require valid-user # где AuthName "Directory Name - имя защищенной директории, а # /home/cpanel_user/.htpasswds/public_html/smth/passwd - местонахождение файла с паролем.

Работа с ошибками веб-сервера

Иногда вместо ожидаемой страницы посетитель может натолкнуться на ответ веб-сервера в виде ошибки с лаконичным, но не всегда понятным для простого пользователя, объяснением причины. Полный список кодов состояния можно найти в Википедии . Для самых распространенных (например, 404 или 500 ошибки) желательно создать свою страницу, которая лучше смотрится и представляет посетителю пути выхода. Задается она следующим образом:

ErrorDocument 404 http://yourdomain.com/error/404.html # где http://yourdomain.com/error/404.html - путь к созданной странице.

P.S. Пользователи услуги от сайт могут воспользоваться для создания своей страницы функционалом контрольной панели cPanel (в разделе “Расширенный ” пункт “Страницы ошибок ”).

Настройка 301 редиректа в htaccess

Для создания постоянного перенаправления используется директива 301 редиректа, которая передает весь вес страницы на новый url (поэтому оно предпочтительней, чем 302 редирект — в целях SEO).

Перенаправление всего сайта на новый домен:

Redirect 301 / http://www.newdomain.com/

Перенаправление страницы на новую:

Redirect 301 /page1.html http://mydomain.com/page2.html

Модуль перенаправления mod rewrite

Незаменимым механизмом для изменения URL-ссылок “на лету” является модуль mod_rewrite . Его полезность, а вместе с тем, сложность заключается в том, что можно использовать несметное количество правил, включающих еще больше переменных.

Для работы модуля, прежде всего нужны директивы

RewriteEngine On (включает работу механизма преобразования)

Options FollowSymLinks (условие для работы mod_rewrite).

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

RewriteRule

Одной из самых функциональных директив модуля mod_rewrite является RewriteRule . Для того, чтобы указать условие, при котором будет работать правило, используется директива RewriteCond . Она (одна или несколько) обязательно прописывается перед RewriteRule.

Перенаправление страницы на новый домен:

RewriteRule ^page1\.html$ http://newdomain.com/

Перенаправление сайта с домена без www на домен с www:

RewriteEngine On RewriteCond %{HTTP_HOST} !^www\..* RewriteRule ^(.*) http://www.%{HTTP_HOST}/$1

И наоборот:

RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1

Перенаправление по протоколу HTTPS (предварительно нужно установить ):

RewriteEngine On RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Эти строки необходимо разместить в самом верху.htaccess.

Определение кодировки

Таблицу символов, в которой следует открыть сайт, определяет браузер. Однако, можно задать кодировку по умолчанию:

AddDefaultCharset UTF-8

Такое изменение распространяется в пределах действия.htaccess и на все страницы сайта. Можно задать кодировку для определенного типа файла, например windows-1251 для html:

AddType "application/x-httpd-php3; charset=windows-1251" .html

Часто сама страница несет в себе (а именно в заголовке) информацию об используемой кодировке. Нужно проверить, чтобы указанная кодировка в документе и в конфигурационном файле совпадали. Приведенная здесь utf-8 практически всегда требуется при работе популярных cms, так как они рассчитаны на большой круг пользователей по всему миру. Кстати, по умолчанию эта же кодировка настроена и на наших серверах виртуального хостинга.

Другие возможности

— Определить индексный файл сайта:

По умолчанию, индексной страницей считается index.html . С помощью следующей директивы можно задать другое название файла, который отрывается первым при обращении к каталогу:

DirectoryIndex index.php

— Полезной директивой является FilesMatch, которая оговаривает пределы действия правила по названию файла, используя регулярные выражения. С ее помощью, например, можно запретить доступ к определенным файлам:

Order Allow,Deny Deny from all

Есть некоторые директивы, которые не поддерживаются на наших серверах с виртуальным хостингом, но вы можете их разрешить на своем ВПС, например.

Причина в том, что работающий как suPHP веб-сервер не поддерживает php_flag и php_value . Поэтому, мы предлагаем использовать сPanel (крайне полезен подраздел “Выбор версии РНР ”, для работы с error_log — “Журнал ошибок ”) или создать локальный файл php.ini для этой цели. Пару директив мы все-таки привели ниже:

— Для того, чтобы избежать зависания веб-сервера при обработке некорректно написанных скриптов, существует max_execution_time . С ее помощью указывается время в секундах, отведенное на обработку РНР-скрипта. Можно увеличить время ожидания веб-сервера при выполнении скрипта:

Php_value max_execution_time 60

— Определить максимальный размер загружаемого файла:

Php_value upload_max_filesize 128M (здесь вместо 128 поставьте нужное значение).

— Вывести ошибки РНР в отдельный файл:

Php_flag log_errors on php_value error_log /home/path/to/public_html/domain/PHP_errors.log # PHP_errors.log - название файла, а # /home/path/to/public_html/domain - путь к нему).

P.S. На виртуальном хостинге трудно с точностью определить, какие директивы будут работать в.htaccess, потому что многие из тех, которые ведут к изменению конфигурации веб-сервера, запрещены по понятным причинам — эти изменения затронут всех пользователей на носителе.

Если.htaccess не работает

Проверить работу файла можно, прописав несложные директивы, которые при правильном синтаксисе и верных настройках httpd (как описывалось в начале статьи) должны сработать:

— например, запретив доступ к сайту извне с помощью директивы

Order deny,allow Deny from all

— или записав в файл набор бессмысленных символов, которые не являются директивами. Если веб-сервер взаимодействует с htaccess, то он, конечно, не сможет их прочитать и отдаст 500 ошибку.

Если проблема действительно существует, нужно в первую очередь искать причину в главном конфигурационном файле:

— убедиться, что сервер разрешает использование файла.htaccess: есть запись AllowOverride All (и она не закомментирована с помощью #);

— проверить, что создана запись VirtualHost для домена. В качестве примера:

DocumentRoot /www/example1 ServerName www.example.com # Другие директивы

— название файла дополнительной конфигурации указано как Вам нужно. Если это.htaccess, то:

AccessFileName .htaccess

— присутствует хостнейм сервера (указывается при создании URL-перенаправлений) в виде IP-адреса сервера или домена:

ServerName www.example.com

Если же причина не в httpd, нужно проверить сам.htaccess на наличие синтаксических ошибок. Можно воспользоваться онлайн-сервисами (например, http://www.htaccesscheck.com/ , http://htaccess.madewithlove.be/), или — , где есть полный перечень директив, вместе с синтаксисом.

Крайне желательно перед любым редактированием делать резервную копию файла — чтобы при худшем исходе можно было “откатить” изменения обратно.

Хотя изменения и сразу вступают в силу, кэш браузера никто не отменял — для проверки работы сайта после редактирования.htaccess, регулярно пользуйтесь его очисткой или загружайте страницу в обход кэша — через комбинацию клавиш Ctrl + F5 (в Safari: Ctrl + R , в Mac OS: Cmd + R ).

Самая распространенная ошибка веб-сервера при работе с.htaccess — 500, и либо она указывает на проблему в синтаксисе (опечатка в директиве, например), либо же в главном конфигурационном файле не разрешен такой тип директивы.

Полезные ссылки

Лучший источник вдохновения для работы с.htaccess:

Многие инструкции по работе с.htacess, на русском.

Полная поддержка директив.htaccess прилагается...

Пролонгации домена 199-00 руб

Этот материал один из важнейших, поэтому рекомендую уделить ему особое внимание.

В регулярном выражении можно использовать любые печатные символы и пробел, но часть символов имеет особое значение:

  • Круглые скобки () используются для выделения групп символов.

    Символ ^ обозначает начало строки.

    Символ $ обозначает конец строки.

    Символ. обозначает любой символ.

    Символ | обозначает альтернативу. Например, выражения "A|B" и "(ABC|DEF)" означают "A или B" и "ABC или DEF" соответственно.

    Символ? ставится после символа (или группы символов), который может как присутствовать, так и отсутствовать. Например, выражению "jpe?g" подойдет и строка "jpg", и строка "jpeg". Пример выражения с группой символов: "super-(puper-)?site".

    Символ * ставится после символа (или группы символов), который может отсутствовать или присутствовать неограниченное число раз подряд. Например, выражению "jpe*g" подойдут строки "jpg", "jpeg" и "jpeeeeeeg".

    Символ + действует аналогично символу * с той лишь разницей, что предшествующий ему символ обязательно должен присутствовать хотя бы один раз. Например, выражению "jpe+g" подойдут строки "jpeg" и "jpeeeeg", но не "jpg".

    Квадратные скобки используются для перечисления допустимых символов. Например, выражение "" равносильно выражению "a|b|c", но вариант с квадратными скобками обычно является более оптимальным по быстродействию. Внутри скобок можно использовать диапазоны: например, выражение "" равносильно выражению "". Если символы внутри квадратных скобок начинаются с символа ^, это означает любой символ, кроме перечисленных в скобках. Например, выражение "[^0-9]+" означает строку из любых символов, кроме цифр.

    Символ \ ставится перед спецсимволами, если они нужны в своем первозданном виде. Например, выражению "jpe\+g" соответствует только одна строка "jpe+g".

    {3,9} - фигурные скобки означают диапозон количества символов, в данном случае допускается от 3 до 9 символов, длина строки из символов должна быть равна или более 3 равна или менее 9 символов. Применяется в основном . Пример, проверяем строку HTTP запроса отправленную браузером серверу на предмет совпадения ее содержания определенному шаблону:
    ♳ RewriteCond %{THE_REQUEST} ^{3,9}\ /index\.php\ HTTP/
    ♴ предположим что мы запросили индексную сраницу на сервере %{THE_REQUEST} = «GET /index.html HTTP/1.1»
    ♵ в таком случае мы читаем исходную строку содержащую фигурные скобки так "начало_полученных_данныхGETпробел/index.phpпробелHTTP/"
    ♶ т.е. может быть "GET", а может быть "POST" могут быть и другие значения... просто символы, в зависимости от того чем и как мы запросим файл index.php на сервере.

    Все, что расположено после символа "#", считается комментарием.

Еще раз повторюсь, что для дальнейшего успешного понимания описания, примеров.htaccess и его настройки, данная информация просто необходима!!!

Недавно освободившиеся домены с PR и ТИЦ:

Сервис http://reg.ru - крупнейшего хостинга и регистратора доменов позволяет подать заявку на регистрацию доменного имени, которое недавно было освобождено прежним Администратором. Освобожденные домены часто имеют высокие показатили ТИЦ и PR и могут быть интересны к приобретению.

Освобожденные домены.RU c ТИЦ:
Свободные премиум-домены:

Объем информации: 5805 bytes

165

Htaccess - Применение и синтаксис

Ваша оценка: шедевр замечательно очень хорошо хорошо нормально Не читал терпимо посредственно плохо очень плохо не читать

В среде веб-программирования нередко используется файл.htaccess при хостинге сайтов под управлением сервера Apache. Это очень полезный файл, позволяющий определять неопределенные или переопределять определенные в httpd.conf или apache.conf опции для конкретного сайта иди директории этого сайта.

Файл действует на текущую директорию (где он лежит) и на все директории "ниже", т.е. все дочерние директории, если только в них не определен свой файл.htaccess.

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

Правила написания

Директивы файла указываются по одной на строку.

Все пути начинаются от корня сайта (не от корня файловой системы сервера!)

Например, если нужный файл на сервере лежит по пути /var/www/mysite.ru/mydir/file.html, то правильным будет путь /mydir/file.html

Если выполняется указание url, то указание происходит обязательно с использованием указания протокола.

Например, если идет перенаправление на сайт www.mysite.ru, то указывать необходимо http://www.mysite.ru

Коментарии - все, что находится после символа #

В выражениях можно использовать переменные окружения. Список наиболее часто используемых - ниже.

Наконец, при внесении изменений в файл - они сразу начинают действовать. Перезагружать ничего не надо.

Переменные окружения

Хотя и не часто, но все-же в файле.htaccess могут использоваться переменные окружения. Некоторые из них приведены ниже (спасибо сайту htaccess.net.ru):

  • QUERY_STRING (параметры запроса)
  • REMOTE_ADDR (IP-адрес посетителя)
  • REMOTE_HOST (имя хоста посетителя)
  • REMOTE_USER (имя пользователя, если он прошел аутентификацию)
  • REMOTE_METHOD (метод браузера - GET или POST)
  • PATH_INFO (путь к файлу веб-страницы)
  • HTTP_USER_AGENT (содержимое заголовка user-agent - тип браузера)
  • HTTP_REFERER (содержимое заголовка referer)
  • HTTP_COOKIE (содержимое заголовка cookie)
  • HTTP_HOST (имя хоста веб-сайта)
  • TIME_YEAR (год, месяц и т.д.)
  • TIME_MONTH
  • TIME_DAY
  • TIME_HOUR
  • TIME_MIN
  • TIME_SEC
  • TIME_WDAY
  • REQUEST_URI (запрашиваемый URL)
  • REQUEST_FILENAME (запрашиваемый файл)
  • THE_REQUEST (полностью запрос)

Регулярные выражения в.htaccess

В этом файле можно использовать регулярные выражения. Их синтаксис приведен ниже. Спасибо сайту htaccess.net.ru

В регулярном выражении можно использовать любые печатные символы и пробел, но часть символов имеет особое значение:

  • Круглые скобки () используются для выделения групп символов.
  • Символ ^ обозначает начало строки.
  • Символ $ обозначает конец строки.
  • Символ. обозначает любой символ.
  • Символ | обозначает альтернативу. Например, выражения "A|B" и "(ABC|DEF)" означают "A или B" и "ABC или DEF" соответственно.
  • Символ? ставится после символа (или группы символов), который может как присутствовать, так и отсутствовать. Например, выражению "jpe?g" подойдет и строка "jpg", и строка "jpeg". Пример выражения с группой символов: "super-(puper-)?site".
  • Символ * ставится после символа (или группы символов), который может отсутствовать или присутствовать неограниченное число раз подряд. Например, выражению "jpe*g" подойдут строки "jpg", "jpeg" и "jpeeeeeeg".
  • Символ + действует аналогично символу * с той лишь разницей, что предшествующий ему символ обязательно должен присутствовать хотя бы один раз. Например, выражению "jpe+g" подойдут строки "jpeg" и "jpeeeeg", но не "jpg".
  • Квадратные скобки используются для перечисления допустимых символов. Например, выражение "" равносильно выражению "a|b|c", но вариант с квадратными скобками обычно является более оптимальным по быстродействию. Внутри скобок можно использовать диапазоны: например, выражение "" равносильно выражению "". Если символы внутри квадратных скобок начинаются с символа ^, это означает любой символ, кроме перечисленных в скобках. Например, выражение "[^0-9]+" означает строку из любых символов, кроме цифр.
  • Символ \ ставится перед спецсимволами, если они нужны в своем первозданном виде. Например, выражению "jpe\+g" соответствует только одна строка "jpe+g".
  • Все, что расположено правее # - считается комментарием.

Как включить

В Linux (LAMP) в конфигурации Apache использование файла.htaccess, как правило, уже разрешено. Во FreeBSD может потребоваться особо разрешить использование этого файла директивой AllowOverride в глобальной конфигурации или в конфигурации конкретного сайта.

AllowOverride All

Запрет на чтение всех файлов в директории

Доступ с определенного IP адреса

oder deny,allow
deny from all
allow from 192.168.0.1
allow from 192.168.0.2


где вместо 192.168.0.1, 192.168.0.2 указываются IP адреса, с которых пользователям можно заходить на сайт. Иначе - ошибка 403.

Запрет на доступ с определенных IP адресов

order allow,deny
allow from all
deny from 192.168.0.1
deny from 192.168.0.2


Где вместо указанных IP необходимо указывать те, доступ с которых закрыт.

Запрет доступа к файлам по маске


order allow,deny
deny from all


Вместо ext1, ext2, ext3... вставляем свои расширения. Правила запрета/доступа определяются так-же, как и для всей директории в целом.

Как частный случай - можно задать доступ для одного конкретного файла (правда, с учетом наследственности прав.htaccess - этот доступ или запрет распространится на все под-директории - т.е. на все файлы в этой директории и всех директориях ниже):


order allow,deny
deny from all

Паролирование директории

Часто используется при создании веб-сайтов, доступ к которым (или к части которых) разрешен не всем. При попытке открытия этого url веб-браузер запросит у пользователя логин и пароль.

AuthName "Введите пароль для доступа"
AuthType Basic
AuthUserFile /var/www/mysite.ru/.htpasswd
require valid-user


ВНИМАНИЕ! Заметьте, что здесь путь к файлу.htpasswd указывается от корня файловой системы сервера, не сайта!

Для использования данного способа следует иметь файл.htpasswd. Как его создать и пользовать - рассказано на этом же сайте в разделе веб. Приведем пример создания этого файла:

# htpasswd -c /var/www/mysite.ru/.htpasswd username password


Если ключ -c не указывать - утилита htpasswd не создаст файл заново, а добавить пользователя username к уже существующим.

Следует учесть, что при данном способе аутентификации логин и пароль передаются в открытом текстовом виде, потому рекомендуется использовать протокол HTTPS/SSL.

Как частный случай эту конструкцию можно использовать внутри блока для паролирования только некоторых файлов.

Сложное паролирование

Есть структура сайта:

/mysite.ru/A
/mysite.ru/A/B1
/mysite.ru/A/B2

Необходимо сделать так, чтобы аутентификация проводилась только при доступе к директории A всех пользователей, но при этом к директории B1 имели доступ одни пользователи, а к директории B2 - другие.

Нам понадобятся файлы.htaccess в каждой директории.

Htaccess для директории A:

AuthName "Введите пароль"
AuthType Basic


require valid-user


.htaccess для директории B1:

AuthName "Введите пароль"
AuthType Basic
AuthUserFile /var/www/mysite.ru/A/.htpasswd

require user username1 username2 username3


.htaccess для директории B2:

AuthName "Введите пароль"
AuthType Basic
AuthUserFile /var/www/mysite.ru/A/.htpasswd

require user username1 username4 username5


Вместо usernameX подставляем имена пользователей, которые имеют доступ к соответствующим директориям.

Перенаправление (редирект) на другой сайт

Redirect / http://www.anothersite.ru


Если редирект перманентный (т.е. навсегда - что очень полезно для поисковых систем), то синтаксис будет таким:

Redirect permanent / http://www.anothersite.ru


Если вместо permanent использовать слово temp - редирект будет, наоборот, временным.

Еще пример редиректа - с конкретной директории внутри сайта:

Redirect /dir2 http://www.anothersite.ru/dir2

Вместо директивы Redirect используем директиву RedirectMatch. Отличие состоит в том, что вместо указания адреса, с которого делать редирект, указывается регулярное выражение.

RedirectMatch (.*)\.gif$ http://mysite.ru/$1.png


Редиректит все обращения к.gif - на такие же по имени файлы, но с расширением.png, находящиеся по адресу mysite.ru/

Еще пример:

RedirectMatch (.*\.jpg)$ http://mysite/$1

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.old_site\.ru$

RewriteCond %{HTTP_HOST} ^old_site\.ru$
RewriteRule ^(.*)$ http://new_site.ru/$1

Показ разных страниц в зависимости от IP-адреса пользователя

SetEnvIf REMOTE_ADDR 192.168.0.1 REDIR="redir"
RewriteCond %{REDIR} redir
RewriteRule ^/$ /another_page.html


Вместо 192.168.0.1 вставляем свое значение.

Подмена стартовой страницы

DirectoryIndex another_file.php


По-сути, здесь мы подменяем указываемую в httpd.conf или apache.conf файле директиву DirectoryIndex.

Замещение страниц ошибок

ErrorDocument 403 /error403.html
ErrorDocument 404 /error404.html


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

Сделать запрет отображения списка файлов в директориях без index-файла

Options -Indexes


Таким образом пользователь не сможет отобразить контент директории, где нет индексного файла (а в директории, где есть индексный файл - он не может этого сделать по-умолчанию).

Указывание отображаемой кодировки

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

AddDefaultCharset windows-1251

Указывание автоконвертации кодировки загружаемых файлов

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

CharsetSourceEnc koi8-r

Добавление обработчиков MIME

AddType "text/html" .myext
AddType "application/x-rar-compressed" .rar


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

Блокировка определенных User-Agent (веб-браузеров, ботов и роботов)

Вот кусок файла.htaccess, в котором заблокированы несколько User-Agent (веб-браузеров; ботов, на самом то деле).

SetEnvIfNoCase User-Agent "^Titan" bad_bot
SetEnvIfNoCase User-Agent "^Wget" bad_bot
SetEnvIfNoCase User-Agent "^SiteSnagger" bad_bot
SetEnvIfNoCase User-Agent "^WebAuto" bad_bot
SetEnvIfNoCase User-Agent "^NetAnts" bad_bot
SetEnvIfNoCase User-Agent "^WebZip/4.0" bad_bot
SetEnvIfNoCase User-Agent "^httplib" bad_bot


Order Allow,Deny
Allow from all
Deny from env=bad_bot


Список "плохих" User-Agent здесь очень мал и приведен только как пример.

Настройки PHP

Помимо переменных httpd.conf и apache.conf нам также может пригодиться изменение заданных в php.ini значений настроек php. .htaccess файл позволяет сделать и такие приятные вещи. Для этого используется директивы php_value и php_flag.

Разница между php_value и php_flag: первая директива присвает конкретное значение настройке:
php_value
а вторая - включает или выключает boolean-настройку:
php_flag

ВНИМАНИЕ! Вы не можете использовать php_admin_flag и php_admin_value в файле.htaccess!

Например, код

php_flag magic_quotes_gpc 0
php_flag magic_quotes_runtime 0


выключит автоматическое экранирование данных в PHP (выключит MagicQuotes), а код

php_value memory_limit 64M

переопределит значение максимального количества памяти, выделяемого для сайта.

Эти значения переопределяют определенные в php.ini файле величины или определяют их, если таковые не были установлены администратором хостинг-сервера. Весь список php-настроек здесь приводить смысле нет - его можно почерпнуть из документации к php нужной Вам версии.

Модуль Rewrite

В состав сервера Apache входит модуль Rewrite. Несмотря на то, что он используется в файле.htaccess, его мы описывать сейчас не будем, т.к. это отдельная тема, достойная отдельной статьи.

Актуально для: Apache 2.x

Это далеко не все, что можно делать с файлом.htaccess. На просторах интернета очень много специфичных примеров, здесь же собраны наиболее часто необходимые примеры.

Apache - самый распространённый HTTP-сервер . Распространяется бесплатно, включая исходные тексты. Поддерживаются сценарии на CGI (включая FastCGI ), PHP , Perl , Java . Аутентификация - базовая , message-digest , TLS (SSL) . С апреля 1996 это самый популярный HTTP-сервер в Интернете, в августе 2007 года он работал на 51% всех веб-серверов.

.htaccess - файл дополнительной конфигурации веб-сервера Apache , а также подобных ему серверов. Позволяет задавать большое количество дополнительных параметров и разрешений для работы веб-сервера у отдельных пользователей (а также на различных папках отдельных пользователей), таких как управляемый доступ к каталогам , переназначение типов файлов и т.д., не предоставляя доступа к главному конфигурационному файлу, т.е. не влияя на работу всего сервиса целиком.

.htaccess является подобием httpd.conf с той разницей, что действует только на каталог, в котором располагается, и на его дочерние каталоги. Возможность использования .htaccess присутствует в любом каталоге пользователя.

Файл .htaccess может быть размещен в любом каталоге сайта. Директивы этого файла действуют на все файлы в текущем каталоге и во всех его подкаталогах (если эти директивы не переопределены директивами нижележащих файлов .htaccess ).

Директивы .htaccess предоставляют пользователю широкий выбор возможностей по настройке своего сайта, среди которых:










Список всех доступных директив можно посмотреть .

HTTP_ACCEPT

Описываются предпочтения клиента относительно типа документа.

REMOTE_ADDR

IP-адрес посетителя.

REMOTE_HOST .

Адрес посетителя в нормальной форме - например, rt99.net.ru .

REMOTE_IDENT

Имя удаленного пользователя. Имеет формат имя.хост, например, kondr.www.rtt99.net.ru

REMOTE_USER

Тоже, что и REMOTE_IDENT, но содержит только имя. Пример: kondr

REQUEST_METHOD

Позволяет определить тип запроса (GET или POST). Должен обязательно анализироваться, т.к. определяет дальнейший способ обработки информации.

SCRIPT_FILENAME

Полный путь к веб-странице на сервере.

PATH_INFO

Содержит в себе все, что передавалось в скрипт.

QUERY_STRING

Содержит строчку, переданную в качестве запроса при вызове CGI скрипта.

AUTH_TYPE

Используется для идентификации пользователя

DOCUMENT_ROOT

Cодержит путь к корневой директории сервера.

SERVER_ADMIN

Почтовый адрес владельца сервера, указанный при установке.

SERVER_NAME SERVER_ADDR

IP-адрес вашего сайта.

SERVER_PORT

Порт, на котором работает Apache.

SERVER_PROTOCOL

Версия HTTP протокола.

SERVER_SOFTWARE

Название сервера, например, Apache/1.3.2 (Unix)

TIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
TIME

Переменные, предназначеные для работы со временем в разных форматах.

API_VERSION

Это версия API модуля Apache (внутренний интерфейс между сервером и модулем) в текущей сборке сервера, что определено в include/ap_mmn.h .

THE_REQUEST

Полная строка HTTP -запроса, отправленная браузером серверу (т.е., «GET /index.html HTTP/1.1» ). Она не включает какие-либо дополнительные заголовки отправляемые браузером.

REQUEST_URI

Ресурс, запрошенный в строке HTTP-запроса.

REQUEST_FILENAME

Полный путь в файловой системе сервера к файлу или скрипту, соответствующему этому запросу.

IS_SUBREQ

Условие - это шаблон условия, т.е. какое-либо регулярное выражение, применяемое к текущему экземпляру "Сравниваемая Строка", т.е. "Сравниваемая Строка" просматривается на поиск соответствия Условию.
Помните, что Условие это perl -совместимое регулярное выражение с некоторыми дополнениями:


Все эти проверки также могут быть предварены префиксом восклицательный знак ("!") для инвертирования их значения.

RewriteEngine включает или выключает работу механизма преобразования. Если она установлена в положение off , этот модуль совсем не работает. Заметьте, что по умолчанию настройки преобразований не наследуются. Это означает, что вы должны иметь RewriteEngine on директиву для каждого виртуального хоста, в котором вы хотите использовать этот модуль.
Синтаксис RewriteEngine выглядит следующим образом:

Используйте для комбинирования условий в правилах OR вместо AND . Типичный пример - перенаправление запросов на поддомены в отдельные каталоги.

Для выдачи разных сайтов для разных браузеров, согласно «User-Agent:» заголовку запроса, Вы можете использовать следующие директивы:


В подстановке вы можете использовать, в том числе, и специальные флаги путем добавления в качестве третьего аргумента директивы RewriteRule . Флаги - это разделённый запятыми следующий список флагов:

"redirect|R [=code]"
(вызывает редирект)
Префикс в Подстановке вида http://thishost[:thisport]/ (создающий новый URL из какого-либо URI ) запускает внешний редирект (перенаправление). Если нет никакого кода, в подстановке ответ будет со HTTP статусом 302 (ВРЕМЕННО ПЕРЕМЕЩЕН). Для остановки процесса преобразования вам также нужно написать флаг "L" .

"forbidden|F [=code]"
(делает URL запрещенным)
Это делает текущий URL запрещённым, например, клиенту немедленно отправляется ответ с HTTP статусом 403 (ЗАПРЕЩЕНО). Используйте этот флаг в сочетании с соответствующими RewriteConds для блокирования URL по некоторым критериям.

"gone|G [=code]"
(делает URL «мёртвым»)
Этот флаг делает текущий URL «мертвым», т.е., немедленно отправляется HTTP ответ со статусом 410 (GONE ). Используйте этот флаг для маркировки «мертвыми» несуществующие более страницы.

"proxy|P [=code]"
(вызвает прокси)
Этот флаг помечает подстановочную часть как внутренний запрос прокси и немедленно (т.е. процесс преобразования здесь останавливается) пропускает его через прокси-модуль. Используйте этот флаг для того, чтобы добиться более мощной реализации директивы ProxyPass , интегрирующей некоторое содержимое на удаленных серверах в пространство имён локального сервера.

"last|L [=code]"
(последнее правило)
Остановить процесс преобразования на этом месте и не применять больше никаких правил преобразований. Используйте этот флаг для того, чтобы не преобразовывать текущий URL другими, следующими за этим, правилами преобразований.

"next|N [=code]"
(следуюший раунд)
Перезапустить процесс преобразований (начав с первого правила). В этом случае URL снова сопоставляется неким условиям, но не оригинальный URL , а URL вышедший из последнего правила преобразования. Используйте этот флаг для перезапуска процесса преобразований, т.е. безусловному переходу на начало цикла.

"chain|C [=code]"
(связь со следующим правилом)
Этот флаг связывает текущее правило со следующим (которое, в свою очередь, может быть связано со следующим за ним, и т.д.). Это имеет следующий эффект: если есть соответствие правилу, процесс продолжается как обычно, т.е. флаг не производит никакого эффекта. Если правило не соответствует условию, все следующие, связанные правила, пропускаются.

"type|T=MIME-тип [=code]"
(принудительно установить MIME тип)
Принудительно установить MIME-тип целевого файла в MIME-тип . К примеру, это можно использовать для имитации mod_alias директивы ScriptAlias , которая принудительно устанавливает для всех файлов внутри отображаемого каталога MIME тип равный «application/x-httpd-cgi» .

"nosubreq|NS [=code]"
(используется только в случае не внутреннего подзапроса)
Этот флаг дает команду механизму преобразований пропустить директиву, если текущий подзапрос является внутренним подзапросом. К примеру, внутренние подзапросы в Apache происходят тогда, когда mod_include пытается получить информацию о возможных файлах по умолчанию для каталогов (index.xxx). При подзапросах это не всегда полезно и даже иногда вызывает проблему в работе набора директив преобразований. Используйте этот флаг для исключения некоторых правил.

"nocase|NC [=code]"
(не учитывать регистр)
Это делает Шаблон нечувствительным к регистру, т.е. нет различий между "A-Z" и "a-z", когда Шаблон применяется к текущему URL .

"qsappend|QSA [=code]"
(добавлять строку запроса)
Этот флаг указывает механизму преобразований на добавление, а не замену, строки запроса из URL к существующей, в строке подстановки. Используйте это когда вы хотите добавлять дополнительные данные в строку запроса с помощью директив преобразований.

"noescape|NE [=code]"
(не экранировать URI при выводе)

Этот флаг не даёт mod_rewrite применять обычные правила экранирования URI к результату преобразования. Обычно, специальные символы (такие как "%", "$", ";", и так далее) будут экранированы их шестнадцатиричными подстановками ("%25", "%24", и "%3B", соответственно); этот флаг не дает это делать.

Если в подкаталогах в .htaccess нет ни одной директивы модуля mod_rewrite , то все правила преобразования наследуются из родительского каталога.

При наличии в файле .htaccess каких-либо директив модуля mod_rewrite не наследуется ничего, а состояние по умолчанию выставляется таким же, как в главном конфигурационном файле веб-сервера (по умолчанию "off"). Поэтому, если нужны правила преобразования для конкретного каталога, то нужно еще раз вставить директиву "RewriteEngine on " в .htaccess для конкретного каталога.

При наследовании правил из верхних каталогов и добавлении к ним новых свойственных только данному каталогу - необходимо выставить в начале следующее: "RewriteEngine on " и "RewriteOptions inherit " - последняя директива сообщает серверу о продолжении.

Примеры использования mod_rewrite можно посмотреть

Если у Вас установлена операционная система семейства Windows , Вы можете подключится к серверу по SSH (инструкцию по подключению можно найти ) и воспользоваться утилитой htpasswd .

Запустив htpasswd без параметров мы увидим:

beget@ginger ~ # htpasswd
Usage:
htpasswd [-cmdps] passwordfile username
htpasswd -b passwordfile username password
-c Create a new file.
beget@ginger ~ #

Здесь не будут рассматриваться все параметры этой команды, но вы можете сами прочитать подробности, запустив htpasswd в unix shell , или ознакомившись с соответствующей страницей документации по Apache.

Итак, изначально у нас еще нет файла с паролями и нам нужно его создать:

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

Указывая valid-user , Вы разрешаете доступ всем пользователям, перечисленным в файле паролей.

Приведем пример для доступа определенных пользователей из файла с паролями .htpasswd


AuthName "Protected area, need authorization " AuthType Basic AuthUserFile /home/t/test/.authfile require valid-user

Следует помнить, что при таком ограничении доступа пароли передаются по каналам связи в открытом виде и при определенных обстоятельствах могут быть перехвачены злоумышленниками. Поэтому в целях безопасности рекомендуется организовывать доступ к закрытым областям веб-сайта через защищенное SSL-соединение .



Загрузка...