Обзор интернета - Lite Веб-мастеру Графика Игры, Спорт Программы Рецепты Время Рождество Библия
Свой сайт Хостинг Облака Домены Ресурсы Формы на сайт Раскрутка
ASCII HTML robots.txt SEO Справка Ссылки

Справка .htaccess

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

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

Генератор .htaccess

.htaccess

Файл .htaccess содержит пользовательские настройки web-сервера и анализируется при каждом запросе на сервер.
На виртуальном хостинге чаще всего используется для:
  • паролирования директорий,
  • переадресации страниц,
  • настройки собственных страниц ошибок,
  • определения кодировки,
  • запреты и разрешения,
  • и др.
Это гибкая настройка веб-сервера Апач.
С помощью него можно переопределить многие директивы из файла httpd.conf (главный конфигурационный файл сервера Апач).
Если файл .htaccess расположен в корневой директории сервера, то его действия распространяется на весь сервер, кроме тех папок, где находится другой файл .htaccess.

Редактор

Создать файлы .htaccess можно в Блокноте или встроенном редакторе Far, WindowsCommander, TotalCommander.
Я его редактирую с Notepad++ или Akelpad, которые использую для написания этого сайта.

Кодировка

Как выставить русскую кодировку.

AddDefaultCharset utf-8

Определение кодировки на определенные типы файлов

AddType "text/html; charset=koi8-r" .html .htm .shtm

Определение кодировки на загружаемые файлы

CharsetSourceEnc utf-8

Отключение перекодировки

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

CharsetRecodeMultipartForms off

<FilesMatch "\.(htm|html|css|js)$">
AddDefaultCharset UTF-8
</FilesMatch>

Назначение стартовой страницы.

DirectoryIndex index.html

Можно указывать несколько страниц.

DirectoryIndex index.html index.php index.shtml map.html

При запросе каталога они будут искаться в том порядке, в котором перечислены в директиве DirectoryIndex. Если не будет найден файл index.html, то будет произведен поиск файла index.php и т.д.

Разрешение/запрет

разрешить доступ с определенного ip.

order allow deny
deny from all
allow from 000.000.000.000

запретить доступ с определенного ip.

order allow deny
allow from all
deny from 000.000.000.000

запретить просмотр всем.

deny from all

разрешить просмотр всем.

allow from all

Запретить доступ к определенному файлу.

<Files config.php>
deny from all
</Files>

Запретить доступ к файлам с определенным расширением.

<Files "*.conf">
deny from all
</Files>

Запретить доступ к файлам нескольких расширений.

<Files "\.(inc|conf|cfg)$">
deny from all
</Files>

? - любой одиночный символ
* - любая последовательность символов, исключая символ / (слеш).

Тонкая настройка доступа.

Есть каталог a1 и в нем два вложенных каталога a2, a3, введено 2 уровня пользователей. 1 группа имеет доступ только к a1 и a2, 2-я ко всем трем каталогам. Необходимо проводить аутентификацию только 1 раз - при доступе к a1, но при этом соблюдать права на доступ к а2 и а3.
Ник и пароль запрашиваются только при входе на а1 - если у юзера есть доступ на а2 пароль уже не запрашивается. Если на а3 доступа нет, вылетит табличка "введите пароль".

www.site.ru/a1
www.site.ru/a1/а2
www.site.ru/a1/a3
a1 - общий и вместе с тем закрытый. а2 и а3 только для отдельных личностей.

файл .htaccess для каталога а1:

AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/login/htdocs/clousearea/.htpasswd"
<Files *.*>
require valid-user
</Files>


файл .htaccess для каталога а2:

AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/login/htdocs/clousearea/.htpasswd"
<Files *.*>
require user юзер1 юзер2 юзер3
</Files *.*>

файл .htaccess для каталога а3:

AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/абв/htdocs/clousearea/.htpasswd"
<Files *.*>
require user юзер1 юзер4 юзер5
</Files *.*>

Перенаправление (редирект)

Пути к файлам и директориям должны указываться от корня сервера, например, /pub/home/server1/html/
В именах доменов обязательно должны быть указаны протоколы (http://, http://, ftp://)

Если вы не знаете путь от корня сервера, то Вы можете его узнать, спросив у администратора сервера, либо можете посмотреть сами, запустив на сайте функцию PHP - phpinfo(). Она выведет на экран конфигурацию PHP в виде фиолетовых таблиц. В них Вам необходимо найти переменную doc_root и посмотреть ее значение - это будет путь от корня сервера до вашей основной директории.

Перенаправление (редирект) только при запросе определенных страниц.

Redirect /location/from/root/file.ext http://www.serv.ru/new/file/location.xyz

/location/from/root/file.ext - это путь до корневого файла (до нужного файла).

www.serv.ru/new/file/location.xyz это место, куда попадет пользователь сделав запрос на файл file.txt.

Если файл лежит в корневом каталоге, то вместо location/from/root/ можно сразу поставить:

/oldfile.html

ну и если файл в субкаталоге, то будет выглядеть так:

/old/oldfile.html

Редирект на папку (напр. папка oldfolder).

Redirect /oldfolder http://www.serv.ru/newfolder

запрос на www.oldserv.ru/oldfolder/images/smile.gif,
попадет на www.serv.ru/newfolder/images/smile.gif.

Глобальное перенаправление (редирект) на другой адрес. Redirect / http://www.newsite.ru

Перенаправление (редирект) только посетителей с определенным IP-адресом.

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

Убираем WWW

Дело в том, что люди могут набирать адрес вашего сайта по-привычке с WWW. или экономя время без WWW.
Для Яндекса и Google http://your-site.com и http://www.your-site.com - разные сайты. И у вас, как следствие будет заниженный индекс цитирования.

Это решается следующим кодом.

Если вы хотите, чтобы ваш адрес был всегда с WWW. (привычнее), то код:

RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^your-site.com$
RewriteRule ^(.*)$ http://www.your-site.com/$1 [R=301,L]

Вместо your-site.com пишем свой адрес.

Пароль

Защита паролем.

AuthName "Section Name" AuthType Basic AuthUserFile /full/path/to/.htpasswd Require valid-user

Вам надо изменить для своего сайта. Например, поменять Section Name на своё название (к примеру - Members area).

/full/path/to/.htpasswd - полный путь до файла .htapasswd (об этом чуть позже).

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

Файл .htpasswd

Чтобы защитить директорию паролем, надо создать файл содержащий логины и пароли, которым разрешено будет посещать сайт. И вписать в файл .htpasswd.

Создание имен пользователей и паролей.

Вписываем имена пользователей и пароли след. образом:

username:password

пароль (password) зашифрованная версия пароля.
Чтобы зашифровать .htpasswd файл, вам нужно будет воспользоваться готовым скриптом, или самому написать его. Если вам нужно несколько пользователей, то пишите построчно их.

Как только вы заходите в защищенную паролем директорию, у вас всплывет pop-up окно для ввода логина и пароль. А можно просто вписать в поле адреса:

username:password@www.serv.ru/directory

Ускоряем сайт с помощью gzip

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

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

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml
application/xhtml+xml text/JavaScript text/css application/x-JavaScript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html

Как заставить Апач обрабатывать SSI директивы?

SSI позволяют "собирать" страницу из кусочков. В одном кусочке у вас код меню, в другом код верхней части страницы, в третьем - нижней. А посетитель видеть обычную страницу, которая состоит из того кода, который входит в ваши кусочки. Необходимы обязательные установки в httpd.conf:
В блоке, начинающемся с <Directory/> и заканчивающийся </Directory> в строку Options Indexes добавьте Includes.
и после, в файле .htaccess пишем:

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

Чтобы пользователь не видел список файлов в папке, при отсутствии в ней индексного файла, добавим строчку:

Options -Indexes

Выполнение php кода в файлах с другим расширением.

Иногда бывает полезно "обмануть" посетителя, выдавая ему свои php-скрипты или иные файлы, как html файлы. Реально используется для индексации поисковой системой Rambler php-скриптов.

RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml

Заметьте, так как файлам с расширением .html и .htm сопоставлено, что это файлы с гипертекстовой разметкой, то мы первой строкой убираем это сопоставление и добавляем обработку таких файлов php интерпретатором.

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

Error 404 ...

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

web-studio Ph4

Можно создать специальный файл, где будут ссылки на ваш сайт, а не на хостера. Назвать его 404.html и поместить в корневую директорию.
Величина страницы с ошибкой должна быть больше 511 байтов, иначе Internet Explorer может показать собственную страницу с описанием ошибки.

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

Можно указать другой файл, который автоматически откроется при появлении ошибки.
Карта сайта - является идеальным файлом для обработки ошибки error 404 (файл не найден).

ErrorDocument 404 /map.html

register_globals

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

php_flag register_globals on

Или php_flag register_globals off если вы хотите отключить.

ПРИНУДИТЕЛЬНАЯ ЗАКАЧКА ОПРЕДЕЛЕННЫХ ФАЙЛОВ

Можно некоторые файлы (MP3, EPS, XLS ...), предназначенные для скачивания принудительно скачивать, а не позволить браузеру решить, что делать. То есть, принять решение за него.
Этот фрагмент кода заставит загрузку и .xls файлы .eps с вашего сервера.

<Files *.xls>
   ForceType application/octet-stream
   Header set Content-Disposition attachment
</Files>
<Files *.eps>
   ForceType application/octet-stream
   Header set Content-Disposition attachment
</Files>

ЗАЩИТА ОТ ХОТЛИНКОВ

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

SetEnvIfNoCase Referer "^http://www.test.com" local_ref=1
SetEnvIfNoCase Referer "^http://test.com" local_ref=1
<FilesMatch ".(gif|jpg)>
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>

Другой вариант:

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.quux-corp.de/~quux/.*$ [NC]
RewriteRule .*\.(gif|jpg)$ - [F]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !.*/foo-with-gif\.html$
RewriteRule ^inlined-in-foo\.(gif|jpg)$ - [F]

Еще вариант:

RewriteEngine On
#Replace ?mysite\.com/ with your blog url
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
#Replace /images/nohotlink.jpg with your "don't hotlink" image url
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

Веб мастеру Учебники-справочники

CHMOD ERROR - таблица кодов возврата 404 МЕТА-теги CSS MySQL шпаргалки robots.txt Защита от авто-заполнения форм Redirect Валидность
Софт
Web soft Лучшие веб-утилиты Онлайновые WYSIWYG WAP софт
Favicon
Favicon Редакторы иконок Генераторы иконок онлайн Генератор иконок для смартфонов онлайн
RSS
RSS Примеры RSS Пример Atom-документа