19 полезных возможностей файла .htaccess

Содержание
  1. Authentication example
  2. Создаем .htaccess
  3. Примеры 301 редиректов в .htaccess
  4. 2.1. Редирект с одной страницы на другую
  5. 2.2. Редирект со всех файлов .htm на .html
  6. 2.4. Удаление лишних слэшей в адресе URL
  7. 2.5. Реврайт без редиректа
  8. 2.6. Простановка замыкающего слеша в конце адреса главной страница
  9. 2.8. Редирект GET параметров
  10. 2.9. Редирект на мобильную версию сайта m.site.ru
  11. 2.10. Редирект с поддомена
  12. Где находиться файл htaccess в WordPress?
  13. Как включить кеширование браузера правильно
  14. Как включить файл htaccess и проверить его работу
  15. Способ 1
  16. Способ 2
  17. Когда (не) использовать файлы .htaccess
  18. Что обязательно нужно сделать при настройке htacces?
  19. .htaccess переадресация
  20. Блокируем хотлинки с других сайтов
  21.  Перенаправим RSS фиды WordPress на Feedburner
  22. Изменим страницы ошибок
  23. 301 и 302 редирект или перенаправление
  24. Технология производства внутренних ссылок из внешних:
  25.  Склеиваем сайты с www и без него
  26. Перенаправляем на главную
  27. Настройка производительности WordPress-сайта в .htaccess
  28. Включение кэширования
  29. Включение gzip-сжатия
  30. Контроль и установка ограничений на хотлинкинг изображений
  31. Regular expressions
  32. Что такое .htaccess файл, зачем нужен?
  33. Как правильно настроить htacces?

Authentication example

If you jumped directly to this part of the document to find out how
to do authentication, it is important to note one thing. There is a
common misconception that you are required to use
files in order to implement password
authentication. This is not the case. Putting authentication directives
in a
section, in your main server configuration file, is the preferred way
to implement this, and files should be used only
if you don’t have access to the main server configuration file. See for a discussion of when you should and should
not use files.

Having said that, if you still think you need to use a
file, you may find that a configuration such as
what follows may work for you.

file contents:

AuthType Basic
AuthName "Password Required"
AuthUserFile "/www/passwords/password.file"
AuthGroupFile "/www/passwords/group.file"
Require group admins

Note that must be in effect
for these directives to have any effect.

Создаем .htaccess

.htaccess — это обычный текстовый файл, правда с необычным расширением. На хостингах, с которыми я работал, есть возможность создавать и управлять файлом .htaccess прямо из панели управления сайтом. Если же на вашем хостинге такой поддержки нет, вам следует создать текстовый файл с расширением .htaccess у себя на компьютере (например в блокноте) и через FTP-соединение загрузить его в корневую директорию. Действие файла-конфигуратора распространяется на все вложенные директории. Чтобы изменить настройки для определенной директории (например, admin) следует разместить там другой файл .htaccess с новыми настройками.
Первое, что необходимо сделать, это включить перенаправления на основной домен сайта, то есть определиться с доступом к сайту с www или без, а также убрать все index.php. Это нужно для правильной индексации сайта, ведь без этого ваш сайт будет доступен по четырем адресам:

http://www.site.ru/
http://www.site.ru/index.php
http://site.ru/
http://site.ru/index.php

Пример #1 Включаем переадресацию на www.site.ru

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^site.ru
RewriteRule (.*) http://www.site.ru/$1 
RewriteCond %{THE_REQUEST} ^{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.site.ru/ 

Естественно вместо site ставьте свой адрес. Для того, чтобы сделать редирект на домен без www, следует изменить в третей строке www.site.ru после ^ и далее везде убрать www.

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

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

  • 301 редирект для удаления/добавления слэша в конце URL
  • 301 редирект с index (.html и .php) на корень сайта «/»
  • Редирект 301 с http на https
  • Редирект 301 с www на без www
  • Смена адреса сайта — редирект со старого домена на новый

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

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

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

RewriteRule ^cat/oldpage.* /newpage.html 

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

Redirect 301 /cat/oldpage http://www.site.com/newpage.php 

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

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\.htm$ $1.html 

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

RewriteRule ^(.*)\.htm$ $1.html 

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

RewriteRule ^old(.*)$ /new.php 

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

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

RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 

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

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

RewriteRule ^news/happy.* /news.html 

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

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

RewriteCond %{REQUEST_URI} /++$
RewriteRule ^(.+)$ %{REQUEST_URI}/ 

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

RewriteRule ^directoriya/(.+)$ http://site.com/$1 

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

RewriteCond %{DOCUMENT_ROOT}/directoriya/$1 -f
RewriteRule ^(.*)$ directoriya/$1 

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

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

RewriteCond %{QUERY_STRING} act=page 
RewriteCond %{QUERY_STRING} id=(\d+) 
RewriteRule .* /page/%1/? ]

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

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

RewriteCond %{HTTP_HOST} ^(.*)$ 
RewriteCond %{HTTP_USER_AGENT} (?i:midp|samsung|nokia|j2me|avant|docomo|novarra|palmos|palmsource|opwv|chtml|pda|mmp|blackberry|mib|symbian|wireless|nokia|hand|mobi|phone|cdm|upb|audio|SIE|SEC|samsung|HTC|mot-|mitsu|sagem|sony|alcatel|lg|eric|vx|NEC|philips|mmm|xx|panasonic|sharp|wap|sch|rover|pocket|benq|java|pt|pg|vox|amoi|bird|compal|kg|voda|sany|kdd|dbt|sendo|sgh|gradi|jb|dddi|moto|iphone|android) 
RewriteRule ^$ http://m.%1 

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

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

RewriteCond %{HTTP_HOST} ^poddomen.site.ru$ 
RewriteRule ^(.*)$ http://site.ru%{REQUEST_URI} 

Где находиться файл htaccess в WordPress?

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

Например при помощи программ FileZilla или WinSCP Вы можете подключиться к вашему сайту используя ftp/ssh доступы. Ниже скриншот из программы WinSCP.

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

Как включить кеширование браузера правильно

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

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

Установите дату истечения срока действия или максимальный период для статических ресурсов, таких как изображения, css-стили, js-скрипты, pdf, swf-файлы. После настройки кеширования сайт будет загружаться намного быстрее.

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

iPipe – надёжный хостинг-провайдер с опытом работы более 15 лет.

Мы предлагаем:

  • Виртуальные серверы с NVMe SSD дисками от 299 руб/мес
  • Безлимитный хостинг на SSD дисках от 142 руб/мес
  • Выделенные серверы в наличии и под заказ
  • Регистрацию доменов в более 350 зонах

Как включить файл htaccess и проверить его работу

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

Данная директива размещается исключительно в блоке <Directory>. Отметим, что также по умолчанию принимается значение «All», что, в том числе, сказывается на работе файлов .htaccess. Правда, есть и другой вариант: при значении «None» они окажутся выключены. Но нельзя не отметить, что существуют и многие другие варианты значений, накладывающие определенные ограничения на конфигурацию. Вот их примеры:

  1. AuthConfig – позволяет применять директивы разрешения для защиты каталогов паролями. Другими словами, с этим значением авторизация ведется по логину, паролю, что называется базовой аутентификацией.
  2. FileInfo – разрешает работу директив, задающих типы документа (Headers, Error Documents, Cookies, URL Rewriting , пр).
  3. Indexes – отображает перед посетителем перечень файлов, когда выбранный каталог лишен файла index.html либо аналогичного ему.
  4. Limit – позволяет работать с ключевыми директивами управления доступом (allow, deny, order), сакционирования Limit. Может, отталкиваясь от данных об адресе клиентского устройства, ограничивать доступ к файлам.
  5. Options – дает возможность контролировать перечень функций сервера в каталоге, открытых для использования. Напомним, каталог указывается в < Directory>. Значение выглядит так: ExecCGI, FollowSymLinks, MultiViews, Includes, пр.

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

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

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

Способ 1

Для данного легкого метода заставим Apache с помощью директив файла htaccess искать «indexgood.html» до «index.html». Если .htaccess поддерживается, попадая в папку через браузер, Apache загрузит .htaccess, и на экране появится страница «indexgood.html» с поздравлением! В противном случае Apache, не обращая внимания на .htaccess, будет искать файл «index.html».

    # Эта директива заставит Apache искать

    # «index_good.html» перед «index.html» 

    DirectoryIndex index_good.html index.html 

Директива DirectoryIndex получает список, в котором через запятую перечисляются вероятные файлы. Если перед Apache ставятся URL директории, значит дается не прямой путь к файлу (не http://www.example.com и не http://www.example.com/index.html), поэтому он прибегнет к списку для обнаружения заданного файла. Движение по перечню идет слева направо. Если первый файл найден, он будет загружен, пользователь его увидит.

Способ 2

Обычный неверный синтаксис в вашем файле .htaccess. пригоден для проверки – сервер не сможет с ним справиться!

    # здесь мы намеренно допускаем ошибку

    AHHHHHHH 

«AHHHHHHH» – это не директива Apache, то есть приведет к ошибке, как только тот попытается осуществить просмотр файла htaccess. О чем это нам скажет? Если перед вами появится страница с «Internal Server Error» – поддержка работает. Так как данная ошибка означает, что сервер искал .htaccess файл. Если же вы увидите index.html – она отключена.

Вас также может заинтересовать: Сарафанное радио: принципы, методы и идеи необычного маркетинга

Когда (не) использовать файлы .htaccess

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

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

Тем не менее, в целом использование файлов .htaccess следует избегать когда это возможно. Любые настройки, которые вы собираетесь разместить в файле .htaccess, могут быть эффективно сделаны в разделе <Directory> в главном конфигурационном файле сервера.

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

Первая причина — это производительность. Когда AllowOverride установлена на разрешение использования файлов .htaccess, httpd будет искать файлы .htaccess в каждой папке. То есть разрешение файлов .htaccess ударяет по производительности не зависимо от того, используете вы на самом деле .htaccess или нет, создали вы хоть один файл .htaccess или нет. Файл .htaccess загружается каждый раз, когда запрашивается документ.

Более того, помните, что httpd должен искать файлы .htaccess в директориях более высокого уровня чтобы собрать полный набор директив, которые должны быть применены. Таким образом, если файл запрошен из директории /www/htdocs/example, то httpd должен искать эти файлы в:

  • /.htaccess
  • /www/.htaccess
  • /www/htdocs/.htaccess
  • /www/htdocs/example/.htaccess

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

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

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

Помещение файла .htaccess с управляющими директивами в папку /www/htdocs/example эквивалентно помещению этих же директив в раздел Directory: <Directory «/www/htdocs/example»> в главных настройках конфигурации сервера:

Содержимое файла .htaccess в /www/htdocs/example

AddType text/example ".exm"

Секция из файла httpd.conf:

<Directory "/www/htdocs/example">
    AddType text/example ".exm"
</Directory>

При этом размещение этой конфигурации в файле настроек сервера приведёт в результате к меньшему влиянию на производительность, поскольку конфигурация загружается только один раз при запуске httpd, а не при каждом запросе к файлу.

Можно полностью отключить использование файлов .htaccess установив директиву AllowOverride на none:

AllowOverride None

Что обязательно нужно сделать при настройке htacces?

  1. Запретить загрузку данных другими сайтами

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

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

  1. Настроить блокировку всех запросов от нежелательных пользователей

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

  1. Создать страницы для ошибок

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

  1. Сжать некоторые элементы при помощи Gzip

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

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

Благодаря htacces, вы сможете ограничение доступа к конкретным файлам и папкам, по логину и паролю. Для этого, необходимо будет создать специальный файл .htpasswd, и добавить в него необходимые данные в формате: «логин:пароль». При этом, лучше всего будет воспользоваться сервисами генерации и шифрования записей в htpasswd, поскольку иначе, логины и пароли будут храниться в незашифрованном виде.

  1. Усилить кэширование

Сразу стоит сказать, что кэширование файлов с помощью .htacces – невозможно. Тем не менее, с его помощью можно настраивать процесс кэширование на стороне клиента.

Правильная настройка кэширования важна, поскольку она позволяет существенно ускорить загрузку страниц сайта.

.htaccess переадресация

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

Есть нехорошие товарищи, которые могут использовать картинки с вашего ресурса для использования в своих проектах. Они используют ваши изображения на своих сайтах, другими словами, используют вашу пропускную способность в своих целях, по аналогии с перемещением изображений на поддомен. Будем с ними бороться… Заменим любую картинку, на которую ведет хотлинк с другого сайта, на какое-нибудь предупреждающее изображение или на что хватит фантазии. В коде не забывайте менять адреса на ваши URL.

 Перенаправим RSS фиды WordPress на Feedburner

Я не думаю, что кто-то пользуется чем-то другим, отличным от Feedburner. Удобно для пользователя, удобно для владельца блога, статистика, опять же. Если вы еще не используете — крайне рекомендую. Код ниже перенаправит все ваши RSS потоки на ваш аккаунт, не забывайте только вставить нужный адрес.

В этом примере идет перенаправление двух потоков: основного RSS и обновление комментариев, если посетитель подписан на обновления.

Изменим страницы ошибок

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

В этом примере идет перенаправление в случае основных ошибок. 404 я тоже добавил, хотя CMS обычно отрабатывают такие моменты, но бывали случаи.

301 и 302 редирект или перенаправление

301 редирект или, так называемое постоянное перенаправление — говорит о том, что страница поменяла адрес или URL и перенаправляет на новую страницу. Если у вас на сайте была проиндексированная ПС страница, а вы поменяли ее адрес — в обязательном порядке сделайте 301 редирект на новую страницу. При 301 редиректе старая страница не индексируется, а вместо нее «подставляется» новая.

Собственно, похожий пример внимательный читатель увидит выше, в случае перенаправления RSS. Да, технология та же. Бывает так, что сайт переезжает на новый домен, нужно сохранить структуру ссылок, а их могут быть сотни и тысячи, на каждую установить перенаправление нереально. Код ниже поможет разобраться с такой ситуацией:

Есть интересная методика «скрытия» внешних ссылок путем 301 редиректа. Допустим, у вас есть «сквозная» ссылка в сайдбаре, которая ведет на ваш профиль в Google+, она внешняя, то есть ведет на внешний ресурс. Для SEO очень хорошо, когда таких ссылок как можно меньше. Можно спрятать их и сделать внутренними.

Технология производства внутренних ссылок из внешних:

  • ставим ссылку на мнимую страницу,
  • настраиваем 301 редирект в htaccess с этой страницы на реальную страницу вашего профиля
  • посетитель ничего не чувствует, ПС довольны

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

Код абсолютно такой же, как в случае с постоянным перенаправлением. 302 редирект удобно использовать, когда проводятся какие-либо долгосрочные работы на сайте и не нужно показывать посетителям «поломанные» страницы. В таком случае вам поможет этот код:

 Склеиваем сайты с www и без него

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

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

Перенаправляем на главную

Перенаправление со страниц site.com/index.php и site.com/index.html на страницу site.com/. За код спасибо Василию Красноженову.

Настройка производительности WordPress-сайта в .htaccess

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

Включение кэширования

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

<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType image/x-icon "access plus 1 week"
ExpiresByType text/x-component "access plus 1 month"
ExpiresByType text/html "access plus 0 seconds"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
ExpiresByType text/cache-manifest "access plus 0 seconds"
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
ExpiresByType application/atom+xml "access plus 1 hour"
ExpiresByType application/rss+xml "access plus 1 hour"
ExpiresByType application/font-woff2 "access plus 1 month"
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
</IfModule>

Включение gzip-сжатия

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

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE application/javascript
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
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0 no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>

Контроль и установка ограничений на хотлинкинг изображений

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

<img src="https://example.com/image.jpg">

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

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com 
RewriteRule \.(jpg|jpeg|png|gif)$ - 

Не забудьте заменить example.com на доменное имя вашего сайта.

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

Regular expressions

Регулярные выражения, которые вам могут встретиться в .htaccess.

Символ Значение Пример
. Один любой символ c.t это cat, cot, cut, и т. д.
+ Один или несколько одинаковых символов a+ это a, aa, aaa, и т. д.
* Ноль или несколько одинаковых символов a* работает также как и a+ но в случае a* условию удовлетворит и пустая строка
? Совпадение опционально colou?r подойдет как color, так и colour.
^ Символ, с которого начинается строка ^a соответствует строка, которая начинается с a
$ Символ, которым заканчивается строка a$ соответствует строка, которая заканчивается a.
( ) Находит и запоминает соответствие группы символов.Также может быть использовано для Back-Reference (смотри пример) (ab)+ удовлетворит abababBack-Reference example:RewriteRule    ^/(+)/(.*)$     /home?page=$1&id=$2/album/123   →   /home?page=album&id=123
Один из возможных символов ct подойдет cut, cot или cat.

Больше regular expressions

Что такое .htaccess файл, зачем нужен?

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

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

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

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

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

Как правильно настроить htacces?

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

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

Если вам необходимо сделать правильный документ htacces, для сайта, который делал кто-то другой. То может возникнуть вопрос – «как найти .htacces?».

Логика нам подсказывает, что он должен быть в корне папки с сайтом, однако для некоторых CMS, это не так. Поэтому, если вы хотите найти местонахождение файла .htacces, рекомендуем почитать техническую информацию к CMS, с которой вы будете работать.

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

Чаще всего, стандартные файлы .htacces, легко найти на ресурсах посвященных разным CMS.

Итак, давайте разберемся, что же именно можно сделать при помощи файла .htacces?

  1. Страницы ошибок

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

Для того, чтобы выполнить эту задачу, применяется команда «ErrorDocument», после неё нужно указать код ошибки, и адрес страницы, на которую будет перенаправлен пользователь. Адрес страницы должен быть относительным.

Пример:

ErrorDocument «код ошибки» /адрес страницы

Лучше всего, сделать в корне сайта каталог «error», и поместить все страницы туда.

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

Сегодня рекомендуется использовать 301-й редирект, который позволяет полностью переносить вес страниц. Для настройки редиректов в файле .htacces, необходимо использовать директиву «Redirect», после которой указывается тип редиректа, адрес страницы, с которой осуществляется направление (относительный), адрес страницы, на которую вы перенаправляете пользователей (абсолютный).

Пример:

Redirect «тип редиректа» /адрес страницы http://домен/адрес страницы

  1. Ограничить доступ пользователей к сайту по IP

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

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

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

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

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

Если вы хотите выяснить причины этой ошибки, самым простым вариантом, будет посмотреть лог-файл. Он располагается по адресу /var/log/вашдомен.error.log

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Знай и умей
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: