5 трюков с файлом .htaccess


Содержание

Как «вытянуть» файл .htaccess с сайта

04.05.2015, 09:36

Исключение директории «admin» благодаря mod_rewrite в файле htaccess
Здравствуйте. Создал файл .htaccess на локалхосте в корневой директории с содержанием: .

«а в htaccess стоит перенаправление»
Господа, я совершенный новичок в веб-приложениях и мне представляется место файла htaccess как.

Как изменить файл .htaccess после редиректа сайта
Суть вот в чем. Нужно было настроить редирект одного сайта на другой (полный). В файле .htaccess.

Как отправить файл с именем «%^##76 / // ^^[]: .jpg» на сервер по протоколу HTTP?
Ребята! подскажите, как отправить файл с именем «%^##76 / // ^^: .jpg» на сервер по протоколу HTTP.

Перевод сайта на другой домен и файл htaccess
Ребята, нужна помощь. Спасибо всем, кто откликнется. Вообщем так. Есть сайт https://имя_домена/ .

04.05.2015, 09:41 2 04.05.2015, 09:53 3

Добавлено через 44 секунды
Тыр-тыр, если нет доступа к файловой системе сайта — ничего не выйдет.

04.05.2015, 10:56 [ТС] 4

Как же так! Не может быть. Ведь файл лежит в www директории, где лежат и все другие доступные файлы, а не где-то там на серваке за пределами досягаемости (например как папка с cgi файлами находится в /cgi-bin/www).

А вот есть проги типа BlackWidow — никакая из подобных прог не может скачать? Я знаю, что именно BlackWidow неможет.

04.05.2015, 10:56
04.05.2015, 12:15 5
18.05.2015, 12:16 6

Вы хотите обойти систему безопасности Apache и получить скрытый файл .htaccess ?
Это взлом сайта и статья :-)
Ни один правильно настроенный веб-сервер вам этот файл не отдаст.

Возникает вопрос — зачем вам нужен этот файл при нормальной работе с веб-сервером ?

19.05.2015, 15:16 7
19.05.2015, 19:11 8
20.05.2015, 00:34 9

если вы насмотрелись фильмов вроде «person of interest», то там программный доступ к системам обеспечивался на административном уровне, и в первую очередь благодаря ему «программа могла все», а из реального мира, даже те же PRISM и прочие — они лишь перехватывают пакеты, и помогают людям взломать, но сами они способны это сделать лишь в исключительно редких и совсем простых случаях.

впрочем, они и им не видны через «интерфейсную часть» — через веб сервер, а с помощью совершенно других и зачастую никак не связанных с веб-сервером технологий: программ удаленного администрирования

, иначе даже по п1 272 статьи, вам ничего не грозит. А напомню, что пока все еще под копированием в законе подразумевается именно копирование на другой носитель, а не просто прочитал и забыл.
Да, разумеется, атакующий рискует. Вдруг там будет инфа, которая составляет гостайну, там уже действуют немного другие законы. Возможно, также применение п3 272ой статьи, в случае, когда злоумышленник получил доступ к некоей внутренней информации компании/владельца сайта, использование которой само по себе причинит кому-то вред (например, номер карточки и ее cvc2 код), вполне вероятно, при наличии хороших адвокатов со стороны пострадавшего, которые смогут доказать что неправомерный доступ имел место быть. Но нужно доказать, что это — действительно огромная угроза, и кроме того, нужно доказать, что злоумышленник все еще помнит то, что он видел. Иначе, чисто формально, он ничего не нарушил.
Сам по себе «взлом» не является правонарушением. А в сфере reverse engeneering, так он даже фактически разрешен явно, пп2-3 ст 1280 ГКРФ. Единственное, что — нельзя эту модифицированную программу потом распространять, и в первую очередь, это должно делаться для изучения работы программы, а не с целью взломать защиту, но это уже другая история. В любом случае, если вы все это делаете для себя, ради интереса, а программа вами честно куплена — то ваше право ее исследовать и убрать какую-нибудь ошибку, которую на ваш взгляд, допустил разработчик. Правда, это уже совсем другая история.

Короче, одним словом, на практике, чтобы была статья — нужны убытки. Хотябы моральные. Вот если этот ваш htaccess файл подарила вам ваша любимая прабабушка, перед смертью, а злостный нарушитель взял и удалил его, тогда фигово. Или злоумышленник установил какой-то троян. Или получил данные пользователей с сайта банка, которыми он непосредстенно может воспользоваться для достижения прибыли (в том числе и продажа этой информации третьим лицам) — это статья. Даже взлом+модификация css файла, чтобы верстка в вашем браузере «не ползла», и остальным вы не навредили при этом — это тоже статья, потому что модификация. Да и любое исправление ошибок на сайте. Однако, взлом сервера, не влекущий за собой его модификацию или нарушение работы сайта — нет. Чтение каких-то левых файлов, не представляющих никакой ценности, без их копирования — тоже нет. Правда, в случае, если в файлах оказался, например, личный дневник админа, который он не хотел бы никому показывать, то есть информация предоставляет какую-то ценность для того админа, это уже можно классифицировать как преступление, и администратор может подать в суд. Правда, экспертиза достаточно дорогостоящая, и не факт, что взлом был осуществлен именно тем человеком, ip которого оказался в логах. А настоящий взломщик может оказаться китайцем, который вообще ничего не понял, ему интересно было лишь прочитать пару файлов для proof-of-concept, поэтому, на практике, доказать это сложно. Тем не менее, по российским законам, формально, он будет являться преступником.
Ну а с третьей стороны, взламывая что-либо практически невозможно быть уверенным в том, что вы никому не навредите, и ничего больше не сломаете (все же компьютерные системы достаточно сложны, и кто знает, вдруг именно ваш нуль-байт в конце строки повлечет за собой запуск ядерной ракеты ), тем самым не нарушив п.1 272 УК, поэтому в «полевых» условиях делать этого не стоит. Благо, по теме ИБ проводится достаточное количество всяких соревнований и конкурсов, в которых помимо «прикольно, что это получилось»-эффекта, можно еще увидеть, как с подобными заданиями справляются другие, и познакомиться с кем-нибудь. А можно и не знакомиться, и не обращать внимания на других, тут уж как вам больше нравится

Всё про файл .htaccess

Файл .htaccess позволяет администратору управлять почти всеми настройками сервера Apache, касательно всего сайта или только определённых директорий, потому как структура папок на сервере имеет древовидную структуру и если поместить файл .htaccess в одну из них, то можно получить управление именно этой директорией, не влияя на работу других. Если в директории «DIR» расположен такой файл .htaccess, а во вложенном каталоге по отношению к нему есть еще один .htaccess, то во вложенной директории действуют настройки последнего. Вот таким образом, новый .htaccess отменяет предыдущий.
Данный фал вы не увидите через протоков http, следоватьно пользователи не смогут увидеь всех настроек вашего сайта.

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

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

1. Путь к файлу должен быть полным. ( /paht/to/Your/site/.htpassword )
2. Для переадресаций указываем протокол: http или ftp (Redirect / http://www.somesite.ru/)
3. По умолчанию файл называется .htaccess.
4. Файл сохраняется в Unix формате. То есть символ новой строки — n.

Теперь стоит поговорить о некоторых самых популярных параметрах настойки:

Запреты и разрешения

Запрет на все файлы в каталоге:

Доступ только с определенного IP:

Запретить доступ для определенного ip:

Запрет доступа на группу файлов по расширению (по маске):

Разрешение или запрет на чтение по расширению.
Запрет на доступ к файлам *.inc:

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

Запрет доступа на конкретный файл:

Запрет на чтение conf.inc.php посетителями сайта не запрещает локальным приложениям сервера читать этот файл.

Такое значение AuthName для посетителей будет выводиться во всплывающем окне. Значение AuthUserFile указывает серверу, где хранится файл с паролями для доступа. такой файл можно создать специальной утилитой htpasswd в операционной системе linux или htpasswd.exe в ОС Windows.

Пароль только на 1 файл:

Пример установки пароля на файл file.rar:

Пароль на группу файлов по расширению:

Перенаправление при запросе определенных каталогов и страниц:

Переопределение стартовой страницы

Обработка ошибок сервера

код 401 — Требуется авторизация (Authorization Required)
код 403 — Нет доступа (Forbidden)
код 404 — Не найден файл (File not found)
код 500 — Внутренняя ошибка сервера (Internal Server Error)

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

Выставить полный запрет на просмотр оглавления необходимой директории. То есть, если в каталоге dir/ нет файла Index.*, что бы он загружался автоматически, то при обращении пользователя к dir/, ему будет отказано в доступе и Apache выдаст ошибку 403.

Иногда необходимо установить кодировку по умолчанию, то есть default-кодировка. В какой кодировке сервер будет отдавать документы.

А так же установка необходимой кодировки на файлы на сервере:

ХИТРОСТИ, ТРЮКИ И ХАКИ .HTACCESS

Файл .htaccess (Hypertext Access file) — это обычный текстовый ASCII-файл, помещен в корневой каталог сайта (или в любой другой каталог). Главной функции, которого является дополнительное конфигурирование для веб-сервера Apache. Редактировать данный файл можно через любой текстовый редактор. Права на данный файл должны быть выставлены 0444. .htaccess — это небольшое дополнение к httpd.conf (и практически идентичен ему), кроме как действует .htaccess только в каталоге или подкаталогах (если нет других .htaccess в подкаталоге) и на файлах находящихся в них.

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

1. Ошибки 401, 403, 404 и 500

Это самый простой совет, но который мало кто следует. Добавьте в свой файл .htaccess следующие строки, а в корень сайта следующие документы для того, чтобы пользователю выводилась нужная ошибка. Кстати не стоит забывать, что для SEO обязательно на стороне сервера (а значит на .htaccess) должна быть правильно настроена страница 404 (не 301 или 302, не используйте редиректы при не существующих или удаленных страницах), чтобы поисковая система видела, что файла на сервер нет и выдача была переработана. При использование 301 или 302 ошибки, поисковая машина будет ложно срабатывать и считать, что документ существует. Это может очень плохо отразиться на продвижение сайта.

ErrorDocument 403 /error/403.php

ErrorDocument 404 /error/404.php

ErrorDocument 500 /error/500.php

2. Установите часовой пояс на сервере

Конечно лучше это сделать в конфигурационном файле Apache, но если к таковому нет доступа, то это можно сделать и в .htaccess

3. Фильтрация IP-адресов

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

allow from all
deny from 145.186.14.122
deny from 124.15

4. Дружественное SEO для вашего сайта и 301 редирект

Используйте его для плохи ссылок или при «переезде» страницы на другой адрес

Redirect 301 /d/file.html http://www.htaccesselite.com/r/file.html

5. Устанавливаем электронную почту администратора

* Вместо этого, пишем свой e-mail

6. Защищаем .htaccess наш контент и сервер от лишних нагрузок

Многие «умники» могут начать использовать ваш контент, картинки, видео и т.п. прямо напрямую с вашего сервера. Таким образом люди будут идти к нему, а «забивать» пропускную способность и тратить ресурса сервера будете вы. Для этого используем следующее:

Options +FollowSymlinks
# Protect Hotlinking
RewriteEngine On
RewriteCond % !^$
RewriteCond % !^http://(www.)?domainname.com/ [nc]
RewriteRule .*.(gif|jpg|png)$ http://domainname.com/img/hotlink_f_o.png [nc]

Вместо domainame.com вписываем своё доменное имя

7. Блокируем нежелательных пользовательских агентов

С помощью всё того же файла, мы можем блокировать пользовательских агентов, вот пример:

## .htaccess Code :: BEGIN
## Block Bad Bots by user-Agent
SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
SetEnvIfNoCase user-Agent ^ Microsoft.URL [NC,OR]
SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]
SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]
SetEnvIfNoCase user-Agent ^Zeus [NC]

Order Allow,Deny
Allow from all
Deny from env=bad_bot

8. Перенаправление, кроме нескольких IP

ErrorDocument 403 http://www.youdomain.com
Order deny,allow
Deny from all
Allow from 124.34.48.165
Allow from 102.54.68.123

9. Запрещаем отображение запроса на разрешение скачивание файла

AddType application/octet-stream .pdf
AddType application/octet-stream .zip
AddType application/octet-stream .mov

10. Изменение типа файла в .htaccess

Любой формат можно изменить на PHP с помощью:

ForceType application/x-httpd-php
SetHandler application/x-httpd-php

11. Защищаем файл от прямого доступа


 order allow,deny
 deny from all

12. Блокировка определённого файла

# prevent access of a certain file order allow,deny
 deny from all

13. Защищаем каталог от просмотра в .htaccess

# disable directory browsing
Options All -Indexes

14. Устанавливаем страницу по умолчанию

К примеру у нас есть index.html, но мы хотим, чтобы первой странице, которая показывалась пользователю при переходе на сайт была другая страница к примеру «О нас» — about.html. Пишем следующий код:

# serve alternate default index page
DirectoryIndex about.html

15. Защищаем каталог или файл сайта паролем в .htaccess

AuthType Basic
AuthName “Prompt”
AuthUserFile /home/path/.htpasswd
Require valid-user

# password-protect a directory
resides
AuthType basic
AuthName “This directory is protected”
AuthUserFile /home/path/.htpasswd
AuthGroupFile /dev/null
Require valid-user

5 трюков с файлом .htaccess

Содержание

Работа с .htaccess

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

Mod_rewrite — модуль, используемый веб-серверами для преобразования URL’ов.

Редирект .htaccess

Простой редирект

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

/old/old.htm — путь и имя старой страницы,
http://www.you.com/new.htm — новый путь и новое имя перемещенной страницы.

Редирект на любую страницу по ip пользователя или при запросе конкретной страницы (а также по маске имени)

Если у пользователя ip 192.152.37.125, то он будет перенаправлен на страницу user.php :

Редирект при запросе определённых файлов
Если запрашиваются файлы, расширение которых не указано в файле .htaccess (gif и jpg), то следует перенаправление:

Использование mod_rewrite

Редирект с регулярным выражением

Прописывается в файле .htaccess.

(.*) RedirectMatch фактически соответствует регулярным образцам выражения после доменного имени. Таким образом, нельзя выполнить соответствие образца на ^/yourdomain.ru . Однако, можно преобразовать страницы с использованием .html расширения к файлам того же самого названия, но с .php расширением:

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

RedirectMatch Permanent — это эквивалент «RedirectMatch 301», строка с *(Wildcard) должна быть последней в этом списке.

Создание удобно читаемых URL

Чтобы преобразовать, например, www.site.ru/product.php? >

В следующем примере преобразуем www.site.ru/script.php?product=123 в www.site.ru/cat/product/123/:

Редирект на PHP

Надо создать страницу при обращении к которой будет происходить редирект и разместить её на сервере. Лучше укажите HTTP/1.1 (а не HTTP/1.0 или HTTP/0.9, которые не поддерживают виртуальный хостинг).

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

Например вы больше не нуждаетесь в разделе сайта Super discount и хотите перенаправить все запросы к папке /superdiscount на один файл /hot-offers.php . Для этого добавляем в .htaccess следующий код:

Редирект всей папки кроме одного файла
В следующем примере все файлы из папки /superdiscount будут редиректится на на файл /hot-offers.php , КРОМЕ файла /superdiscount/my-ebook.html который должен редиректится на /hot-to-make-million.html

Редирект динамического URL на новый файл

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

То есть теперь, запрос к файлу вида http://www.kass.ws/article.jsp? > и/или http://www.kass.ws/article.jsp? > будет отправлен на файл http://www.kass.ws/latestnews.htm .

Массовый редирект новых файлов

Теперь перейдем к самому сложному моменту, когда вам надо редиректить массу URL-ов, например после смены вашей CMS.

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

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

И в-третьих, при внесении такого количества информации высока вероятность, что вы где-то ошибетесь.

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

Предположим, вы перешли на новую систему ссылок на вашем сайте и все файлы оканчивающиеся на старый id должны быть средирекчены. Сначала создаем в базе таблицу, которая содержит старый id и новый URL для редиректа. old_id INT new_url VARCHAR (255) Далее пишем код который свяжет ваши старые id с новыми URL-ами

После этого, добавляем следующую строчку в .htaccess:

затем создаем PHP-файл redirectold.php , который будет поддерживать 301 редирект:

Теперь все запросы к вашим старым URL-ам будут вызывать redirectold.php , который найдет новый URL и вернет 301 ответ с вашей новой ссылкой.

Редиректы в зависимости от времени

Когда нужно применять уловки, типа содержания зависящего от времени, масса вебмастеров все ещё используют CGI-скрипты, которые производят редиректы на специальные страницы.

Как это может быть сделано через mod_rewrite? Есть много переменных названных TIME_xxx для условий редиректа. В связке со специальными лексикографическими образцами для сравнения STRING и =STRING мы можем производить редиректы зависящие от времени:

Это выдает содержимое foo.day.html при запросе URL foo.html с 07:00 до 19:00 а в оставшееся время содержимое foo.night.html .

Убираем у всех запросов вначале «WWW.»

Меняем расширение .html на .php

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

AddHandler application/x-httpd-php .html

Этот прием можно использовать и для других расширений файлов:

Запрещение доступа в конкретную директорию

Запрещаем доступ для всех ко всем файлам в директории deny from all
к конкретному файлу:

по ip пользователя:

Доступ в данную директорию будет разрешён только пользователю с ip 192.152.37.125.

И наоборот, если хотите запретить отдельным ip пользователей доступ к вашему сайту, то пропишете следующие строчки:

Директива Options -Indexes — запрет на отображение содержимого каталога при отсутствии индексного файла.

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

В этом случае, вместо списка файлов в каталоге посетитель получит HTTP ошибку 403 — access forbidden.

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

Запрещен доступ к файлам с расширением .inc, .conf и *.cfg. Хотя директива, по умолчанию, не работает с регулярными выражениями, но их можно включить поставив символ тильды(

) в опциях директивы. Синтаксис следующий: [тильда] [пробел] [далее_все_без_пробелов] Чтобы блокировать этот доступ, запишем следующее:

RewriteRule ^.htaccess$ — [F]

Это значит, что если кто-то пробует обращаться к файлу .htaccess, система должна произвести код ошибки ‘HTTP response of 403’ или ‘403 Forbidden — You don’t have permission to access /.htaccess on this server’.

Конструкция ^.htaccess$ в этом регулярном выражении означает:

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

Имя файла должно быть расположено точно между начальным и конечным якорем. Это будет гарантировать то, что только это определенное имя файла (и никакое другое) сгенерирует код ошибки.

[F] — специальный ‘запрещающий’ флажок (forbidden).
[NC] — не учитывать регистр букв.
[OR] — означает ‘или следующее условие’.

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

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

Варианты: KOI8-R, UTF-8, Windows-1251

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

Пароль на директорию

Инструкция как закрыть папку паролем находится — НА ЭТОЙ СТРАНИЦЕ

Свои страницы ошибок

Инструкция на создание своих страниц ошибок находится — НА ЭТОЙ СТРАНИЦЕ

IE игнорирует страницы размером меньше 512 байт.


Индексация директорий и поддиректорий

Чтобы избежать индексации поисковыми системами директорий и поддиректорий, необходимо прописать, например, такую строку:

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

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

DirectoryIndex index.html index.php index.shtml

Мы рекомендуем делать переадресацию с пустых директорий либо на главную страницу сайта, либо на другую подходящую страницу. Например, директорию www.site.ru/pic/ можно переадресовать на www.site.ru .

Защита изображений

Часто веб-мастера нагло копируют контент с вашего сайта вместе с рисунками, причем рисунки подгружаются с вашего же сервера. Это создает лишний трафик, что, зачастую, приводит к ряду проблем.

Защититься от таких веб-мастеров и не помешать поисковым роботам индексировать изображения достаточно просто:

hotlinker.gif — изображение, которое будет отображаться, вместо истинных изображений. Рекомендуем в этом изображении отобразить ваш логотип и ссылку на ваш сайт.

Еще один варинат запрета доступа к картинкам с неразрешенных сайтов:

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

Обращения к robots.txt

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

Теперь при запросе файла robots.txt наш RewriteRule переадресует посетителя (робота) к обрабатывающему запросы скрипту robot.php .
Кроме того, переменная передается скрипту, которая будет обработана в соответствии с вашими нуждами. REQUEST_URI определяет имя запрашиваемого файла. В данном примере это robots.txt . Скрипт прочтет содержание robots.txt и отправит его web-браузеру или роботу поискового сервера. Таким образом, мы можем считать хиты посетителей и вести лог-файлы.

PHPSESSID

Для отключения добавления PHPSESSID к URL вставьте в начало index.php:

ini_set(«session.use_trans_sid», 0); , либо в .htaccess пропишите:
php_flag session.use_trans_sid Off

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

Директивы кеширования

Кэширование для всех типов файлов по времени доступа

Кэширование для всех типов файлов по времени изменения

Кэширование для определённых типов файлов

Запрет кеширования с помощью сервера Apache

Впишите в .htaccess следующее:

Необходимые заголовки будут передаваться автоматически и специально писать их в PHP уже не нужно — кэш уже выключен!

Кеширование с помощью файла .htaccess

Кеширование javascript файлов с помощью файла .htaccess

Будьте осторожны при кешировании, т.к. при изменении файла пользователь может получить новый вариант только через 3 дня!

Работа php в html

Пропишите в своем файле .htaccess следующие строки:

Поиск страниц больше чем в одном каталоге

Иногда необходимо позволить веб-серверу искать страницы больше, чем в одном каталоге.

RewriteEngine on

Поддомены для пользователей

Если Вы хотите предоставлять адреса www.subdomain.domain.ru для страниц пользователей, вы можете использовать следующий набор правил для преобразования http://www.subdomain.domain.ru/path во внутренний путь /home/login/path :

Повреждение бинарного файла

Если при передаче файлов через формы (при указанном enctype=«multipart/form-data» ) бинарные данные повреждаются, пропишите в /cgi-bin/.htaccess директиву:

Ошибка SWF файлов

Ошибки при обращении к страницам, содержащим ключевые слова, типа $_REQUEST .

Такое может происходить из-за установленного модуля в Apache. По умолчанию он блокирует в запросах строки с SQL аргументами и другими потенциально опасными командами.

Возможные сообщения об ошибке:

Forbidden You don’t have permission to access /adm/index.php on this server. Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

Запрос небезопасен и был отвергнут.

Добавьте в .htaccess следующее:

Для сообщения: «POST /wp-admin/async-upload.php HTTP/1.1» 406 354 «-» «Shockwave Flash» можно снять защиту только на загрузку файлов на сервер:

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

Склейка страницы (301)

Обычно код главной страницы физически расположен в файле index.html или index.php, но сайт должен открываться по любому из запросов: yoursite.ru, yoursite.ru/index.html, www.yoursite.ru и www.yoursite.ru/index.html. Но для поисковых систем это четыре разные URL! Если не настроить .htaccess верно, поисковик добавит в свой индекс четыре одинаковые страницы. Это признак некачественного сайта. Избежать этой проблемы можно с помощью такого кода в .htaccess:

Все страницы-дубли будут склеены редиректом с кодом 301 с главной страницей – http://www.yoursite.ru/ . Дубли страниц без слэша в конце URL.

Чтобы предотвратить ситуацию с индексированием страниц www.yoursite.ru/about и www.yoursite.ru/about/ как разных, ставим следующий код:

Со страниц без слэша будет установлен редирект на «слэшевые».

Принудительная постановка замыкающего слеша

Следующий код всегда будет добавлять слеш в адрес URL вашего сайта, что хорошо помогает в области SEO сайта:

Загрузка файлов вместо открытия

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

AddType application/octet-stream .rar .doc .mov .avi .pdf .xls .mp4

Сжатие страниц

Междоменные шрифты для FF

При использовании встроенных шрифтов Firefox не позволяет брать их с внешних сайтов. Следующий код для файла .htaccess позволит обойти данное ограничение:

PHP в JavaScript

При разработке кода JavaScript иногда требуется использовать PHP в файлах .js, например, для получения данных из базы данных:

Разложить файлы robots.txt, sitemap.xml и т.п. в папки доменов

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

Блокируем User Agents

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

Переадресация по языку

Переадресация с http на https

Защита картинок от скачивания по ссылкам на других сайтах

Включая переходы без REFERER, т.е. когда адрес указывают в строке браузера:

Только по ссылкам на чужих сайтах:

Блокировка пользователей с определенным рефером

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

Особенности и секреты правильной настройки файла .htaccess

1,199 просмотров всего, 1 просмотров сегодня

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

Правильная настройка htaccess дает возможность отдельно настроить редиректы на сайте, прописать внутренние изменения url, добавить авторизацию по паролю и др. О том, как это можно сделать, поговорим далее.

Как правильно настроить .htaccess и зачем это нужно

Владельцы сайтов, которые пользуются услугами виртуального хостинга, доступа к httpd.conf чаще всего не имеют. Поэтому единственным способом управления сервером для них будет настройка файла htaccess.
По сути и по структуре, он напоминает httpd.conf. С одним отличием: прописанные в htaccess директивы будут действовать только на тот каталог, в котором расположен этот файл. А также на подчиненные папки и файлы. Но действовать они будут точно так же, как директивы глобального файла конфигурации. То есть, для каждого каталога можно указать отдельный файл .htaccess с нужными настройками, не меняя при этом глобальных настроек сервера и не обращаясь за помощью к хостеру.

С помощью директив, прописанных в конфигурационном файле, пользователь или владелец сайта получает возможность настройки:

  1. ЧПУ.
  2. Опций PHP.
  3. Кэширования.
  4. Редиректов.
  5. Обработки ошибок 404.
  6. Перенаправления на https
  7. Управления доступом и пр.

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

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

Синтаксис директив файла конфигурации достаточно прост.
При написании пары команд и их опций обязательно разделяются пробелом:


Команда параметр1 параметр2 флаги

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

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

  • Путь к файлу или директории указывается от корня сервера:
    /home/mdhscyhq/public_html/
  • Домен прописывается с указанием протокола:
    Redirect / https://yoursupersite.ru
  • Название файла должно содержать «точку»:
    .htaccess
  • Файл должен записываться в формате UNIX.

Путь от корня можно спросить у администратора сервера или посмотреть самостоятельно. Для этого достаточно запустить на сайте функцию PHP–phpinfo и посмотреть значение doc_root.

1.Настройка ЧПУ

ЧПУ, или человеко-понятный урл, положительно (хоть и незначительно) влияет на релевантность страницы сайта запросу пользователя с точки зрения поискового робота. А значит – повышает позицию выдачи в поиске. А еще более удобен для пользователя при навигации.

Сравните:
http://yoursupersite.ru/index.html? > и
http://yoursupersite.ru/razrabotka-sayta/

В последнем случае сразу становится понятно, на какой странице мы находимся и какую информацию можно на ней получить.
В ЧПУ можно прописать ключевые слова или фразы: кириллицей или транслитом.
Вот так, к примеру, из стандартного url:
tovar.html? > с помощью изменений настроек ЧПУ в htaccess можно сделать вполне понятный url:
tovar-101.html.

Или создать древовидную структуру url: category/tovar-123.html

2.Настройка свойств PHP

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

Директивы:
upload_max_filesize позволяет выполнить загрузку файлов размером до 32Мб (по умолчанию – до 16Мб).
post_max_size увеличивает размер постинга до 10Мб (стандарт – 2Мб).
max_execution_time позволяет использовать сложные скрипты, на выполнение которых необходимо более чем 30 стандартных секунд.

3.Кэширование данных

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

  • mod_headers — дает возможность устанавливать в заголовке ответа сервера разные правила кэширования для файлов различных типов.
  • mod_expires — отвечает за срок «устаревания» файлов, время, по истечении которого, файл будет помещен в кэш браузера.

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

4.Настройка редирект в htaccess

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

или при запросе отдельных страниц на сайте:

Правильный редирект в htaccess имеет следующий синтаксис:

Существует несколько несложных правил, которые стоит соблюдать при настройке переадресации через htaccess:

  • Редиректы страниц в файле нужно располагать от более частных (вверху страницы) к глобальным. То есть сверху вниз.
  • Необходимо избегать двух и более последовательных редиректов, т.к. это увеличивает время ответа и негативно оценивается поисковыми роботами.

Как правильно сделать 301 редирект в htaccess

В случае переноса сайта на новый домен или смены CMS возникает необходимость перенаправления пользователя со старых url на новые адреса. Редирект с номером ошибки 301 (Permament Redirect) сообщает роботу о том, что документы и страницы были перемещены на постоянной основе. Это позволяет сохранить позиции сайта в поисковых системах, сохранить ссылочную массу и PageRank.
Настройка 301 редиректа в htaccess может быть выполнена различными способами, в зависимости от предустановленного ПО и поставленных целей.
Самый простой вариант:

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

А так каждая страница старого домена перенаправляется на страницу с аналогичным url на новом домене:

5.Настройка 404 ошибки в htaccess

Удалили или перенесли страницу с сайта? Пользователь, перейдя по ссылке в поисковой системе или вводя неправильный url, увидит сообщение об ошибке 404. И, скорее всего, закроет вкладку.
Чтобы этого не произошло, более правильным будет отдельно настроить редирект 404 в htaccess и перенаправить посетителя на главную страницу сайта:

Однако это не всегда такое решение оправдано. Маркетологи рекомендуют создавать отдельную страницу «Not Found», которая будет работать на увеличение конверсии. Подробнее о дизайне страницы «Ошибка 404» можно почитать здесь. А перенаправить пользователя на нее можно с помощью следующих настроек в htaccess:

Аналогичным образом можно настроить вывод сообщений об ошибках:

6. Настройка редиректа на https в htaccess

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

7.Управление доступом

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

Владелец или администратор сайта может разрешить доступ пользователям с конкретного IP-адреса. Это выполняется следующим образом

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

Стандартный .htaccess

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

Данный конфиг позволяет решить следующие задачи:

  • Активация канонических директив
  • Активация рекомендованных директив » Битрикс=»null» монитор=»» li=»»>
  • Установить основное зеркало сайта с www сохраняя протокол http или https ( новое )
  • Установка основного зеркала сайта без www сохраняя http или https ( новое )
  • Удалить любое количество «/» стоящих рядом; site.ru////catalog//item > site.ru/catalog/item
  • HTTP > HTTPS
  • HTTPS > HTTP
  • Удалять «/» в конце URL если это файл
  • Добавлять «/» в конце URL если его там нет и это не файл. (работает в связке с вышестоящим, иногда требуется одно, иногда другое)
  • Удалить из URL index.php
  • Компрессия статического контента для GooglePagespeed тест
  • Добавлен AddType svg

Последовательность установки:

  1. Вставить код в начале .htaccess
  2. При вставке требуется указать правильное зеркало сайта, раскоментировав нужное, по умолчанию удаляет WWW, и включает HTTPS
  3. Удалить старый redirect перенаправление на основное зеркало.
  4. Если основное зеркало сайт HTTPS, то внесите протокол в robots.txt Host: https://site.ru , для http зеркал протокол уточнять не требуется.
  5. При установке HTTPS основным зеркалом, перейти на свой сайт и убедиться в отсутствие blocked:mixed

Проверить работу redirect
Сервис по генерации списка redirect

Если есть проблема с зацикливанием https

В случае работы nginx+apache возможен циклический редирект HTTP>HTTPS вызваны неправильными настройками сервера (не файла), Используя на backand http вместо https и по какой-то причине не могут передать протокол обращения от nginx в apache. В таком случае нужно отключить редирект на https и исправить ошибку или в веб сервере или подобрать подходящее условие, как правило подойдет:

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

Код конфигурационного файла каталога .htaccess.

Комментарии (27)

Ну во-первых, вы пишете:

| Для его работы в .htaccess требуется внести такие строки:

а на странице с документацией пишется совсем другое.

Во-вторых, скрипт предназначен для статичных страниц и вам на Тостере это внятно прояснили, как и варианты решения проблем.

Как вариант возможного решения: вы указываете маршрут на index.php, попробуйте указать вместо него просто адрес сайта или пустой слеш. Но вообще такое нужно смотреть и чинить, без полного кода решить наскоком не выйдет.

Спасибо за заметку.

Только что закрывает ifModule около компрессии? Кажется, он там лишний http://joxi.ru/ZrJe7JEt1DBglA

Он перенаправляет со страница без слеша, на страницу со слешем.
Но в url могут быть ссылки такого вида: site.ru/lang/type/name1.name2.name3
Если убрать RewriteCond % !\. тогда сайт ломается. Можно как-то сделать чтобы к ссылкам подобного вида (site.ru/lang/type/name1.name2.name3) добавлялся слеш в конце и все остальные условия работали?

Добрый день, Виктор! Спасибо за ответ
хостинг, как я понял, использует на сервере litespeed — может поэтому не срабатывает?

вот полное содержание файла .htaccess

# STARTNITRO
ExpiresActive On

#CSS JS XML TXT — 1 WEEK

Header set Cache-Control «max-age=604800, public»
ExpiresDefault «access plus 1 week»

#JPG JPEG PNG GIF SWF SVG — 1 WEEK

Header set Cache-Control «max-age=604800, public»
ExpiresDefault «access plus 1 week»
Header set Last-Modified «Wed, 05 Jun 2009 06:40:46 GMT»

#OTF WOFF TTF ICO PDF FLV — 1 WEEK

Header set Cache-Control «max-age=604800, public»
ExpiresDefault «access plus 1 week»

# ENDNITRO
# STARTCOMPRESSNITRO
RewriteEngine On
RewriteRule .* — [E=HTTP_IF_MODIFIED_SINCE:%]

RewriteCond % !-d
RewriteRule ^(\/?((catalog)|(assets)).+)\.css$ assets/style.php?l=4&p=$1&c=604800 [NC,L]

RewriteCond % !-d
RewriteRule ^(\/?((catalog)|(assets)).+)\.js$ assets/script.php?l=4&p=$1&c=604800 [NC,L]
AddType image/svg+xml .svg
AddOutputFilterByType DEFLATE image/svg+xml
AddType application/x-font-woff .woff
AddOutputFilterByType DEFLATE application/x-font-woff
# ENDCOMPRESSNITRO
# 1.To use URL Alias you need to be running apache with mod_rewrite enabled.

# 2. In your opencart directory rename htaccess.txt to .htaccess.

# For any support issues please visit: http://www.opencart.com

# Prevent Directoy listing
Options -Indexes

# Prevent Direct Access to files

Order deny,allow
Deny fr om all


# SEO URL Settings
RewriteEngine On
# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/

# Выбор основного зеркала без www

RewriteCond % on
RewriteRule .* — [E=SSL:s]
RewriteCond % ^www\.(.*) [NC]
RewriteRule ^(.*)$ http%://%1/$1 [R=301,L]

# Убираем повторяющиеся слеши (/) в URL

RewriteCond % //
RewriteRule .* /$0 [R=301,L]

# Убираем слеши в конце URL для статических файлов (содержит точку)

# Добавляем слеш(/), если его нет, и это не файл

# Убираем index.php, если он есть в конце URL

# Компрессия статического контента для гугл спид тест

AddType image/svg+xml .svg
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE image/svg+xml

ExpiresActive on
ExpiresByType image/jpeg «access plus 3 day»
ExpiresByType image/svg «access plus 3 day»
ExpiresByType image/gif «access plus 3 day»
ExpiresByType image/png «access plus 3 day»
ExpiresByType text/javascript «access plus 3 day»
ExpiresByType text/css «access plus 3 day»
ExpiresByType application/javascript «access plus 3 day»

RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteRule ^system/download/(.*) index.php?route=error/not_found [L]
RewriteCond % !-f
RewriteCond % !-d
RewriteCond % !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

### Additional Settings that may need to be enabled for some servers
### Uncomment the commands by removing the # sign in front of it.
### If you get an «Internal Server Error 500» after enabling any of the following settings, restore the # as this means your host doesn’t allow that.

# 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it:
# php_flag register_globals off

# 2. If your cart has magic quotes enabled, This may work to disable it:
# php_flag magic_quotes_gpc Off

# 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try
# php_value upload_max_filesize 999M

# 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value post_max_size 999M

# 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_execution_time 200

# 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors wh ere forms are not saving all fields
# php_value max_input_time 200

# 7. disable open_basedir limitations
# php_admin_value open_basedir none

Распространённые сниппеты .htaccess

Файл .htaccess (hypertext access) это конфигурационный файл на уровне директорий, он поддерживается несколькими веб-серверами. Благодаря ему возможно децентрализованное управление настройками веб-сервера. Эти файлы раскиданы по каталогам сервера и они способны изменять глобальные настройки сервера для конкретной директории, в которой они размещены и для поддиректорий.

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

Программное обеспечение сервера Apache обеспечивает распределённое (т. е. на уровне директорий) конфигурирование посредством файлов Hypertext Access. Эти файлы .htaccess включают локализованную тонкую настройку универсальных директив системной конфигурации Apache, которые определены в главном конфигурационном файле Apache. Местные директивы .htaccess должны работать из файла под названием .htaccess. У пользователя должны быть надлежащие разрешения для доступа и/или редактирования файла .htaccess. Кроме того, права доступа файла .htaccess никогда не должны иметь разрешение на запись кем угодно — т. е. это настройка параметров разрешений “644”, которая позволяет всеобщий доступ для чтения, а разрешение на запись даёт только пользователю. Наконец, правила .htaccess применяются к родительской директории (в которой лежит файл) и всем поддиректориям. Т.е. чтобы применить правила настройки ко всему веб-сайту, разместите файл .htaccess в корневой директории сайта.

Обычное использование .htaccess

  • Авторизация, аутентификация — Файл .htaccess часто используется для установки ограничений безопасности для каталога, помните про “access” в имени файла? .htaccess часто сопровождается файлом .htpasswd, в котором собраны валидные имена пользователей и их пароли.
  • Переписывание URL — Серверы часто используют .htaccess для перезаписи длинных, чрезмерно сложны URL в более короткие и лёгкие для запоминания.
  • Блокировки — Используются allow/deny для блокировки IP адреса или домена. Также полезен для блокировки плохих ботов, рипперов и рефереров. Часто используется для ограничения доступа паукам поисковых машин.
  • SSI — включают инклуды на стороне сервера.
  • Листинг каталогов — Контролирует, как сервер будет реагировать, когда специфичная веб-страница (обычно это index.htm, index.html, index.php или любая другая – в зависимости от настройки) отсутствует.
  • Настройка страниц ошибок — Изменение страницы, которая показывается при возникновении ошибки на стороне сервера, например, ошибки HTTP 404 Страница не найдена или дают знать поисковым машинам, что страница была перемещена — HTTP 301 Moved Permanently.
  • MIME types (типы) — Инструктирует сервер, как работать с различными типами файлов.
  • Cache Control (контроль кэша) – .htaccess файлы позволяют серверу контролировать кэширование веб-браузерами и проксями для уменьшения нагрузки на сеть, на сервер и предотвращения проявления лагов.

Комментирование кода в .htaccess

Комментирование — это основа для поддержания контроля за определённым участком кода. Комментарии в коде файла .htaccess ставятся построчно, каждая строка комментариев начинается со знака решётки #. Таким образом, если нам нужно закомментировать несколько строк файла .htaccess, то нам нужно поставить несколько решёток в начале каждого файла. Кроме того, из-за не всегда предсказуемого поведения файла htaccess, разумно включать только алфавитные символы (и, возможно, несколько тире и подчёркиваний) в комментарии файла .htaccess.

Преимущества .htaccess

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

Недостатки .htaccess

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

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

Важная информация для нубов в .htaccess

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

Определения символов регулярных выражений для .htaccess

Решётка # инструктирует сервер игнорировать эту строку. Используется для добавления комментариев. Каждая строка комментариев требует свою собственную #. При добавлении комментариев хорошей практикой является использование только букв, номеров, тире и подчёркиваний. Подобная практика поможет ликвидировать/избежать потенциальные ошибки сервера при разборе файлов настроек.

– Запрещено: инструктирует сервер вернуть код ошибки 403 Forbidden клиенту

– Последнее правило: поручает серверу остановить перезапись после того, как эта директива будет отработана.

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

– Больше нет: инструктирует сервер для отправки сообщения статуса Gone (больше не существует).

– Прокси: инструктирует сервер обработать запрос модом mod_proxy

– Цепочка: поручает серверу связать текущее правило с предыдущим.

– Перенаправление: инструктирует Apache сделать редирект, в результате чего браузер запрашивает перезаписанный/модифицированный URL.

– Без регистра: устанавливает любые связанные аргументы как регистронезависимые.

– Пройти через: инструктирует mod_rewrite вернуть Апачу полученный URL для дальнейшего изменения в соответствии с заданными правилами.

– Или: означает логическое “или”, которое связывает два выражения и если хотя бы одно из них будет истинной, то будет выполняться заданное правило.

– Не экранировать: инструктирует сервер парсить вывод без экранирования символов.

– Без подзапросов: инструктирует сервер пропускать директивы если они находятся внутри подзапроса.

– Добавить строку запроса: говорит серверу добавить строку запроса в конец выражения (URL).

– Пропустить: инструктирует сервер пропустить последующее “x” число правил если выявлено совпадение.

[E=variable:value]

– Переменные окружения: предписывает серверу установить значение переменной окружения “variable” на “value”.

[T=MIME-type]

– Тип Mime: объявляет тип mime целевого ресурса.

– задаёт набор символов, в котором любой символ внутри квадратных скобок будет вызывать соответствие, например, [xyz] будет соответствовать x, y или z.

– набор символов, в котором любые комбинации внутри квадратных скобок будут вызывать соответствие, например, [xyz]+ будет соответствовать любому числу иксов, игреков и зедов или любым другим комбинациям этих символов.

– означает НЕ в наборе символов, например, [^xyz] будет соответствовать любому символу, кроме x, y и z.

– тире (-) между двумя символами в наборе символов ([]) означает диапазон символов между ними. например, [a-zA-Z] соответствует всем маленьким и большим буквам от a до z.

– определяет точное количество n, предшествующего символа, например, x <3>соответствует ровно трём иксам.

– указывает на n или больше количество повторяющиеся символов. Например, x <3,>соответствует трём или более иксам.

– устанавливает диапазон чисел между n и m предшествующего символа. Например, x <3,7>соответствует трём, четырём, пяти, шести или семи иксам.

– используется для группировки символов, в результате эти символы рассматриваются как единый блок. Например, (perishable)?press будет соответствовать press, с или без префикса perishable.

– означает начало тестируемой строки regex (regex = регулярное выражение), например, начало аргумента и последующие символы.

– означает конец тестируемой строки regex (regex = регулярное выражение), например, конечный символ и предшествующие ему символы.

– указывает на опциональность предшествующего символа. Например, monzas? Будет соответствовать monza или monzas, в то время как mon(za)? Будет соответствовать mon или monza. Например, x? соответствует нулю или одному x.

– объявляет отрицание. Например, “!string” соответствует чему угодно кроме “string”.

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

– говорит не перезаписывай URL, используется примерно так: “…domain.com.* – [F]”. Реальный пример RewriteRule “.exe” “-” [F] запрещать загрузку файлов с расширением exe. Ведь зачем нам проводить какие-то манипуляции с адресом, если запрос всё равно будет отклонён?

– соответствует одному или более предшествующему символу. Например, G+ соответствует одной или более G, в то время “+” будет соответствовать одному или более символу любого рода.

– говорит о том, что предшествующий символ повторяется ноль или более раз. Например используйте “.*” как wildcard.

– задаёт оператор логическое “или”. Например, (x|y) соответствует x или y.

– экранирует специальные символы ( ^ $ ! . * | ). Например, используйте “.” для индикации/экранирования буквальной точки — т. е. нам нужна именно точка.

– означает буквальную точку (экранированную).


– ноль или более слешей.

– ноль или более случайных чисел.

– означает пустую строку.

– стандартный паттерн, означающий «что угодно».

– означает один символ, который не слеш и не точка.

– означает любое количество символов, которые не содержат слешей и точек.

– это буквальное выражение — в этом случае буквальное означение строки – “http://”.

^domain.*

– означает строку, которая начинается на “domain”, после которого могут следовать любые символы.

^domain.com$

– определяет точную строку “domain.com”.

– тестирует, является ли строка существующей директорией

– тестирует, является ли строка существующим файлом

– тестирует, не нулевого ли размера файл в тестовой строке

Коды заголовков перенаправления

301 – Перемещён навсегда

302 – Перемещён временно

410 – Больше нет

Распространённые сниппеты .htaccess

Переписывание и Перенаправление

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

Включения базового переписывания

Адрес принудительно будет иметь www

Адрес принудительно будет иметь www в общем виде

Адрес принудительно НЕ будет иметь www

Адрес принудительно НЕ будет иметь www в общем виде

Принудительное использование протокола HTTPS

Принудительное использование протокола HTTPS за прокси

Полезно если вы имеете прокси перед вашим сервером для TLS.

Принудительное добавление слешей на конце адреса

Удаление слешей на конце адреса

Удаление слешей на конце адреса в произвольных адресах

Этот сниппет будет перенаправлять пути, заканчивающиеся на слэши, на аналогичные без концевых слешей (кроме реальных директорий), например http://www.example.com/blog/ на http://www.example.com/blog. Это важно для SEO, поскльку рекомендуется иметь канонические URL для каждой страницы.

Перенаправить на единичную страницу

Псевдоним (алиас) для единичной директории

Псевдоним (алиас) пути до скрипта

В этом примере приведён файл index.fcgi, который лежит в каталоге и все запросы к этому каталогу, которые потерпели неудачу из-за отсутствия файла/директории будут перенаправлены на скрипт index.fcgi. Это хорошо, если вы хотите, чтобы baz.foo/some/cool/path обрабатывался скриптом baz.foo/index.fcgi (который также поддерживает запросы на baz.foo) в тоже время поддерживается baz.foo/css/style.css и другое подобное. Узнать истинный путь можно из переменной окружения PATH_INFO, которая доступна в скриптах.

Это менее эффективная версия директивы FallbackResource (поскольку использование mod_rewrite сложнее, чем просто обработка директивой FallbackResource), но также и более гибкое.

Перенаправление всего сайта

Этот способ не ломает ссылки. Это означает, что запрос www.oldsite.com/some/crazy/link.html превратится в www.newsite.com/some/crazy/link.html. Это крайне полезно, когда вы просто переносите сайт на новый домен.

Псевданимы (алиасы) чистых URL

Этот сниппет позволяет вам использовать «чистые» URL — вроде тех, что без PHP расширения, например, example.com/users вместо example.com/users.php.

Развертывание пользовательских страниц ошибок

# использование пользовательских страниц ошибок

Обеспечиваем Универсальный Документ Ошибки (Universal Error Document)

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

# перенаправляем всех посетителей на альтернативный сайт, но сохраняем полный доступ для вас

Безопасность

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

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

xxx.xxx.xxx.xxx это ваш IP. Если вы замените последние три цифры, например, на 0/12, этим вы определите диапазон IP внутри этой сети, это оградит вас от проблемы перечислять по отдельности все разрешённые IP.

Разрешить доступ для всех кроме спамеров

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

Скрытые файлы и директории (те, чьи имена начинаются с точки .) должны в большинстве, если не все, быть недоступны для других. Например к этим файлам относятся .htaccess, .htpasswd, .git, .hg…

Как вариант, вы можете выдавать ошибку Not Found (не найдено), чтобы не давать атакующему подсказку:

Отклонить доступ к резервным копиям и исходным кодам

Эти файлы могут быть оставлены некоторыми редакторами text/html (вроде Vi/Vim) и представляют огромную брешь в безопасности, если станут общедоступными.

Отключение показа содержимого директорий

Отключение показа ваших изображений (хотлинкинг) на других сайтах

Отключение вставки ваших изображений на чужие сайты (хотлинкинг) для конкретных доменов

Иногда вы хотите отключить хотлинкинг только для некоторых плохих парней.

Защита директории пароолем

Для начала вам нужно где-нибудь создать файл .htpasswd:

Затем вы можете использовать этот файл для аутентификации:

Защита паролем файла или нескольких файлов

Блокировать посетителей по Referrer (откуда пришли)

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

Предотвращение вставки сайта во фреймы

Это не даёт веб-сайту быть вставленным во фреймы (например, быть размещённым в теге iframe), хотя ещё разрешён фрейминг для особых URI.

Предотвращаем доступ к .htaccess

Добавьте следующий блок кода в ваш файл htaccess для добавления дополнительного слоя безопасности. Любые попытки получить доступ к файлу будут приводить к сообщению об ошибке 403. Конечно, ваш первый уровень защиты файлов htaccess заключается в настройке параметров разрешения на файлы через CHMOD на 644.

Предотвращаем доступ к определённым файлам

Для ограничения доступа к определённым файлам, добавьте следующий блок кода и отредактируйте имя файла “file.txt”, заменив его на имя файла, который вы хотите защитить.

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

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

Предотвращаем неавторизованный просмотр директорий

Закройте неавторизованный просмотр директории, указав серверу отвечать ошибкой “xxx Forbidden – Authorization Required” для любой запрос просмотра директории.

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

Точно также это правило будет препятствовать просмотру содержимого папок на сервере:

Директива IndexIgnore может использоваться для предотвращения отображения выбранных типов файлов:

Меняем дефолтную (по умолчанию) индексную страницу

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

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

Маскируем расширение скрипта

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


Ограничение доступа к локальной сети

Безопасность директорий по IP адресами и/или доменам

Все IP адреса разрешены, кроме 1.1.1.1 и codeby.net

Все IP адреса отклоняются кроме 1.1.1.1 и codeby.net:

Блокировка посетителей основываясь на ссылающемся домене

Запрещаем или разрешаем доступ к домену для определённого диапазона IP адресов

Подобным образом разрешаем диапазон IP по номеру CIDR:

Блокируем IP диапазон сокращённой записью адресов

Разрешаем IP диапазон сокращённой записью адресов:

Блокируем или пропускаем множество IP адресов на одной строке

Сохраним немного места блокировкой множества IP адресов или диапазонов на одной строке

Пропускаем много IP адресов или диапазонов на одной строке:

Останавливаем хотлинкинг, выдавая вместо изображений другой контент

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

Чтобы предоставить разрешения на вставку изображений с вашего сайта на определённые сайты, вставьте этот кусок кода после строки содержащей адрес домена (в нашем примере это “codeby.net”). Не забудьте заменить “goodsite.com” на настоящее доменное имя сайта:

Блокируем плохих роботов, риперов сайтов и оффлайн браузеры

Или, вместо отправки дружелюбного сообщения об ошибке, отправляйте этих плохих парней на веб-сайт по вашему выбору, просто заменив RewriteRule в последней строке на один из следующих примеров:

Или отправляем их в виртуальную чёрную дыру фальшивых email адресов:

Вы также можете включить заданных рефереров для вашего чёрного списка с использованием HTTP_REFERER. Здесь мы используем “bad-domain.ru” в качестве нашего заблокированного примера, и мы используем “yourdomain” в качестве вашего домена (домена, для которого вы блокируете переходы с iaea.org):

Защищаем паролем файлы, каталоги

Требуем SSL (Secure Sockets Layer – уровень защищённых сокетов)

Автоматически CHMOD различные типы файлов

Маскировка расширения файла

Этот метод будет маскировать все типы файлов (т. е. расширения файлов) и представлять их как .php файлы (или с любым другими расширением по вашему выбору):

Защищаем от атаки-в-обслуживании (DOS) ограничением размера выгружаемого файла

Защищаем каталоги отключением исполнения скриптов

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

Запрашиваем у пользователей пароль на время разработки сайта

Закрываем доступ к каталогу в заданные периоды времени

Производительность

Сжатие текстовых файлов

Задать время истечения заголовков

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

Отключение eTags

Удалив заголовок ETag, вы отключаете кэши и браузеры от возможности валидировать файлы, следовательно они будут вынуждены полагаться на ваши заголовки Cache-Control и Expires.

Множественное использование правил из httpd.conf

Сберегите своё время и силы по созданию дублирующих правил для множества виртуальных хостов. Пропешите их только один раз в вашем файле httpd.conf. Затем просто укажите целевому файлу (файлам) htaccess наследовать правила из httpd.conf, это делается следующей директивой:

Улучшите производительность через AllowOverride

Повышение производительности через указание кодировки

Предотвратим определённую ошибку 500, указав кодировку по умолчанию. Примечание: замените “utf-8” на желаемую юкодировку.

Повышение производительности за счет сохранения полосы пропускания

Для повышения производительности на серверах с включённым PHP добавьте следующую директиву.

Отключаем подпись (сигнатуру) сервера

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

Улучшаем скорость сайта включением кеширования файлов

* Конвертирование распространённых интервалов в секунды:

  • 300 = 5 минут
  • 2700 = 45 минут
  • 3600 = 1 час
  • 54000 = 15 часов
  • 86400 = 1 день
  • 518400 = 6 дней
  • 604800 = 1 неделя
  • 1814400 = 3 недели
  • 2419200 = 1 месяц
  • 26611200 = 11 месяцев
  • 29030400 = 1 year = никогда не истечёт

Разное

Установка переменных PHP

Установка временной зоны сервера (timezone)

Указываем серверу жить по часам определённой временной зоны

Установка адреса электронный почты администратора сервера

Задаём email по умолчанию для администратора сервера

Устанавливаем язык по умолчанию

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

Объявляем особые/дополнительные типы MIME

Разрешаем только запросы GET и PUT

Выдаём разные файлы в зависимости от метода запроса

Устанавливаем настройку кодировки и других заголовков без мета тегов

Выполнение различных скриптов через скрипт cgi

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

Включение символьных ссылок

Включите символьные ссылки (symlinks) добавлением следующей директивы к файлу htaccess целевой директории. Примечание: для работы директивы FollowSymLinks должна быть включена опция AllowOverride в конфигурационном файле сервера.

Включение AllowOverride

Для улучшения производительности рекомендуется включать AllowOverride только в отдельной директории или директориях для которых это нужно. В следующем отрезке кода мы включаем привилегии AllowOverride только в заданной директории.

Комментируем файл htaccess

Переименование файла htaccess

Эта директива должна быть размещена в конфигурационном файле сервера, иначе она не будет работать

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

Принудительная загрузка

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

Предотвращение загрузки

Иногда вы хотите принудить браузер отображать контент вместо его загрузки.

Разрешить междоменные шрифты

CDN-served webfonts не работают в Firefox или IE из-за CORS. Этот сниппет решает эту проблему.

Автоматическая кодировка UTF-8

Ваш текстовый контент должен всегда быть закодирован в UTF-8, так?

Переключение на другую версию PHP

Если у вас общий хостинг, есть шанс, что установлена более чем одна версия PHP, а иногда вам нужна конкретная версия для вашего веб-сайта. Следующий сниппет должен переключить PHP версию для вас

Отключить Internet Explorer Compatibility View

Просмотр в режиме совместимости в IE может оказать влияние на как отображаются некоторые сайты. Следующий сниппет должен принудить IE использовать движок Edge Rendering и отключить просмотр в режиме совместимости.

Работа с изображениями WebP

Если поддерживаются WebP и изображения с расширениями .webp и теми же именами найдены в том же месте где и изображения jpg/png, которые нужно отправить, то тогда вместо них отправляются изображения WebP.

Использование базовой проверки правописания URL


Указываем браузеру загружать мультимедийные файлы, а не отображать их

Указываем серверу отображать исходный код для динамических типов файлов

Активируем SSI для файловых типов HTML/SHTML

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

Отключаем magic_quotes_gpc для серверов с PHP

Включение MD5 digests

Примечание: включение этой опции может стать причиной относительного замедления производительности сервера

Файл .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: о редиректах и перезаписи, а также о конфигурировании веб-сервера и его защите.

Что такое .htaccess? (Hypertext Access)

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

Из-за специфики названий тип файла htaccess не всегда заметен. Чтобы его увидеть, необходимо активировать “ dot files ” или “ .files ” в вашем программном обеспечении FTP/Cpanel. Если возникают сложности, можно создать и редактировать файл как .txt (просто изменить расширение и название во время загрузки).

Всегда делайте бэкап htaccess, когда собираетесь внести какие бы то ни было изменения. Если ошибетесь, сайт высветит ошибку 500 Internal Server Error, и для последнего изменения можно будет просто поместить символ # перед кодом в файле htaccess.

  1. Вы можете комментировать ссылки в htaccess с помощью # , количество символов не имеет значения; к примеру, ## или ### можно использовать для описательных комментариев, а один # — для активации/деактивации кода.
  2. Используйте блокнот для редактирования в Windows, это удобно.
  3. Всегда делайте бэкап.
  4. Htaccess применяется к каталогу, в котором находится, и, таким образом, ко всем каталогам уровнем ниже; это значит, что при перемещении в корневой каталог, он сможет управлять всем сайтом.
  5. Ошибки в htaccess провоцируют 500 Internal Server Error ( внутреннюю ошибку сервера), но без паники — восстановите резервную копию или откомментируйте последний код.

Перезапись кода

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

Управление ошибками


По умолчанию браузер показывает страницу 404, с помощью htaccess страницу можно изменить. Создание интересной страницы 404 — тема для отдельной статьи.

Вы можете создавать собственные страницы в любом формате PHP/HTML.

Они не обязательно должны быть в корневом каталоге, но обязательно на одном сервере.

Если поместите URL целиком, тогда статус 404 не появится, скорее всего будет 301 или 200 Error.

ErrorDocument 404 http://www.example.com/404.html

ErrorDocument 401 /401.html

ErrorDocument 403 /403.html

ErrorDocument 404 /404.html

ErrorDocument 400 /400.html

Можно использовать больше или меньше кодов. Полный список кодов ошибок по ссылке Wikipedia.

Временная блокировка индексации

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

Это больше относится к сфере общей безопасности и юзабилити, чем к SEO .

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

Options All -Indexes

Set Default Index File

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

Защита Htaccess

Ваш файл htaccess потенциально уязвим, поэтому обезопасьте его.

Если у вас WordPress, такой код защитит файл wp-config.php.

Защита локации паролем

С помощью htaccess вы можете защитить определенные сегменты сайта. Вот полезный инструмент для создания этих файлов http://www.tools.dynamicdrive.com/password/

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

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

Нужно загрузить файл htpasswd в соответствующее место на сервере с помощью любой программы для пересылки файлов, это должен быть каталог не для общего доступа (не помещайте в /www/ или /htdocs/ ). И еще нужно записать путь файла из корневого каталога, это может выглядеть так:

После загрузки в htaccess добавляется новый раздел.

Блокировка прямых ссылок (хотлинкинг)

htaccess экономит полосу пропускания, таким образом решается проблема известная как хотлинк ( включение в веб-страницу ресурсов чужого сервера) .

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

Если только 1-2 специфических сайта (обычно социальные) приводят к данной проблеме, используйте код:

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

«Сохранить как»

Если у вас блог или другой контентный сайт, определенные файлы будут провоцировать диалог “Save As” (сохранить как), вместо того, чтобы браузер их загружал. Этот код идеален для каталога ресурсов.

Целесообразнее выбрать определенный подкаталог для кода.

## Force a file to download with a “Save As” ##

AddType application/octet-stream .doc .mov .avi .pdf .xls .mp4

Перенаправить всех, c сохранением IP

Этот способ удобен во время внеплановых работ по технической части.

## Redirect Everyone but Selected IP Address ##

ErrorDocument 403 http://www.myoldsite.com

Allow from 111.111.111.111

Понадобится изменить ваш собственный IP-адрес (скопировать линию для каждого IP сотрудников), и отключить это, когда все будет готово.

Выборочная блокировка IP

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

Также вы можете с помощью этого сайта сгенерировать код блокировки любых IP:

deny from 127.0.0.1

deny from 127.0.0.2

deny from 127.0.0.3

Раздел 2: перенаправления и перепись

Htaccess позволяет переписать и изменить URL, заменить автоматически созданные ссылки.

Перенаправление с http:// на www

Это старая проблема — добиться, чтобы сайт индексировался и в http://mydomain.com, и в www.mydomain.com.

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

Данная часть кода превратит любой запрос для версии http в www.

RewriteCond % ^example.com [NC]

RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

Измените example.com на своей домен.

Перенаправление файла индекса (Index File) в корневой каталог

Еще одна проблема двойной индексации: поисковики индексируют и

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

В этом коде нужно изменить и название файла индекса (в 99% случаев это просто индекс), и расширение (обычно html, htm or php).

Перенаправление всех страниц на SSL

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

Еще понадобится сертификат безопасности и настройки сервера.

RewriteRule ^(.*)$ /downtime.html [R=302,L]

## Redirect all Pages to Secure ##

Стандартное перенаправление 301

Перенаправление 301 сообщает Google и браузерам, что запрашиваемая страница перемещена в другое место.

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

Это намного лучше в сравнении со страницей 404, так, по крайней мере, внешние ссылки будут попадать на рабочие страницы.

## Standard 301 Redirect for Permanent Changes ##

redirect 301 /old-page.html http://www.example.com/newpage.html

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

Для больших сайтов перенаправления целесообразнее группировать по дате — так проще. Помните, что можно добавить # и превратить линию в комментарий.

Стандартное перенаправление (301) — подкаталог

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

Есть два способа сделать это:

## Redirect for a Directory – Preserves Request ##

Первый — сохраняет запрашиваемый файл. Если кто-то запрашивает mysite.com/blog/example.html — последует перенаправление на mystie.com/example.html.

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

Лучше убедиться, что новые файлы присутствуют, в противном случае появится 404.

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

## Redirect a Directory – Does not preserve Request ##

RedirectMatch 301 ^/old-folder(.*)$ http://www.example.com/new-page.php

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


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

## Standard 302 Redirect for Temporary Changes ##

redirect 302 /old-page.html http://www.example.com/newpage.html

Изменение типа запросов файлов

Иногда нужно изменить типы файлов, для лучшего сжатия изображений, или для специального дополнения с php; htaccess справится со всем этим.

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

## Code to make all HTML requests become PHP requests ##

RedirectMatch 301 (.*)\.html$ http://www.example.com$1.php

Для кастомизации вы можете заменить типы файлов, в данном случае html — старый тип, а php — новый.

Перенаправьте все подкаталоги, за исключением корневого каталога

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

## Redirect an Entire Domain – Preserve Request ##

RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

## Redirect all Subfolders to New Domain but Keep Root Intact ##

Перенаправление всего домена

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

У вас должен быть Google Webmaster Tools, установленный на старом домене, затем вы сможете сообщать Google, что перемещаете домены.

Есть два способа: с сохранением запросов и без. Если у нового домена будет такой же сайт и столько же страниц и ресурсов, тогда лучше сохранить запросы. Другими словами, пользователь, запрашивающий /best-page.html на старом сайте, увидит best-page.html на новом.

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

По сути, нужно отдельно перенаправить разделы веб-сайта на соответствующие разделы нового сайта, но есть более простой способ.

## Redirect an Entire Domain – No Preservation ##

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

Перепись динамического URL

Большинство динамических URL выглядят примерно так:

Они состоят из домена, файла и строки запросов, которая, в свою очередь, состоит из двух частей : поля и значения.

Для оптимизации URL нужно убрать строку запросов и использовать ее для создания структурированного URL.

В первом случае сделаем URL, который заканчивается как статический файл, то есть превратим URL в http://www.mysite.com/posts-about-widgets.php

Задается маппинг старого URL на новом.

Здесь три линии; первая определяет место старого URL на новом, вторая — место 1-ой строки запросов, третья — точка остановки, чтобы избежать беспрерывного перенаправления.

Первая линия позволяет установить формат новой страницы, в нашем случае это http://www.mysite.com/posts-about-widgets.php.

Вы можете изменить первую часть URL.

В скобках в конце — поле значения строки запросов, которая сюда переносится. Так URL выглядит достаточно динамично, чтобы отображать отношения с базой данных.

В этом примере — посты из категории виджетов, поэтому нужны соответствующие ключевые слова в URL.

PHP — тип файла, который используется в данном случае, но это может быть html или htm.

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

Вторая линия содержит ссылку на переменную, понадобится изменить поле — добавить ваш URL, а все остальное оставить. По сути, этот код сообщает: «любое количество различных символов и цифр».

Теперь у нас новая страница, но, вероятнее всего, система все еще будет генерировать старые ( уродливые) URL, поэтому нужно перенаправить людей на новую страницу. Для этого понадобится правило переписи/замены Rewrite Rule , которое заменяет запросы для строки запросов в новом ярком URL:

Относительно просто, не так ли? Нужно только поместить ваш старый URL в первую часть, ваш новый URL — во вторую часть. И вуа-ля! Динамическое перенаправление на новую страницу со старой переменной готово!

Совместим части кода. Мы заменили пример с текстом для вставки, чтобы запомнить части, к которым относится каждое утверждение (statement).

Возможно, вы захотите перейти к новому типу URL, возможно, вернуться обратно, к странице http://www.mysite.com/posts/widgets instead of that .php. Это также возможно, нужно лишь немного изменить код.

RewriteRule ^new-page-([^/]+).php/?$ /old.php?field=$1&foo=bar [L]

RewriteRule ^old\.php$ /new-page-%1.php? [L,R=301]

## Rewrite Dynamic URL to A Static SubFodler ##

RewriteRule ^new-folder/([^/]+)/?$ /old.php?field=$1&foo=bar [L]

RewriteRule ^old\.php$ /new-folder/%1/? [L,R=301]

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

Раздел 3: скорость и тонкая настройка

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

GZIP compression

GZIP compression — серверная функция, которая уменьшает вес веб-страниц и скриптов прежде, чем они отправляются в браузер.

Прежде эта технология была довольно несовершенной, в особенности в безопасных разделах и платежных шлюзах. Сейчас все на порядок лучше. Большая часть браузеров (даже старых) принимает GZIP.

Есть несколько вариантов активировать GZIP. Не нужно изменять код — просто скопируйте и вставьте.

На этом сайте можно проверить, активирован ли GZIP на вашем ресурсе, и сколько времени/места сэкономлено.

Вот четыре способа, выберите один из них:

php_value output_handler ob_gzhandler

css_value output_handler ob_gzhandler

js_value output_handler ob_gzhandler

mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$

mod_gzip_item_include handler ^cgi-script$

mod_gzip_item_include mime ^text\.*

mod_gzip_item_include mime ^application/x-javascript.*

mod_gzip_item_exclude mime ^image\.*

mod_gzip_item_exclude rspheader ^Content-Encoding:.*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

Активация кэширования

Кэширование позволяет постоянным посетителям не загружать повторно каждый элемент сайта. Если у вас WordPress, тогда можно взять несколько плагинов, например WP Hyper Cache.

Если у вас статический сайт, htaccess дает возможность применить кэширование. Стоит все перепроверить. Если у вас нестандартная CMS, или какой-либо динамический контент, ошибки с кэшированием могут привести к тому, что сайт перестанет обновляться. Поэтому стоит консультироваться с разработчиками.

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

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

## Enable Caching ##

Header set Cache-Control “max-age=2592000”

Header set Cache-Control “max-age=604800”

## Files to Cache for One Day ##

Header set Cache-Control “max-age=43200”

Header unset Cache-Control

GZIP и кэширование существенно улучшают производительность сайта.

Минимизация 404 за счет проверки грамматических ошибок

Check Spelling — это модуль сервера Linux Server Module. Check Spelling проверяет сервер на предмет наличия подобных URL.

К примеру, пользователь допускает ошибку, вписывая в браузер такой адрес:

Но на самом деле он/она хотел написать:

Check Spelling фиксирует такую незначительную ошибку и исправляет ее (если, конечно, не существует caje/red.html). Также учитывается состояние регистра строчных и прописных символов в URL.

##Make Linux correct case sensitive urls/slight typos in urls##

PROG-TIME

Управление доступом с помощью htaccess. Как изменить доступ к сайту

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

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

Как изменить доступ к файлам, с помощью .htaccess?

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

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

Первая директива, с которой мы познакомимся, это директива Order. Синтаксис директивы прост и она может быть использована в двух вариантах:

Order Deny,Allow – это начала кода, которое показывает, что после него будут перечислены параметры ограничения доступа к файлам.

Allow – разрешает доступ.

В зависимости от выбранного варианта [Deny,Allow] или [Allow,Deny] для директивы Order, мы изменяем логику работы сервера. Если используем первый вариант (Deny,Allow), то мы сообщаем серверу, что хотим запретить доступ для всех (deny), кроме тех, которым разрешим (Allow).

Когда мы используете второй вариант (Allow,Deny), то подразумевается, что мы разрешаем доступ всем, кроме определенных IP.

Здесь стоит отметить, что на самом деле использование директивы Order не является обязательным и возможно использование директив Deny и Allow без директивы Order. Также не будет ошибкой, если, к примеру, объявив в директиве Order вариант Deny,Allow, мы сначала используем директиву Allow, а затем Deny. Хотя все же лучше будет, если мы в этом вопросе не будем отходить от рекомендаций документации.

Как закрыть доступ для всех?!

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

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

Как закрыть доступ всем, кроме определенного ip?!

Если вы захотите открыть при этом доступ к сайту с конкретного IP, тогда его можно указать в директиве Allow. Например, откроем доступ для IP 127.0.0.1:

Также можно открывать доступ для нескольких IP. Для этого достаточно перечислить их через пробел:

Как закрыть доступ к определенной директории сайта?!

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

Как закрыть доступ к файлу на сайте?!

А что, если мы хотим запретить доступ не к папке, а к файлу. Для этого мы воспользуемся еще двумя директивами: Files и FilesMatch. Данные директивы похожи на HTML-теги, поскольку требуют закрывающей директивы и заключены в знаки меньше/больше:

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

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

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

Цукерберг рекомендует:  Вакансии ФГБУ Центр Агроаналитики
Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих