Примеры htaccess 8 изумительных примеров .htaccess файлов


Содержание

Как написать .htaccess файл для сайта

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

Таки образом apache предоставляет нам удобный инструмент конфигурации на уровне директорий сайта. Это расширяет наши возможности так как не все настройки удобно делать на глобальному уровне и на уровне виртуального хоста. Так же на хостингах, владелец сайта, как правило, не имеет возможности выполнять настройки apache на глобальном уровне и на уровне виртуального хоста, но у него может быть возможность задать требуемые настройки на уровне каталогов сайта. Для того что бы apache принимал и исполнял директивы из файлов .htaccess каталогов сайта нужно, что бы на глобальном уровне или на уровне виртуального хоста apache это было разрешено для сайта.

Делается это разрешение при помощи следующего блока кода:

Здесь в теге указывается физический путь на сервере до корня вашего сайта, и внутри тега указывается директива AllowOverride. Эта директива может быть установлена в None, чтобы сервер не читал файл .htaccess. Если она установлена в All — сервер будет допускать все директивы .htaccess файла. Значение по умолчанию: AllowOverride All.

Теперь пару слов о названии файла .htaccess. Этот файл может называться и по другому, и это тоже устанавливается в глобальном конфиге apache директивой AccessFileName. По умолчанию эта директива установлена в конфиге как AccessFileName .htaccess, и это значение обычно никто не меняет, но вы должны знать, что изменить его на другое возможно.

Синтаксис файлов .htaccess в общем случае аналогичен синтаксису главного файла конфигурации apache. Однако, администратор может ограничивать для пользователей доступ к тем или иным директивам. То есть, несмотря на то, что команда, в принципе, может исполняться из .htaccess, администратор может запретить доступ к конкретной директиве. Учитывайте это при работе. Также хочу заметить такой момент, когда вы пишите директивы работающие с каталогами? то в главных конфигурационных файлах apache их нужно оборачивать в тег с указанием каталога к которому они применимы, однако при написании этих директив в .htaccess файле уже не нужно их оборачивать в тег , если вы хотите что бы они применялись к текущему каталогу файла .htaccess, если же вы хотите применить их только к вложенному каталогу то тогда, опять же, нужно обернуть в тег .

Для чего мы можем использовать .htaccess файл. Вариантов здесь немало, вот самые распространенные из них:
1.Для управления разрешениями на доступы к каталогам сайта (запаролить директорию, запретить доступ к файлам определенного формата, или доступ к сайту в определенный промежуток времени, запретить или открыть доступ с определенных IP адресов, управлять роботами поисковиков)
2.Для перезаписи текущего URL на новый в зависимости от условий (см. также описание mod_rewrite сервера Apache и логику его обработки правил )
3.Для явного указания кодировки сайта.
4.Для разрешения или запрета просмотра файлов сайта
5.Для защиты от хотлинка
6.Для выполнения ридирктов
7.Для задания своих страниц ошибок
8.Для переопределения индексного файла
9…. и многое другое.

Давайте для примера напишем некий обобщенный файл .htaccess.
В него мы соберем наиболее распространенные случаи использования директив и добавим к ним комментарии. И из этого шаблона путем удаления не нужного вы сможете всегда подготовить конкретный .htaccess для ваших задач. Здесь символ # — это символ комментария применяемый в конфигах apache.

Расшифрую некоторые флаги из директив:

  • RewriteCond . [NC] — NC значит регистр нечувствительное сравнение выполнять
  • RewriteCond . [NC,OR] — NC см. выше, OR — значит объединять RewriteCond через OR, по умолчанию если ничего не указана то RewriteCond объединяются через AND оператор.
  • RewriteRule . [L] — L значит закончить (остановить обработку) на этом RewriteRule правиле любые дальнейшие преобразования URL, т.е. последующие RewriteRule не выполнять.
  • RewriteRule . [L,R=302] — L см. выше, R=302 значит выполнить редирект с кодом 302 на преобразованный URL
  • RewriteRule . [R=301,QSA,L] — L и R см. выше, QSA — при преобразовании URL выполнять при стыковку заданных частей, а не замену.
  • RewriteRule . [F] — F, значит отказать в выдачи результата по этому URL кодом 403 Forbidden .
  • RewriteRule . — [G,L] G|Gone — [G] flag значит отдать код 410Gone status — рекомендация забыть этот URL

AuthUserFile — задает путь к файлу с паролями для http авторизации пользователя. Путь может быть абсолютный от корня файловой системы Linux сервера или относительный от ServerRoot apache. В Ubuntu ServerRoot «/etc/apache2» по умолчанию. При задании относительного пути от ServerRoot apache начальный слеш в пути не указывается, иначе путь будет восприниматься как абсолютный от корня Linux. Также, если путь содержит недопустимые символы и пробелы его нужно заключать в кавычки, это общее правило.

Order, Deny, Allow

Теперь еще раз, но уже более детально, хотелось бы вернуться к директивам управление доступом: Order, Deny, Allow и более детально описать ее синтаксис и логику.

Директива Order синтаксис: Order [Deny,Allow] или [Allow,Deny]

По умолчанию директива Order имеет порядок: Deny,Allow. Обратите внимание, что Deny,Allow пишутся без пробела.

В зависимости от того в каком порядке указаны директивы Deny,Allow или Allow,Deny меняется логика работы.

Если Deny,Allow то запрещается доступ со всех IP кроме указанных, если Allow,Deny разрешается доступ со всех IP кроме оговоренных. Далее идут секции описания для доступа и запрета. Ключевое слово all означает со всех IP.

Например, что бы запретить (блокировать) доступ с IP x.x.x.x и x.x.x.xx и разрешить доступ всем остальным необходимо добавить в .htaccess следующий код:

# Разрешить ВСЕМ кроме указанных IP
Order Allow,Deny
Allow from all
Deny from x.x.x.x x.x.x.xx

Обратите внимание что IP записаны через пробел. Можно также указать IP как IP/маска.

Для обратной ситуации, что бы запретить доступ со всех IP кроме x.x.x.x и x.x.x.xx нам необходимо добавить в .htaccess следующий код:

# Запретить ВСЕМ кроме указанных IP
Order Deny,Allow
Deny from all
Allow from x.x.x.x x.x.x.xx

Запрет или разрешение можно указывать и на отдельный файл или группы файлов. Например, что бы запретить доступ всех кроме IP x.x.x.x к файлу passwd.html, который расположен в текущей директории.

# Запретить файл passwd.html ВСЕМ кроме указанных IP

Order Deny,Allow
Deny from all
Allow from x.x.x.x

Аналогично можно запретить или разрешить доступ к определенной группе файлов описав их через регулярное выражение. Например, к файлам с расширением «.key»:

# Запретить файлы *.key ВСЕМ кроме указанных IP

Order Deny,Allow
Deny from all
Allow from x.x.x.x

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

htaccess: изумительные примеры файлов htaccess

.htaccess файлы применяются для настройки сервера Apache, и других веб-серверов. Вскоре вы сможете увидеть примеры применения .htaccess файлов.

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

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

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

Файлы .htaccess поддерживают тот же формат, что и прочие основные конфигурационные файлы. Множество настроек, которые установлены быть при помощи конфигурационных файлов, также могут устанавливаться при помощи .htaccess файлов, и наоборот.

Настройки установленные в файле .htaccess отменяют такие в конфигурационных файлах директории, где они находятся, а также полностью для всех подпапок.

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

А теперь подробнее об использовании .htaccess файлов.

.htaccess редирект

.htaccess редирект — один из самых популярных способов применения данных файлов. Это помогает в реорганизации всей файловой структуры интернет-сайта. Увидеть .htaccess редирект на примере, можете ниже:

Redirect 301 ^old.html$ http://localhost/new.html

Это изменяет HTTP-заголовок ответа на 301 и перенаправляет запросы из old.html на new.html. Мы применяем регулярные выражения для определения URL для .htaccess редирект, дающие возможность выбирать лишь необходимые URL для перенаправления. Можно также вставлять полный URL адрес, однако это уже ручная работа.

Пример .htaccess rewrite

В переводе с английского языка, rewrite означает – переписать. Можно переписывать текущий URL страниц сайта для более простого восприятия, или как в народе говорят: «для создания ЧПУ». Что сейчас довольно распространено.

  1. RewriteEngine on
    RewriteRule ^old\.html $ new .html
  2. RewriteRule ^old\.html$ http://hostname/new.html [r=301]
  3. RewriteRule ^products/([^/]+)/([^/]+)/([^/ ]+) product.php?cat=$1&brand=$2& prod=$3

Создание своей собственной 404 страницы с помощью .htaccess

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

ErrorDocument 404 «;/404.html»;

Запрещение доступа к конкретным ресурсам с помощью .htaccess

Применяя .htaccess файл, можно с легкостью установить пароль на использование директории или файла, как для всех пользователей, так и каких-то отдельных доменов или IP-адресов.

AuthName «;Username and password required»;
AuthUserFile /path/to/.htpasswd
Require valid-user
AuthType Basic

Блокирование доступа определенных IP, user-agent с помощью .htaccess

Еще одно применение файла .htaccess, это простое и быстрое блокирование всех запросов от определенных IP-адресов или user-agent. Для подобного блокирования конкретных IP-адресов с помощью .htaccess нужно лишь указать ряд директив.

order allow,deny
deny from 192.168.0.1
allow from all

.htaccess кэширование

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

ExpiresActive on
ExpiresByType image/gif «;access plus 1 month»;
ExpiresByType image/png «;access plus 1 month»;
ExpiresByType image/jpg «;access plus 1 month»;
ExpiresByType image/jpeg «;access plus 1 month»;
ExpiresByType video/ogg «;access plus 1 month»;
ExpiresByType audio/ogg «;access plus 1 month»;
ExpiresByType video/mp4 «;access plus 1 month»;
ExpiresByType video/webm «;access plus 1 month»;

Сжатия с помощью .htaccess

Еще одно очень полезное использование .htaccess, это возможность существенного сжатия некоторых типов.

FilterDeclare COMPRESS
FilterProv > FilterProv > FilterProv > FilterChain COMPRESS
FilterProtocol COMPRESS DEFLATE change=yes;byteranges=no

Эти сжатия работают полноценно на серверах Apache 2.1 или выше, которые применяют специальный модуль mod_filter. Данный модуль применяет алгоритм сжатия DEFLATE, основанный на указании content-type.

301 Редирект .htaccess — полный обзор с примерами

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

Самый главный файл .htaccess располагается в корне сайта:

Его действия распространяются на текущий каталог и на все вложенные каталоги. Т.е. у владельцев сайтов есть возможность воздействовать только на работу своего проекта, не мешая работе всего сервера. Если этот файл отсутствует, то его можно создать с помощью любого блокнота. Главное, чтобы название файла было «.htaccess» — без форматов .txt, .doc и т.д.

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

Чуть ниже мы рассмотрим все распространенные варианты редиректов через .htaccess , а для начала ознакомимся с опциями и правилами.

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

Разместите эти строки в самом верху файла .htaccess , чтобы иметь возможность работать с директивами модуля mod_write.

Также на хостинге должны быть включены модули mod_alias (для поддержки Redirect, RedirectPermanent и RedirectMatch).

1. Правила Redirect, RewriteRule и RewriteCond

1.1. Директива Redirect

Redirect устанавливает прямой редирект с одной страницы на другую.

В status пишут код редиректа. Является необязательным параметром. Чаще всего пишут 301, что сигнализирует о постоянном смене адреса страницы.

Важно, чтобы страница «откуда» была прописана в формате без указания полного адреса сайта, но с указанием полного относительного адреса URL начиная со слэша «/» (т.е. с корня сайта). Страницу куда идет редирект нужно писать полностью, т.е. абсолютный адрес страницы URL (т.е. с названием домена и протокола http или https).

Можно также писать по другому

1.2. Директива RewriteRule

Директива RewriteRule устанавливает правила перехода. Синтаксис следующий:

  • При внешнем редиректе меняется урл адреса в строке браузера — » [R=301,L] «
  • При внутреннем — не меняет урл адреса в строке браузера — » [R=301] » или » [L] «

1.3. Директива RewriteCond

Директива RewriteCond определяет условия при котором выполняется правила в RewriteRule.

Например, этими условиями могут быть браузер пользователя, IP-адрес, заголовок и т.д.

1.4. Директива RedirectMatch

Директива RedirectMatch аналогична Redirect с той лишь разницей, что позволяет записывать регулярные выражения.

2. Примеры 301 редиректов в .htaccess

Мы уже рассматривали множество примеров с редиректом по .htaccess в статьях:

Здесь мы дополним варианты редиректов, которых еще не было.

2.1. Редирект с одной страницы на другую

Редирект с site.ru/cat/oldpage на site.ru/newpage.html

Или второй вариант:

2.2. Редирект со всех файлов .htm на .html

Или второй вариант:

2.3. Редирект всего каталога на другую страницу

С любой страницы в каталоге и подкаталогах /old/ будет происходит редирект на /new.php

2.4. Удаление лишних слэшей в адресе URL

Например, страница /catalog///stranica.html доступна и открывается. Чтобы избежать такой ситуации и не плодить бесконечное число дублей следует записать следующий редирект

Илон Маск рекомендует:  Атрибут colspan в HTML

2.5. Реврайт без редиректа

Можно загрузить другую страницу без смены адреса страницы URL. Например, загрузим страницу /news.html , а в адресной строке будет отображаться адрес /news/happy

2.6. Простановка замыкающего слеша в конце адреса главной страница

Например, многие сервера работают так, что последний слэш не пишется в URL. Например, http://site.ru . Ниже приведенный код решают это проблему: сайт будет открывать по http://site.ru/

2.7. Удаляем директорию каталога из URL

Например для редиректа со страницы site.com/directoriya/stranica.html на site.com/stranica.html нужно прописать следующее:

Или второй вариант:

2.8. Редирект GET параметров

Например, сделать редирект со страницы /?act=page& > на /page-2/

2.9. Редирект на мобильную версию сайта m.site.ru

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

2.10. Редирект с поддомена

Например, выполним редирект с любой страницы поддомена poddomen.site.ru на основной домен site.ru

3.Другие примеры с htaccess

3.1. Запретить IP-адрес и браузер

Запретим открывать сайт для пользователя с браузера IE с IP-адресом 172.111.222.55

3.2. Запретить конкретный файл

Запретим для всех файл disable_file.html :

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

Доступ будет разрешен только с одного ip-адреса 172.111.222.55

3.4. Запретить доступ с разных ip

Запретить доступ к сайту с нескольких ip-адреса 172.112.222.55, 172.113.222.55, 172.114.*.*

3.5. Редирект в URL с больших символов на маленькие

Все большие буквы в адресе URL будут переведены на маленькие.

.htaccess примеры

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

Частые ошибки:

  • Создал файл .htaccess, но сервер выдает 500 ошибку — Internal Erorr

  • На заре интернета и зарождения браузеров, часто была ситуация, что браузер не мог автоматически определить, в какой из русских кодировок написан документ и в браузер выдавалась какая-то каша. Для избежания этого указываем, что все отдаваемые страницы будут иметь кодировку windows-1251:
    AddDefaultCharset windows-1251

    Можно ли указать кодировку на загружаемые файлы?

    При загрузке посетителем файла на сервер, возможна перекодировка его — указываем, что все получаемые файлы будут иметь кодировку windows-1251:
    CharsetSourceEnc windows-1251

    Создал файл .htaccess, но сервер выдает 500 ошибку — Internal Erorr

    Ошибка синтаксиса или файл записан не в том формате.
    Смотрите вопрос #2.

    Vavik 96

    Интернет дайджест для вебмастеров и фотографов

    Пример настройки файла htaccess

    Примеры записей в htaccess: Индексный файл, Редирект с сохранением рейтинга страницы, Склеивание www и http, Создание ЧПУ или ЧеловекуПонятныхУрлов, Редирект всех файлов папки на один файл, Защита от хотлинков, Определение кодировки и многое другое!

    Указываем индексный файл (который первым открывает при обращении к сайту)

    Можно указать один или несколько файлов

    Редирект htaccess

    Глобальный редирект(первый /) ВСЁ пересылаем на новый адрес http://www.newsite.ru/

    Все обращения к katalog переадресуем на домен newsite.ru в раздел newkatalog

    Редирект с сохранением рейтинга страницы

    old – пример пути старой страницы. new – пример пути новой страницы.

    Редирект пользователя с конкретным ip

    Конкретного пользователя (надоел он или нужно его переслать на внутренний раздел) с данным ip пересылает на страницу /out.html

    Склеивание адреса с www и без www

    Уже многим SEO (продвижение и оптимизация) известно, что для Поисковых Систем адреса с/без www – это разные адреса и доступность сайта с www отрицательно влияет на индексацию и ранжирование. Поэтому зачастую SEO просят разработчиков склеить сайт без www (чтобы при обращении к сайту с www происходила пересылка на без www, т.е. только http)

    Теперь даже если Вы наберёте в адресной строке www.yoursite.ru, то сервер перешлёт Вас на http://yoursite.ru

    Создание ЧПУ или Человеко-Понятных-Урлов

    После добавления данной строки в .htaccess будут доступны два адреса для документа. Например: www.yoursite.ru/article.php? >

    В результате www.yoursite.ru/art.php?type=123 превращается в www.yoursite.ru/cat/type/123/:

    Вот ещё частные варианты:

    Статья с технически адресом www.yoursite.ru/article.php? >

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

    Например вы больше не нуждаетесь в разделе сайта articles и хотите перенаправить все запросы к папке /articles на один файл /non-articles.php. Поможет код ниже

    Защита от хотлинков

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

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

    Дополнительные варианты самых популярных кодировок: UTF-8, Windows-1251, KOI8-R. В примерах рассмотрим самую распространённую UTF-8

    Создание своих страниц ошибок

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

    Видов ошибок на самом деле больше. Можете создать дополнительно и для них записи, опираясь на весь список

    Запрещаем доступ

    Скорее всего Вы столкнётесь с тем, что часть файлов и директорий надо будет закрыть от общего доступа.

    Закрываем от всех

    Закрываем конкретный файл от всех

    Разрешаем доступ только с одного ip

    Запрещаем доступ с конкретных ip

    Убираем из Урла (URL) расширение файла

    Запрещаем отображать содержимое директории, если нет индексного файла

    Вы скорее всего хоть раз видели текст Index of и список файлов. Так происходит в том случае, когда в директории нет индексного файла (например index.php), а система предлагает выбрать файл для дальнейшего открытия. Минус этого заключается в том, что случайный пользователь может увидеть список и содержание всех файлов директории.

    Запрет на просмотр директорий

    Для предотвращения просмотра директорий сайта добавьте в .htaccess следующий код:

    Если же по какой-то причине вы хотите разрешить просмотр всех директорий, используйте код:

    Ускорение времени загрузки за счет сжатия файлов

    Сжимать можно файлы любого типа. Например, для сжатия HTML-файлов добавьте код:

    Для сжатия текстовых файлов используйте:

    Вы также можете сжать JavaScript или включить сжатие для других различных типов файлов командами:

    Кроме того, вы можете сжать все ваши JavaScript, HTML и CSS файлы при помощи GZIP. Для этого используйте следующий код:

    Кэширование файлов

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

    Вы можете добавить больше типов файлов (или удалить некоторые из них) в перечисленныq в данном примере список файлов. Вы также можете указать время сохранения файлов в кэше (в секундах) при помощи переменной max-age.

    Перенаправление на защищенное соединение HTTPS

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

    Файл htaccess — настройка и примеры использования

    Файл htaccess позволяет производить конфигурирование и переопределение настроек веб-сервера Apache и подобных ему серверов. С его помощью можно установить разрешения и параметры для работы сервера у определенных пользователей хостинга и даже на отдельных папках определенного пользователя.

    Чаще всего его применяют для создания 301 редиректа со старых URL на новые, переназначение типов файлов, управляемый доступ к каталогом и многого другого. Благодаря файлу htaccess не нужно обращаться к основному файлу конфигураций и затрагивать работу сервера целиком.

    Что собой представляет файл htaccess и для чего используется

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

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

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

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

    Некоторые особенности использования htaccess:

    1. В нем можно переопределить большое количество директив, прописанных в главном файле httpd.confg

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

    3. Разместить htaccess-файл можно в любой каталог, а его директивы будут применены ко всем подкаталогам

    4. Htaccess не доступен пользователю для просмотра из браузера, так как относится к категории «системные».

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

    • Директивы простого перенаправления (редирект);
    • Директивы сложного перенаправления (mod_rewrite);
    • Индексные страницы;
    • Обработка ошибок;
    • Определение кодировки;
    • Управление доступом к директориям и файлам;
    • Паролирование директорий;
    • Опции PHP.

    Примеры наиболее частого использования файла htaccess

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

    Прежде чем мы приступим обратите внимание на следующие моменты:

    1. Не рекомендуется вносить какие-либо изменения в файл конфигурации htaccess до тех пор, пока не будет создана его резервная копия. С ее помощью всегда можно будет вернуть настройки сервера в прежнее состояние.

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

    3. Синтаксис .htaccess

    — Пути к файлам (директориям) указываются от корня сервера.

    — В случае настройки файла htaccess лежащего в корневой папке сайта, пути указываются от корня этой папки.

    — Домены записываются с указанием протокола http:// или https://

    — Файл имеет название именно «точка» htaccess.

    — Для создания закомментированной строчки используйте знак #.

    — Редактировать файл удобнее всего при помощи редактора AkelPad, входящего в состав Total Commander, достаточно его выделить и нажать F4.

    Простое перенаправление — директива Redirect

    1. Осуществление перенаправления на новые страницы сайта

    Если на сайте были перемещены страницы на новые адреса, то пользователь или поисковый робот, обратившись по старому адресу, наверняка их не увидит. Чтобы склеить старый и новый адреса страницы можно применить простой 301 редирект. Для этого в файле конфигурации htaccess необходимо прописать следующий код:

    2. Приведение фидов к общему формату

    Раньше использовались различные форматы фидов, такие как: Atom, RSS, Rdf. Сегодня RSS является основным и самым популярным среди них, поэтому можно позаботиться о том, чтобы другие форматы перенаправлялись в один. Для этого также используется файл htaccess и следующий код:

    Сложное перенаправление — директива RewriteRule

    1. Перенаправление домена с www на без www.

    Очень часто приходится использовать 301 редирект в htaccess для склеивания доменов с www и без www. Раньше поисковые системы считали такие адреса совершенно различными и смотрели на них как на разные сайты. Сегодня задача по склейке возлагается на поискового робота, но никогда не лишним будет указать корректное зеркало. К тому же, у самих не будет никакой путаницы.

    2. Перенаправление посетителей на разные старницы в зависимости от IP-адреса посетителя.

    В htaccess имеется возможность указать на какую страницу, будет перенаправлен пользователь с конкретным IP-адресом. Например, перенаправление посетителей с ip адресом 183.11.101.1 на страницу kontakt.html

    3. Перенаправление в случае обновления веб-ресурса

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

    Где 14.124.354.80 — заменить на свой IP адресс.

    4. Защита от хотлинков

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

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

    5. Перенаправление на безопасное https-соединение

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

    6. Автоматическая подстановка слеша в конце адреса.

    Очень распространены ситуации, когда URL-адрес, заканчивается именем каталога: http://vash-sait.ru/images/raznoe

    Apache самостоятельно может исправить ошибку и сделать 301-е перенаправление, добавив к ссылке недостающий слеш. Таким образом, пользователь не ощутит никакой разницы и получит в ответ необходимую страницу. Но на выполнение такого действия понадобится в два раза больше времени. Следующий код всегда будет добавлять / в конце адреса.

    7. Блокировка пользователей пришедших с определенного сайта

    Если владелец сайта не хочет, чтобы его ресурс посещали пользователи, зашедшие с определенного домена и требуется им закрыть доступ — htaccess также готов помочь. Вы можете перекрыть трафик с определенных сайтов используя страницу 403 или «запрет доступа». Полезна данная настройка тогда, когда на ваш сайт появились ссылки с сайтов с запрещенным контентом и по ним идет трафик на ваш сайт.

    Индексные страницы — директива DirectoryIndex

    1. Изменение индексной старницы загружаемой по умолчанию

    Обычно по умолчанию индексными страницами является index.htm, index.php или index.html, при обращении к директории сайта сразу происходит поиск данных файлов. Но при необходимости можно переопределить индексную страницу на любую другую. Подобная задача также решается с использованием htaccess-файла.

    Имеется возможность указать две и более страницы. Стоит учитывать, что они будут отыскиваться в той последовательности, в которой перечислены в конфигурационном файле за директивой DirectoryIndex.

    Обработка ошибок — директива ErrorDocument

    1. Пользовательская страница ошибок

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

    2. Создание своих страниц с описанием ошибок

    Для тех, кто устал от привычных страниц, выводящих описание ошибок, произошедших на сайте, предоставляется возможность воспользоваться своими собственными заготовками. Нужно лишь самому сверстать несколько файлов с разрешением *.html, с необходимым содержимым и внести запись в htaccess-файл.

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

    • 401 — Требуется авторизация (Authorization Required)
    • 403 — пользователь не прошел аутентификацию, запрет на доступ (Forbided)
    • 404 — запрашиваемый документ (файл, директория) не найден (Not Found)
    • 500 — внутренняя ошибка сервера — ошибка скрипта или ошибка в синтаксисе файла .htaccess — (Internal Server Error)

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

    1. Определение кодировки, в которой сервер «отдает» файлы

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

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

    Подобная ситуация может возникнуть в том случае, когда пользователь загружает на сервер файл и его содержимое может быть перекодировано. Чтобы использовалась требуемая кодировка htaccess должен содержать код, указывающий что все загружаемые файлы должны будут открываться с кодировкой UTF-8.

    Управление доступом к директориям и файлам

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

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

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

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

    Для этого используются директивы order (далее указывается порядок выполнения директив), deny (директива, с помощью которой запрещается всем и ко всему), allow (директива, за которой следует IP-адрес, попадающий в список исключений и открывающий ему доступ к директивам и файлам). Стоит также отметить, что директивы deny и allow должны следовать именно в этом порядке, иначе действие директивы allow будет перекрыта директивой deny и не даст ожидаемого результата.

    3. Запретить доступ с определенного IP

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

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

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

    5. Ограничить доступ к определенному типу файлов

    6. Запретить просмотр директории без индексных файлов

    Если в htaccess добавить сточку Options –Indexes, будет ограничена возможность просматривать каталоги, в которых нет индексных файлов.

    7. Разрешить просматривать директорию

    Также можно разрешить просматривать определенные директории.

    1. Заставить работать PHP скрипты в HTML файлах

    2. Заставить выполнять PHP в файлах JavaScript

    3. Ограничение размера загружаемого файла для PHP

    20M — это ращмер файла в мегабайтах

    4. Изменить максимальный размер запроса для загрузки в PHP

    5. Изменить время исполнения скрипта

    30 — время исполнения скрипта в секундах.

    6. Изменение времени на разбор введенных данных

    Несколько простых примеров использования файла .htaccess

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

    Введение

    Что такое файл .htaccess?

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

    Как правило, данный файл располагается в корневом каталоге сайта. Через инструкции, прописанные в .htaccess, можно дать необходимые указания для web-сервера. Например, с помощью файла .htaccess можно разграничить доступ к каталогам и файлам, выполнить настройку красивых адресов в адресной строке, настроить страницы ошибок, а также многое другое.

    В этой статье представлено несколько полезных советов.

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

    1. Управление доступом к файлам и каталогам

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

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

    Иногда требуется, что бы доступ был возможен только с определенных ip-адресов. Реализовать это можно примерно так:

    В этом примере мы сначала запрещаем доступ для всех, а потом разрешаем только для ip-адресов xxx.xxx.xxx.xxx и yyy.yyy.yyy.yyy.

    Конечно, можно разрешить, например, доступ только с конкретного диапозона сети. Для этого требуется указать, как это не странно, эту самую подсеть, например так:

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

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

    Здесь подстрока «.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$» представляет собой регулярное выражение, которое буквально говорит web-серверу запретить доступ к файлам, которые имеют расширения: .htaccess, .htpasswd, .ini, .phps, .fla, .psd, .log, .sh.

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

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

    2. Запрет на просмотр директорий

    Иногда возможно зайти на какой-либо сервер и просмотреть содержимое каталога прямо через браузер. Замечательный пример, как это выглядит, доступен по адресу: http://mirror.yandex.ru/. Если необходимо запретить просмотр директории в таком виде, можно воспользоваться таким правилом:

    Что бы разрешить просмотр содержимого.


    У директивы Options есть и другие настройки. За более подробным описанием обратитесь к официальной документации

    3. Скачиваем файлы без лишних вопросов

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

    4. Замена стартовой страницы сайта

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

    В этом правиле необходимо вместо other_page.html установить имя страницы, которую необходимо использовать страницей по-умолчанию.

    5. Перенаправление на защищенное соединение HTTPS

    Если требуется, чтобы подключение к сайту осуществлялось по https, то необходимо добавить в файл .htaccess следующие строки:

    • Выражение RewriteCond % !on проверяет, попал ли пользователь на сайт по обычному http.
    • Выражение RewriteRule (.*) https://mysite.ru/$1 [R=301,L] выполняет переадресацию пользователя на https, если оказалось истинным предыдущее выражение, при этом устанавливается 301 редирект, а данная переадресация является последней. Можно убрать из [R=301,L] символ L , тогда будут срабатывать и последующие правила mod_rewrite.

    Обратите, пожалуйста, внимание на переменную % . Для сайтов, размещающихся на наших серверах хостинга, указывать ее нужно именно в таком виде. Это обусловлено тем, что перед apache у нас обрабатывает запросы nginx.

    Для VDS с панелью управления NetAngels правила будут выглядеть так:

    Файл .htaccess: что это такое, зачем он нужен, как правильно создать и настроить

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

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

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

    Возможности и для чего нужен

    В данном файле сайтостроители могут:

    • Настраивать директивы простого перенаправления (редиректы). Это позволит после смены домена отправить посетителя со страницы предыдущего сайта на новый проект.
    • Переадресовывать с URL, где есть www, на домен без www. Или же на https после того, как установите ssl сертификат.
    • Описывать ошибки. В их числе и ошибка 404 с заменой на необходимую страницу.
    • Кэширование файлов. Делается с целью ускорения работы веб-ресурса.
    • Создавать ЧПУ. Это «Человеко-понятные УРЛы», то есть, формируются ссылки, понятные для интернет-пользователей.
    • Изменять исходный код страниц.
    • Управлять доступом к файлам и директориям при помощи паролей.
    • Задавать индексный файл.
    • Открывать и закрывать доступ с определенных IP-адресов.
    • Управлять поисковыми ботами на сайте.
    • Настраивать директивы сложного направления.

    Главное предназначение .htaccess – настраивать сайт и каталоги в соответствии с определенными требованиями. То есть, посредством этого файла, SEO-специалисты и программисты могут изменять настройки веб-сервера, даже не имея администраторских прав. Но изменения вносятся только для определенного сайта, и на сам сервер они никак не влияют.

    Конфигурации сервера изменяются только с использованием директив (команд), включающих в себя «ключ» и «значение» для него. Все самые важные директивы, позволяющие управлять сервером, находятся в основном файле конфигурации, называющимся httpd.conf. Проблема в том, что у рядового пользователя нет возможности получить к нему доступ, так как там находится большое количество параметров, от которых зависит работоспособность всего сервера. Вот почему актуален .htaccess, позволяющий менять некоторые директивы в главном файле.

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

    Где находится .htaccess

    Можно с легкостью проверить, есть ли у вас служебный файл. От многих других документов он отличается тем, что имеет только расширение в виде названия из слова, тогда как самого названия нет. Да, мы все привыкли видеть файлы с названием из слова, и расширением после точки, которое состоит всего из 2-3 букв. Но пустые названия позволяют делать файлы и папки «скрытыми», с открытым исходным кодом. Из этого следует вывод, что .htaccess для обычных пользователей остается невидимым, поэтому они не смогут его изменить.

    Но есть у этого метода «скрытия» файла и обратная сторона медали. В стандартных FTP-клиентах на ОС Windows и Mac, документ очень часто остается невидимым для пользователей, из-за чего они ошибочно полагают, что его просто нет. Поэтому человек создает новый файл для внесения своих конфигураций, кодов для обработки ошибок, создания доступа к папкам и пр. Хорошо, что большинство хостингов оставляют место на диске, где htaccess-файл уже установлен автоматически.

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

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

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

    Как правильно создать .htaccess

    Для этого вам понадобится самый обычный текстовый редактор, к примеру, Блокнот, который есть на любом ПК:

    1. Откройте Блокнот, ничего в нем не пишите.
    2. Выберите пункт «Файл» и нажмите «Сохранить как».
    3. Появится окно, где напротив пункта «Тип файла» выберите «Alltypes» или «Все файлы».
    4. В строке «Имя файла» введите .htacces и кликните на «Сохранить».

    Далее перепроверьте, создан ли документ правильно. Обязательно посмотрите, не сохранили ли вы его как .htaccess.txt. Затем загрузите файл в корневую папку сервера, и если не отобразится ошибка 500, значит, вы все сделали правильно.

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

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

    Рассмотрим самые популярные команды для .htaccess.

    Редирект

    Эти директивы используются с завидной регулярностью. Они позволяют перенаправить посетителя со старого URL на новую страницу. Это возможно благодаря 301-редиректу. Достаточно в код файла вписать:

    В целом директива будет отображена в таком виде:

    URL_LOCAL – это старый адрес, с которого осуществляется перенос пользователя.

    URL_REDIRECT – новый URL, куда переносится страница.

    В поле [status] могут быть следующие значения:

    1. 301 – страница перенесена навсегда.
    2. 302 – страница перенесена на время.
    3. 303 – смотрите другую страницу.
    4. 410 – страница удалена.

    Mod_rewrite (директивы сложного переноса)

    Этот модуль содержится в Apache. В нем есть изобилие самых разных директив для расширенного управления адресами. К основным из них относятся:

    1. Указание основного зеркала

    Предназначен для того, чтобы преобразовать домен с www на URL без www. Достаточно ввести правило:

    2. Перенос на https

    На сегодняшний день поисковик Google активно призывает владельцев сайтов к использованию безопасного соединения, для чего необходимо перенаправлять пользователей с http на https при помощи кода:

    3. Проставление слеша в конце адреса

    Если вы не хотите, чтобы URL страницы заканчивался названием каталога http://название_вашего_сайта.ru/catalog, введите в файл код:

    Выполнив данную команду, в дальнейшем после адреса в автоматическом режиме будет добавляться слеш: http://название_вашего_сайта.ru/catalog/

    4. Перенос домена

    Изменив название сайта, не забудьте в .htaccess указать:

    Оптимизируя сайт и под Яндекс, и под Google, изменение доменного имени может быть чревато неприятными последствиями. Инструкции в robots.txt, предназначенные для Яндекса, перекрываются 301-редиректом. Но этого можно не допустить, добавив в код правило:

    5. Запретные команды для поискового бота

    В .htaccess, так же, как и в robots.txt, можно закрыть доступ к сайту для роботов поисковых систем:

    Обработка ошибок

    Практически любой интернет-пользователь встречался с ошибкой 404 not found (страница не найдена или удалена). Но есть огромное количество других ошибок, о которых вы наверняка не слышали.

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

    Индексные документы

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

    Либо добавить несколько таких страниц, и поисковик будет находить их в соответствующей последовательности:

    Указание кодировки

    Данная функция нужна, чтобы текст отображался на экране пользователя правильно. Иначе вместо нормальной читабельной страницы он будет видеть непонятные символы. Сегодня широко распространена кодировка: Windows-1251 – Кириллица и UTF-8 – двухбайтовая кодировка. Для выбора кодировки в служебном документе, применяется директива:

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

    Указание паролей для директорий

    Для этого в закрываемом каталоге пропишите:

    Доступ к файлам и директориям

    Посредством файла .htaccess вы можете запретить полностью или частично доступ к определенным файлам. Допустим, вы хотите закрыть доступ к системному каталогу. Тогда в соответствующем .htaccess пропишите:

    Для запрета просмотра определенного файла, например, test.php:

    Открыть просмотр для конкретного IP, и при этом закрыть доступ остальным, позволяет команда:

    12.345.678.90 – пример IP-адреса (здесь нужно указать нужный вам IP).

    Заключение

    Как видите, служебный файл .htacces является одним из самых важных инструментов для полноценной работоспособности веб-ресурса. И ознакомившись с его возможностями, вы наверняка удивились, почему раньше знали об этом файле мало. Это эффективный инструмент для того, чтобы SEO-специалисты и программисты могли вносить изменения в конфигурации веб-сервера для определенных сайтов, не влияя на сам сервер.

    Благодаря нему, владельцы интернет-проектов могут сообщить поисковикам и посетителям о смене домена и перенести их на новый, ускорить индексацию сайта, закрыть доступ ко всем или определенным данным ресурса, не допустить их корректировки и скачивания посторонними лицами, обеспечить доступ к определенным файлам по IP и паролю.

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

    Файл .htaccess — настройка перенаправлений и управление конфигурацией веб-сервера

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

    На хостинге RU-CENTER в настоящее время используется веб-сервер Apache версии 2.4.

    Директивы файла .htaccess действуют для каталога, в котором размещён такой файл, и для всех его подкаталогов. Если вы желаете с помощью .htaccess изменить настройки для сайта в целом, его следует размещать в корневом каталоге сайта

    Пожалуйста, будьте внимательны при редактировании файла .htaccess! При сохранении такого файла в кодировке UTF-8 в нём не должно присутствовать BOM-сигнатуры. Для редактирования файла .htaccess и других конфигурационных файлов мы рекомендуем использовать не «Блокнот» Windows, а специальные текстовые редакторы, например Notepad++.

    Примеры использования файла .htaccess

    1. Перенаправление доменов c синонима сайта на основной домен с кодом 301

    Перенаправить запросы на domain.ru с любого из синонимов сайта

    RewriteEngine On
    RewriteCond % !^domain\.ru$ [NC]
    RewriteRule ^(.*)$ http://domain.ru/$1 [L,R=301]

    Перенаправить запросы на www.domain.ru с любого из синонимов сайта

    RewriteEngine On
    RewriteCond % !^www\.domain\.ru$ [NC]
    RewriteRule ^(.*)$ http://www.domain.ru/$1 [L,R=301]

    Эти правила рекомендуется размещать в самом начале файла .htaccess.

    2. Постоянное перенаправление с кодом 301

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

    Redirect 301 /page.html http://www.domain.ru/new_page.html

    • page.html — адрес старой страницы относительно корня сайта;
    • www.domain.ru — имя сайта;
    • new_page.html — адрес страницы, на которую нужно выполнить перенаправление.

    Например, для перенаправления всех запросов к странице /period/?test=123 вашего сайта на domain.ru, вы можете написать:

    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond % ^test=123$ [NC]
    RewriteRule ^period/$ http://domain.ru/ [L,R=301]

    3. Переопределение страниц ошибок

    При помощи файла .htaccess вы можете установить свои страницы ошибок:

    #401 Авторизация не выполнена
    ErrorDocument 401 http://domain.ru/errors/401.html
    #403 Доступ запрещен
    ErrorDocument 403 http://domain.ru/errors/403.html
    #404 Страница не найдена
    ErrorDocument 404 http://domain.ru/errors/404.html
    #500 Внутренняя ошибка сервера
    ErrorDocument 500 http://domain.ru/errors/500.html

    Соответствующие файлы страниц ошибок (401.html, 404.html и др.) необходимо разместить в каталоге

    Для того чтобы при случайном упоминании прямых ссылок на такие страницы они не проиндексировались в поисковых системах, рекомендуется:

    User-agent: *
    Disallow: /errors

    /ваш_домен/docs/errors/.htaccess, в котором прописать

    4. Постраничное перенаправление запросов на другой домен c кодом 301

    Следующий код перенаправит все запросы к страницам вашего сайта на аналогичные страницы другого сайта, например, запрос http://domain.ru/main будет переадресован на http://www.newdomain.ru/main:

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

    RewriteEngine On
    RewriteRule ^(.*)$ http://newdomain.ru/$1 [R=301,L]

    5. Ограничение доступа к сайту по IP

    Запретить доступ к сайту с IP-адресов 123.4.5.6 и 123.5.4.3

    Order Allow,Deny
    Allow from all
    Deny from 123.4.5.6 123.5.4.3

    Запретить доступ к сайту со всех адресов кроме 123.4.5.6 и 123.5.4.3:

    Order Deny,Allow
    Deny from all
    Allow from 123.4.5.6 123.5.4.3

    Запретить доступ к сайту для всех:

    6. Переопределение главной страницы сайта (индексного файла каталога)

    Сделать главной страницей файл menu.html:

    7. Включение обработки PHP в .html-файлах

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

    8. Запрет выдачи листинга каталога

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

    9. Включить выполнение CGI-скриптов в папке docs для файлов с расширениями .cgi, .pl. .py

    В папке c CGI-скриптами необходимо разместить файл .htaccess с содержимым:

    AddHandler cgi-script .cgi .pl .py
    Options +ExecCGI

    Скрипт должен иметь атрибут исполнения (+x, права доступа, начинающиеся с 7, например, 755).

    Атрибуты (права доступа) можно изменить с помощью файлового менеджера панели управления, при помощи вашего FTP-клиента или по SSH . Также в разделе Веб-серверУправление модулями должен быть включен модуль CGI.

    10. Блокировка переходов со сторонних ресурсов

    Для запрета перехода c baddomain.ru на domain.ru добавьте в .htaccess следующее:

    RewriteEngine on
    RewriteCond % baddomain\.ru [NC]
    RewriteRule .* — [F]

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

    RewriteEngine on
    RewriteCond % baddomain\.ru [NC,OR]
    RewriteCond % baddomain2\.ru [NC,OR]
    RewriteCond % baddomain3\.ru [NC]
    RewriteRule .* — [F]

    11. Особенности использования кириллических доменов (.РФ, .МОСКВА и др.)

    В файле .htaccess использование кириллицы не допускается. При составлении правил перенаправления для кириллических доменов необходимо указывать имя домена в punycode. Узнать имя домена в punycode можно с помощью сервиса Whois.

    Например, для перенаправления site.ru на caйт.рф нужно воспользоваться следующим правилом:

    RewriteEngine on
    RewriteCond % ^www\.site.ru [NC]
    RewriteRule ^(.*)$ http://xn--80aswg.xn--p1ai/$1 [R=301,L]

    В этом случае ваши посетители могут увидеть именно punycode-представление доменного имени в адресной строке браузера. Это не является ошибкой.

    12. Перенаправление с HTTP на HTTPS и обратно

    Перенаправить запросы на https://domain.ru

    Перенаправить запросы на http://domain.ru

    3. Диагностика ошибок

    Если после редактирования или размещения .htaccess при обращении к сайту вы получили ошибку 500, то, скорее всего, в файле .htaccess допущена ошибка. Посмотреть её причины вы можете в лог-файле /var/log/ваш_домен.error_log.

    Как написать .htaccess файл для сайта

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

    Таки образом apache предоставляет нам удобный инструмент конфигурации на уровне директорий сайта. Это расширяет наши возможности так как не все настройки удобно делать на глобальному уровне и на уровне виртуального хоста. Так же на хостингах, владелец сайта, как правило, не имеет возможности выполнять настройки apache на глобальном уровне и на уровне виртуального хоста, но у него может быть возможность задать требуемые настройки на уровне каталогов сайта. Для того что бы apache принимал и исполнял директивы из файлов .htaccess каталогов сайта нужно, что бы на глобальном уровне или на уровне виртуального хоста apache это было разрешено для сайта.

    Делается это разрешение при помощи следующего блока кода:

    Здесь в теге указывается физический путь на сервере до корня вашего сайта, и внутри тега указывается директива AllowOverride. Эта директива может быть установлена в None, чтобы сервер не читал файл .htaccess. Если она установлена в All — сервер будет допускать все директивы .htaccess файла. Значение по умолчанию: AllowOverride All.

    Теперь пару слов о названии файла .htaccess. Этот файл может называться и по другому, и это тоже устанавливается в глобальном конфиге apache директивой AccessFileName. По умолчанию эта директива установлена в конфиге как AccessFileName .htaccess, и это значение обычно никто не меняет, но вы должны знать, что изменить его на другое возможно.

    Синтаксис файлов .htaccess в общем случае аналогичен синтаксису главного файла конфигурации apache. Однако, администратор может ограничивать для пользователей доступ к тем или иным директивам. То есть, несмотря на то, что команда, в принципе, может исполняться из .htaccess, администратор может запретить доступ к конкретной директиве. Учитывайте это при работе. Также хочу заметить такой момент, когда вы пишите директивы работающие с каталогами? то в главных конфигурационных файлах apache их нужно оборачивать в тег с указанием каталога к которому они применимы, однако при написании этих директив в .htaccess файле уже не нужно их оборачивать в тег , если вы хотите что бы они применялись к текущему каталогу файла .htaccess, если же вы хотите применить их только к вложенному каталогу то тогда, опять же, нужно обернуть в тег .

    Для чего мы можем использовать .htaccess файл. Вариантов здесь немало, вот самые распространенные из них:
    1.Для управления разрешениями на доступы к каталогам сайта (запаролить директорию, запретить доступ к файлам определенного формата, или доступ к сайту в определенный промежуток времени, запретить или открыть доступ с определенных IP адресов, управлять роботами поисковиков)
    2.Для перезаписи текущего URL на новый в зависимости от условий (см. также описание mod_rewrite сервера Apache и логику его обработки правил )
    3.Для явного указания кодировки сайта.
    4.Для разрешения или запрета просмотра файлов сайта
    5.Для защиты от хотлинка
    6.Для выполнения ридирктов
    7.Для задания своих страниц ошибок
    8.Для переопределения индексного файла
    9…. и многое другое.

    Давайте для примера напишем некий обобщенный файл .htaccess.
    В него мы соберем наиболее распространенные случаи использования директив и добавим к ним комментарии. И из этого шаблона путем удаления не нужного вы сможете всегда подготовить конкретный .htaccess для ваших задач. Здесь символ # — это символ комментария применяемый в конфигах apache.

    Расшифрую некоторые флаги из директив:

    • RewriteCond . [NC] — NC значит регистр нечувствительное сравнение выполнять
    • RewriteCond . [NC,OR] — NC см. выше, OR — значит объединять RewriteCond через OR, по умолчанию если ничего не указана то RewriteCond объединяются через AND оператор.
    • RewriteRule . [L] — L значит закончить (остановить обработку) на этом RewriteRule правиле любые дальнейшие преобразования URL, т.е. последующие RewriteRule не выполнять.
    • RewriteRule . [L,R=302] — L см. выше, R=302 значит выполнить редирект с кодом 302 на преобразованный URL
    • RewriteRule . [R=301,QSA,L] — L и R см. выше, QSA — при преобразовании URL выполнять при стыковку заданных частей, а не замену.
    • RewriteRule . [F] — F, значит отказать в выдачи результата по этому URL кодом 403 Forbidden .
    • RewriteRule . — [G,L] G|Gone — [G] flag значит отдать код 410Gone status — рекомендация забыть этот URL

    AuthUserFile — задает путь к файлу с паролями для http авторизации пользователя. Путь может быть абсолютный от корня файловой системы Linux сервера или относительный от ServerRoot apache. В Ubuntu ServerRoot «/etc/apache2» по умолчанию. При задании относительного пути от ServerRoot apache начальный слеш в пути не указывается, иначе путь будет восприниматься как абсолютный от корня Linux. Также, если путь содержит недопустимые символы и пробелы его нужно заключать в кавычки, это общее правило.

    Order, Deny, Allow

    Теперь еще раз, но уже более детально, хотелось бы вернуться к директивам управление доступом: Order, Deny, Allow и более детально описать ее синтаксис и логику.

    Директива Order синтаксис: Order [Deny,Allow] или [Allow,Deny]

    По умолчанию директива Order имеет порядок: Deny,Allow. Обратите внимание, что Deny,Allow пишутся без пробела.

    В зависимости от того в каком порядке указаны директивы Deny,Allow или Allow,Deny меняется логика работы.

    Если Deny,Allow то запрещается доступ со всех IP кроме указанных, если Allow,Deny разрешается доступ со всех IP кроме оговоренных. Далее идут секции описания для доступа и запрета. Ключевое слово all означает со всех IP.

    Например, что бы запретить (блокировать) доступ с IP x.x.x.x и x.x.x.xx и разрешить доступ всем остальным необходимо добавить в .htaccess следующий код:

    # Разрешить ВСЕМ кроме указанных IP
    Order Allow,Deny
    Allow from all
    Deny from x.x.x.x x.x.x.xx

    Обратите внимание что IP записаны через пробел. Можно также указать IP как IP/маска.

    Для обратной ситуации, что бы запретить доступ со всех IP кроме x.x.x.x и x.x.x.xx нам необходимо добавить в .htaccess следующий код:

    # Запретить ВСЕМ кроме указанных IP
    Order Deny,Allow
    Deny from all
    Allow from x.x.x.x x.x.x.xx

    Запрет или разрешение можно указывать и на отдельный файл или группы файлов. Например, что бы запретить доступ всех кроме IP x.x.x.x к файлу passwd.html, который расположен в текущей директории.

    # Запретить файл passwd.html ВСЕМ кроме указанных IP

    Order Deny,Allow
    Deny from all
    Allow from x.x.x.x

    Аналогично можно запретить или разрешить доступ к определенной группе файлов описав их через регулярное выражение. Например, к файлам с расширением «.key»:

    # Запретить файлы *.key ВСЕМ кроме указанных IP

    Order Deny,Allow
    Deny from all
    Allow from x.x.x.x

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

    Илон Маск рекомендует:  Что такое код msql_fetch_field
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL