Как сделать портфолио в фотошопе 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
Запрет доступа к файлу:
Защита директории с помощью пароля:
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, которая оговаривает пределы действия правила по названию файла, используя регулярные выражения. С ее помощью, например, можно запретить доступ к определенным файлам:
Есть некоторые директивы, которые не поддерживаются на наших серверах с виртуальным хостингом, но вы можете их разрешить на своем ВПС, например.
Причина в том, что работающий как 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 для домена. В качестве примера:
— название файла дополнительной конфигурации указано как Вам нужно. Если это.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 при хостинге сайтов под управлением сервера 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
предоставляют пользователю широкий выбор возможностей по настройке своего сайта,
среди которых:
|
Список всех доступных директив можно посмотреть .
Описываются предпочтения клиента относительно типа документа.
IP-адрес посетителя.
Адрес посетителя в нормальной форме - например, rt99.net.ru
.
Имя удаленного пользователя. Имеет формат имя.хост, например, kondr.www.rtt99.net.ru
Тоже, что и REMOTE_IDENT, но содержит только имя. Пример: kondr
Позволяет определить тип запроса (GET или POST). Должен обязательно анализироваться, т.к.
определяет дальнейший способ обработки информации.
Полный путь к веб-странице на сервере.
Содержит в себе все, что передавалось в скрипт.
Содержит строчку, переданную в качестве запроса при вызове CGI
скрипта.
Используется для идентификации пользователя
Cодержит путь к корневой директории сервера.
Почтовый адрес владельца сервера, указанный при установке.
IP-адрес вашего сайта.
Порт, на котором работает Apache.
Версия HTTP
протокола.
Название сервера, например, Apache/1.3.2 (Unix)
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
TIME
Переменные, предназначеные для работы со временем в разных форматах.
Это версия API
модуля Apache
(внутренний интерфейс между сервером и модулем) в
текущей сборке сервера, что определено в include/ap_mmn.h
.
Полная строка HTTP
-запроса, отправленная браузером серверу (т.е., «GET /index.html
HTTP/1.1»
).
Она не включает какие-либо дополнительные заголовки отправляемые браузером.
Ресурс, запрошенный в строке HTTP-запроса.
Полный путь в файловой системе сервера к файлу или скрипту, соответствующему этому запросу.
Условие - это шаблон условия, т.е. какое-либо регулярное выражение, применяемое к текущему экземпляру
"Сравниваемая Строка", т.е. "Сравниваемая Строка" просматривается на поиск соответствия Условию.
Помните, что Условие это 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]"
Этот флаг не даёт mod_rewrite
применять обычные правила экранирования URI
к результату
преобразования.
Обычно, специальные символы (такие как "%", "$", ";", и так далее) будут экранированы их шестнадцатиричными
подстановками ("%25", "%24", и "%3B", соответственно); этот флаг не дает это делать.
(не экранировать URI при выводе)
Если в подкаталогах в .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
|
Следует помнить, что при таком ограничении доступа пароли передаются по каналам связи в открытом виде и при определенных обстоятельствах могут быть перехвачены злоумышленниками. Поэтому в целях безопасности рекомендуется организовывать доступ к закрытым областям веб-сайта через защищенное SSL-соединение .