.htaccess (от. англ. hypertext access) — файл дополнительной конфигурации веб-сервера Apache, а также подобных ему серверов. Позволяет задавать большое количество дополнительных параметров и разрешений для работы веб-сервера в отдельных каталогах (папках), таких как управляемый доступ к каталогам, переназначение типов файлов и т.д., без изменения главного конфигурационного файла.
Файл .htaccess может быть размещён в любом каталоге. Директивы этого файла действуют на все файлы в текущем каталоге и во всех его подкаталогах (если эти директивы не переопределены директивами нижележащих файлов .htaccess).
Для того чтобы эти файлы .htaccess можно было использовать, необходимы соответствующие настройки главного конфигурационного файла (значение директивы AllowOverride должно быть установлено All). Как правило, подавляющее большинство хостеров разрешают использовать свои файлы .htaccess.
.htaccess — это обычный текстовый файл и создается как обычный файл в любом редакторе. Существует небольшая проблема создать .htaccess текстовым редактором, потому что обычно он создает .htaccess как.htaccess.txt. В этом случае достаточно создать файл, загрузить его на сервер и там переименовать в .htaccess.
Знание возможностей конфигурации файла .htaccess необходимо для веб-мастеров для, чтобы улучшить поисковую оптимизацию веб-страницы и повысить безопасность своего сайта. При правильном использовании, конфигурационный файл web-сервера Apache — .htaccess представляет собой очень мощное средство в инструментарии разработчика.
Поставлена задача перенаправлять запросы к поддоменам в каталоги на сервере. Например sub1.example.com нужно переделать в example.com/sub1.
RewriteCond %{HTTP_HOST} !^(www|ftp|mail)\.example\.com RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com RewriteRule (.*) /%1/$1 [L]
Таким образом, любой запрос типа sub1.example.com/foo (кроме www, ftp, mail) будет преобразовываться в example.com/sub1/foo.
Используя .htaccess, можно настроить перенаправление со старого доменного имени на новое. Например:
RewriteEngine On RewriteRule ^(.*)$ http://www.domainname-new.com/$1 [R=301,L]
Перенаправление используется в том случае, если существующий сайт переносится на новое доменное имя. В этом случае любой пользователь, который наберет в адресной строке www.domainname-old.com будет перенаправлен на www.domainname-new.com.
Для редиректа с одной страницы на другую можно использовать следующие настройки (например, изменилась структура сайта, и необходимо чтобы по старым ссылкам можно было попасть на новую версию):
Redirect 301 /company/about.html http://domain.com/company/about/index.html
С помощью файла .htaccess можно управлять доступом к ресурсам сервера.
Для этого ограничения используются директивы
Order,
Allowи
Deny
Устанавливает порядок работы директив
Deny,
Allowи
Order порядок
Где порядок может принимать значения
Deny,Allowили
Allow,DenyПо умолчанию:
Order Deny, Allow
Запрещает доступ определенных клиентов к ресурсам.
Deny from all|host
где
hostможет принимать значения IP адреса или имени хоста.
В отличие от
Denyразрешает доступ определенных клиентов к ресурсам.
Allow from all|host
hostможет принимать значения IP адреса или имени хоста.
Запретить доступ для всех:
Order deny,allow Deny from all
Разрешить доступ для определенных адресов:
Order deny,allow Deny from all Allow from 192.168.1.1 Allow from 172.16.1.1
Запретить доступ с определенных адресов:
Order allow, deny Allow from all Deny from 192.168.1.1 Deny from 172.16.1.1
С помощью .htaccess можно управлять доступом к файлам сервера.
Например, так можно полностью запретить доступ к файлу .htaccess:
# Закрываем доступ к .htaccess <Files .htaccess> Order deny, allow Deny from all </Files>
Также можно разрешать или запрещать доступ к файлам с определенных IP-адресов. Например:
# Открыть доступ для определенного IP <Files config.inc> Order deny, allow Deny from all Allow from 192.168.1.1 </Files> # Закрываем доступ с определенного IP <Files config.inc> Order allow, deny Allof from all Deny from 192.168.1.1 </Files>
С помощью .htaccess можно управлять доступом ко всему сайту. К примеру, если сайт еще в разработке, но его нужно показывать заказчику, да и самому иметь возможность тестировать его на реальном сервере.
<Limit GET POST PUT> Order deny,allow Deny from all Allow from 192.168.1.1 Allow from 172.16.1.1 </Limit>
Вы должны авторизоваться, чтобы оставлять комментарии.
Комментарии ()