По теме:
1. Как создать «.htaccess» файл
Знакомство с файлом .htaccess. Описание, возможности и настройки файла .htaccess
.htaccess (с точкой в начале имени) – это файл, который предназначен для настройки работы сервера в отдельных директориях.
С файлом «.htaccess», мы можем устанавливать права доступа к файлам в директории, самостоятельно обрабатывать ошибки Apache, , менять названия индексных файлов, перенаправлять посетителей на специальные страницы ошибок 404, перенаправлять посетителя на другой сайт и многое др.
Давайте рассмотрим возможности файла .htaccess
-
открыть или закрыть доступ к каталогам без индексного файла;
-
запаролить директорию – ограничить доступ по логину – паролю (htpasswd);
-
закрыть внешние ссылки (с других сайтов) на архивы;
-
запретить доступ к файлам определенного формата, или доступ к сайту в определенный промежуток времени;
-
запретить или открыть доступ по IP адресов;
-
сменить или добавить еще несколько новых названий индексного файла;
-
включить по мере необходимости проверку в страницах определенного формата – типа на наличии SSI, Perl, PHP и др. включений – директив;
-
сделать редерикты (Redirect) –перенаправления пользователя на другую страницу;
-
управлять на сайте роботами поисковых систем;
-
перенести сайт на новый домен – смена домена;
-
использовать свои собственные страницы ошибок, например,
401 Authorization Required – Требуется авторизация
403 Forbidden – Доступ запрещен
404 Not Found – Документ не найден
500 Internal Server Error – Ошибка в работе сервера -
при необходимости сменить кодировку страниц отправляемых web — сервером посетителям;
-
запретить или нужным образом настроить кэширование веб сервера;
Теперь давайте перейдём к основной и практической части — это настройка самого файла «.htaccess». Найдите на хостинге в корне вашего сайта файл «.htaccess», если у вас его нет, значит создайте. Файл «.htaccess» можно создать в течение нескольких секунд. Перейдите по ссылке, создавайте файл «.htaccess» и возвращайтесь назад к настройкам.
Будем считать, что вы создали файл «.htaccess» или он уже был у вас на хостинге. Можем начинать настройку «.htaccess».
Настройка .htaccess
Примеры использования .htaccess
Глобальное перенаправление (редирект) на другой адрес:
Redirect / http://earning-online.org
Перенаправление (редирект) только при запросе определенных страниц:
redirect /company http://earning-online.org/newcompany
redirect /forum http://earning-online.org/newforum
При запросе страниц из каталогов company и forum будет произведено перенаправление на новые адреса newcompany и newforum.
Перенаправление (редирект) только посетителей с определенным IP-адресом:
SetEnvIf REMOTE_ADDR 199.199.199.9 REDIR=»redir»
RewriteCond %{REDIR} redir
RewriteRule ^/$ /only.html
Если посетитель имеет IP-адрес 199.199.199.9, то ему будет открыта страница «only.html».
Изменение названия индексной страницы:
DirectoryIndex index.html index.php index.shtml
Можно указать несколько индексных страниц. При запросе каталога они будут искаться в том порядке, в котором перечислены в директиве DirectoryIndex. Если не будет найден файл index.html, то будет произведен поиск файла index.php и т.д. Это удобно, если вы поменяли расширение index файла.
Выполнять код PHP в файлах HTML
RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml
Добавив эти строки в .htaccess вы дадите директиву серверу выполнять инструкции PHP не только в файлах с расширением *.php и *.phtml, но и в файлах с расширением *.htm и *.html.
Обработка ошибок Apache
ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
При возникновении этих ошибок посетитель будет перенаправлен на специально созданные страницы ошибок (файлы). Только вам нужно создать эти страницы.
• 401 ошибка — Требуется авторизация (Authorization Required).
• 403 ошибка — пользователь не прошел аутентификацию, доступ запрещен (Forbided).
• 404 ошибка — Документ не найден (Not Found).
• 500 ошибка — Внутренняя ошибка сервера (Internal Server Error).
Запрет на отображение листинга каталога при отсутствии индексного файла
Options –Indexes
Разрешить отображение листинга каталога
Options +Indexes
Определение кодировки, в которой сервер выдает файлы браузеру
AddDefaultCharset windows-1251
Определение кодировки на загружаемые файлы
CharsetSourceEnc windows-1251
Запрет доступа ко всем файлам
deny from all
Запрещен доступ ко всем файлам в текущей директории.
Запретить доступ с определенного IP-адреса
deny from 199.199.299.79
Запретить доступ к определенному файлу
<Files config.php>
deny from all
</Files>
Запрещен доступ посетителей к файлам config.php.
Запретить доступ к файлам с определенным расширением
<Files «*.conf»>
deny from all
</Files>
Здесь запрещен доступ к файлам с расширением *.conf.
Запретить доступа к файлам с несколькими типа расширений
<Files ~ «\.(inc|conf|cfg)$»>
deny from all
</Files>
Запрещен доступ к файлам с расширением *.inc, *.conf и *.cfg.
Установка пароля на директорию
AuthName «Admin page»
AuthType Basic
AuthUserFile /www/account_name/.pass
require valid-user
Файл с вышеприведенными директивами следует положить в защищаемую директорию. В директиве AuthUserFile прописывается путь к файлу, содержащему шифрованные пароли.
Редирект на перемещенные или переименованные страницы.
Если вы переименовали или переместили некоторые страницы на сайте и хотите, чтобы посетители увидели уже новые страницы, даже если они обращаются по старому адресу, следует в файл htaccess прописать следующий код:
Redirect 301 /olld.html http://site.com/new.html
Также вы можете использовать такой редирект для того, чтобы страница не потерялась для поисковиков.
Запрет обращений к .htaccess
Защитить их можно следующим образом, однако, это по умолчанию уже есть в httpd(2).conf, то есть в самой конфигурациии веб-сервера.
<Files ~ «^\.ht»>
Order allow,deny
Deny from all
</Files>
Запрет прямых ссылок на ресурсы
Например, некий сайт размещает у себя изображение, находящееся на Вашем сайте, просто указав его в тэге <img src>. При этом все обращения к такой странице вызовут скачивание данного изображения с Вашего сайта; таким образом, будет расходоваться Ваш траффик и пропускная способность канала сервера, а посетители чужого веб-сайта увидят изображение, хранящееся у Вас, без соответствующего контекста.
Как же бороться с подобной практикой?
Рассмотрим следующий пример части файла .htaccess:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC]
RewriteRule \.(js|css)$ — [F]
Данный код запрещает обращения к .js и .css файлам (скрипты javascript и описания Cascading Style Sheets), если они производятся не с Вашего сайта.
Другой пример:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC]
RewriteRule\.(png|gif|jpg|jpeg)$ http://www.mydomain.com/youaretheworst.gif [R,L]
При обращении извне к изображениям, хранящимся на вашем сайте, вместо самих изображений будет отображаться содержимое файла youaretheworst.gif
Внимание: если браузер выдаёт «ОШИБКА 500», после загрузки файла .htaccess на сервер, это значит что:
1 — неверный синтаксис .htaccess
2 — файл .htaccess записан в формате Windows, а должен быть записан в формате UNIX.
Если вы не поняли, о чём сейчас идёт речь, перечитайте статью
«Как создать .htaccess файл»