Файл .htaccess содержит в себе настройки для хостинг-серверов на базе linux. Многие не задумываются о важности правильной конфигурации файла .htaccess для сайта. А ведь от этого зависит безопасность вашего сайта и многие другие аспекты его работы.
Мы рассмотрим оптимальный файл .htaccess для сайта на WordPress.
1. Зачем нужен файл .htaccess?
В данном файле задается ряд важных настроек безопасности, кеширования, редиректов, сжатия файлов. Какие именно параметры можно настроить с помощью .htaccess для сайте на WordPress:
1) Безопасность:
- Запрет листинга директорий (отображение всех содержащихся в директории файлов и папок).
- Запрет различных SQL-инъекций (способ взлома сайта, основанный на внедрении в запрос произвольного SQL-кода).
- Блокирование различных hacking tools (программ, скриптов для взлома сайта).
- Защита ключевых конфигурационных файлов от доступа (файла wp-config.php, самого файла .htaccess и других).
- Запрет прямого доступа к php, xml и ini файлам
2) Оптимизация загрузки и производительности сайта:
- Оптимальный mod_headers (установка Vary: Accept-Encoding).
- Настройка gzip-сжатия.
- Настройка кеширования и периодов актуальности кеша (ExpiresByType).
3) Редиректы — перенаправления:
- Включение mod_rewrite и перенаправлений.
- 301 редирект — перенаправление с www.ваш-сайт.ru на ваш-сайт.ru либо наоборот.
- 302 — документ перемещен временно.
- 404 — файл не найден.
- Другие редиректы, в том числе сложные.
Помните: использовать оптимальный файл .htaccess — принципиально важно для вашего сайта. Если вы не будете его использовать — готовьтесь однажды увидеть сайт в черных списках поисковых систем по причине взлома, внедрения вредоносного кода и рекламных ссылок, распространения спама с вашего сайта и т.д.
Относитесь серьезно к безопасности вашего сайта!
2. Как создать файл .htaccess для вашего сайта?
Самый простой способ создания файла .htaccess — с помощью программы Total Commander.
- Создаем с помощью блокнота или любого другого текстового редактора (к примеру, notepad++) файл htaccess.txt. Пока что это обычный текстовый файл.
- Теперь открываем программу Total Commander, находим файл htaccess.txt, нажимаем правую кнопку мыши и выбираем «переименовать».
- Переименовываем htaccess.txt в .htaccess (обратите внимание: имя файла пустое, а .htaccess — это расширение файла).
- Сохраняем изменения.
- Теперь нам нужно расположить файл .htaccess в корневой директории сайта (там же, где расположен файл wp-config.php).
Для этого используйте любой FTP-клиент для загрузки файла на хостинг (можно использовать тот же Total Commander или Filezilla).
Пока что файл .htaccess пустой. Давайте наполним его содержимым.
3. Оптимальная конфигурация файла .htaccess для WordPress.
Внимание! Если вам не хочется вникать в детали — скачайте сразу оптимальный файл .htaccess для вашего сайта. После скачивания .htaccess закачайте в корневую папку сайта.
- Общие правила: все новые директивы настроек пишутся с новой строки. Чтобы закомментировать правило, поставьте в начале строки знак #
- Важно: закомментированная строка не работает и служит как примечание для вебмастера.
- Определенные модули параметров нажно заключать в секции, например <IfModule mod_headers.c> и </IfModule>.
Итак, рассмотрим какие секции файла .htaccess за что отвечают.
1) Закроем листинг файлов и папок:
Options +FollowSymLinks -Indexes
2) Включим mod_rewrite:
RewriteEngine On
3) Теперь добавим блок настроек безопасности:
4) Укажем редиректы, если это необходимо:
5) Настроим gzip-сжатие:
6) Настроим кеширование и время актуальности кеша:
7) Настроим параметры mod_headers (Vary: Accept-Encoding)
8) Защищаем от несанкционированного доступа файл wp-config.php:
9) Защищаем от доступа сам файл .htaccess:
10) Добавим правильную кодировку по умолчанию:
AddDefaultCharset utf-8
11) Перенаправление на домен без www:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
Внимание: замените адрес site.ru на адрес вашего сайта!
12) Перенаправление с домена без www на адрес с www:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^site.ru
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=permanent,L]
Внимание: замените адрес site.ru на адрес вашего сайта! Выберите только один вариант перенаправления: либо на www, либо на без www.
maxtop.org

Структура адресов (ссылок) меняется в меню «Настройки — Постоянные ссылки». По умолчанию указан формат ?p=123. Такой формат ссылок может работать без дополнительных настроек файла htaccess. Однако если вы поменяете структуру на «Название записи» — sample-post/ (то, что и называется ЧПУ), то для поддержки работы таких ссылок WP должен автоматически создать htaccess со следующим кодом:
Приведенный выше код — это пример наиболее стандартного и правильного htaccess для Вордпресс. Находится он в корневой папке сайта.
Если же у вас по каким то причинам этот файле не появился, вы можете создать его самостоятельно, либо скачать по ссылке (файл в архиве zip)
В общем то можно ограничиться этим файлом. Но вы можете настроить дополнительные инструкции, которые улучшат ваш сайт в глазах поисковых систем, усилят защиту файлов сайта и т.д.
Под улучшением для поисковых систем я имел ввиду, что в htaccess можно сделать редирект адресов страниц с www на адреса без него. Дело в том, что адрес сайта может быть записан с www, то есть в виде http://www.ваш_сайт, а также без него, то есть http://ваш_сайт. Желательно склеить эти два представления, чтобы сосредоточить ссылочный вес на одном из них. Лучше всего использовать в качестве основного вид http://ваш_сайт, а с www сделать 301 редирект (301 редирект — это перенаправление с одного адреса на другой). Возможно, постепенно эта рекомендация станет устаревшей, и поисковые системы станут сами делать такую склейку.
Для этого в файл htaccess нужно добавить следующий код.
delaemsait.info
Синтаксис файла htaccess
Мы уже начали тему настройки Apache в одной из предыдущих статей, но сегодня немного освежим информацию и рассмотрим более детально именно настройку htaccess.
Все директивы из файла htaccess выполняются точно так же, как если бы они были размещены в глобальном конфигурационном файле, только внутри директивы <Directory адрес_папки_htaccess>. Это не позволяет менять глобальные настройки, но вы можете очень тонко настроить поведение программы в папках, к которым у вас есть права доступа.
Общий синтаксис директив очень прост, это пары команд и их опций, разделенных пробелом, например:
Команда параметр1 параметр2 флаги
Самих команд достаточно много и мы будем рассматривать их на примерах действий, которые они выполняют. Кроме самих команд, тут могут использоваться вложенные структуры, например, для активации модулей или проверки доступности того или иного модуля. А теперь давайте перейдем ближе к тому как выполняется правильная настройка htaccess. Начнем с самых простых действий.
Настройка доступа htaccess
Довольно часто htaccess используется для управления доступом к папке. Для управления доступом используются три команды:
- order — порядок;
- deny — запретить;
- allow — разрешить.
Сначала, с помощью опции order, нужно указать в каком порядке будут выполняться директивы, значение имеет только эта команда, и неважно в какой последовательности они расположены в файле.
Затем с помощью директивы allow или deny мы разрешаем или запрещаем доступ к папке с определенных адресов. Например, чтобы запретить все необходимо добавить в htaccess:
Но мы также можем разрешить доступ только с локальной сети:
Если указано deny,allow, то проверка будет выполняться в таком порядке. Сначала все директивы deny, затем все директивы allow, и если ни одно из условий не подошло, то запрос пропускается.При allow,deny такой запрос будет по умолчанию отклонен. Например, предыдущий пример можно написать так:
Модификация URL в htaccess
Наиболее часто htaccess используется для модификации URL во время выполнения или редиректов. За эту функциональность отвечает модуль mod_rewrite и обычно он активирован в большинстве конфигураций Apache.
Модификация URL в htacces выполняется с помощью трех директив, это RewriteBase, которая указывает префикс адреса, RewriteCond проверяет соответствие, и RewriteRule — изменяет URL в соответствии с регулярным выражением если все правила соответствия подходят.
Сначала нужно включить Mod_Rewrite, на случай если модуль еще не активен:
Укажем, что в качестве префикса для URL нужно использовать корень:
И будем автоматически заменять URL адреса с index.html на index.php, обратите внимание, что исходный URL — это путь к запрашиваемому файлу относительно расположения файла htaccess:
Для более эффективной замены можно использовать регулярные выражения они состоят из специальных символов и переменных и обычных символов и цифр. Рассмотрим основные специальные символы:
- ^ — начало строки;
- $ — конец строки;
- . — любой символ;
- * — любое количество любых символов;
- ? — один определенный символ;
- [0-9] — последовательность символов, например, от 0 до 9;
- | — символ или, выбирается или одна группа, или другая;
- () — иcпользуется для выбора групп символов.
В регулярных выражениях htaccess также можно использовать переменные с данными, полученными из заголовков запроса, например:
- %{HTTP_USER_AGENT} — поле User-Agent, которое передает браузер пользователя;
- %{REMOTE_ADDR} — IP адрес пользователя;
- %{REQUEST_URI} — запрашиваемый URI;
- %{QUERY_STRING} — параметры запроса после знака ?.
Это наиболее часто используемые переменные, но их есть намного больше, остальные вы можете найти в официальной документации. Регулярные выражения открывают более широкие возможности, например, вы можете заменять во всех страницах html на php:
Директива RewriteCond дает еще больше гибкости, вы можете выбрать к каким адресам стоит применять модификацию, например, будем переопределять данные только для версии с www:
Таким образом, вы можете выполнять любые преобразования ваших URL без фактических редиректов куда-либо. Но дальше мы рассмотрим как делать редиректы.
Настройка редиректов в htaccess
Настройка редиректов htaccess выполняется похожим образом, с помощью того же самого модуля mod_rewrite, только теперь вместо модификации url мы указываем флаг с нужным действием и кодом редиректа.
Самый простой редирект можно выполнить без mod_rewrite, с помощью такой строки:
Но обычно нужны перенаправления с более широким действием. Все выглядит очень похоже, только теперь мы используем флаг [NC] чтобы не учитывать регистр, [L] для прекращения обработки и [R] — для редиректа. Например, перенаправление htaccess с версии без www на домен с www:
Значение R=301 означает код редиректа, который будет возвращен клиенту, можно использовать 301, 302 и т д. Редирект htaccess с домена www на домен без префикса будет выглядеть так:
Таким же образом можно сделать переадресацию:
Редирект с http версии на https:
Настройка страниц ошибок в htaccess
При возникновении каких-либо ошибок во время генерации страницы, веб-сервер выдает краткое сообщение и код ошибки. Но пользователям будет намного понятнее в чем дело, если вы сделаете для каждой ошибки отдельную страницу с картинками и полноценным объяснением.
Настройка htaccess для этого пункта будет очень полезной. Вы можете использовать директиву ErrorDocument. С помощью нее можно задать html страницы для ошибок 4хх и 5хх. Например, для 404:
Кэширование в htaccess
Браузер позволяет хранить в своем кэше изображения, файлы скриптов, стилей и другие медиафайлы определенное время. Время жизни кэша задается веб-сервером с помощью специальных заголовков. Их можно настроить с помощью модуля expires.
Сначала активируем модуль и устанавливаем период кэширования по умолчанию:
Теперь мы можем настроить кэширование для каждого mime типа файлов:
В первой строке мы указываем, что страницы html нужно считать годными на один месяц 15 дней и два часа с момента загрузки. Доступны такие типы файлов:
- image/x-icon;
- image/jpeg;
- image/png;
- image/gif;
- application/x-shockwave-flash;
- text/css;
- text/javascript;
- application/javascript;
- application/x-javascript;
- text/html;
- application/xhtml+xml;
Чтобы быть уверенным что эта конструкция не вызовет ошибок заключите ее в if:
Сжатие файлов в htaccess
Для сжатия в Apache можно использовать модуль deflate. Здесь достаточно просто перечислить mime типы файлов, которые нужно сжать. Например:
Вы также можете заключить конструкцию if, чтобы проверить поддерживается ли этот модуль:
Выводы
В этой статье мы рассмотрели как выполняется настройка файла htaccess для правильной работы вашего сайта. Все действия выполняются не так уже и сложно. Достаточно скопировать несколько строк и исправить их под свои нужды. Если у вас остались вопросы, спрашивайте в комментариях!
На завершение предлагаю видео с обзором конфигурационного файла Apache:
losst.ru
Создание файла htaccess для WordPress
И так, если на вашем сервере еще этого файла, то первым делом необходимо его создать. Сделать и в последствии редактировать его можно в обычном блокноте. Как вы заметили это файл без названия и с расширением .htaccess. Именно так и сохраните пустой документ блокнота указав только расширение с точкой.
Теперь можно заняться настройкой. В стандартные настройки входит такая запись:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
Кстати стандартный файл .htaccess для WordPress можно скачать здесь
После добавления этой записи можно переходить к дополнительным настройкам, если необходимо, они осуществляются добавлением в него новых функций, команд.
Защита файла .htaccess
Да да, лучше перестраховаться ?
<Files .htaccess> order allow,deny deny from all </Files>
Защита файла wp-config.php:
<Files wp-config.php> order allow,deny deny from all </Files>
Блокировка по IP
<Limit GET POST> order allow,deny deny from xxx.xxx.xxx.xxx deny from yyy.yyy.yyy.yyy allow from all </Limit>
*где ххх и yyy — ip адреса злодеев
Дополнительная защита сайта от спама
Некоторые спам-боты обращаются к файлу wp-comments-post.php напрямую, а этот файл отвечает за комментарии на вашем. Но можно отловить такие запросы проверяя все обращения на наличие REFERER, ибо у обычных посетителей он будет, а спам-боты как правило им обделены. (для справки: Referer (HTTP referer) — в протоколе HTTP один из заголовков запроса клиента. Содержит URL источника запроса. Если перейти с одной страницы на другую, referer будет содержать адрес первой страницы. Часто на HTTP-сервере устанавливается программное обеспечение, анализирующее referer и извлекающее из него различную информацию. Так, например, владелец веб-сайта получает возможность узнать, по каким поисковым запросам, как часто и на какие именно страницы попадают люди. )
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .wp-comments-post.php* RewriteCond %{HTTP_REFERER} !.*yourdomain.com.* [OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule (.*) http://%{REMOTE_ADDR}/$ [R=301,L] </IfModule>
Настроить перенаправление с www на без www — редирект 301
Это необходимо сделать. Зачастую многие игнорируют этот параметр.
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^www.saaait.ru$ [NC] RewriteRule ^(.*)$ http://saaait.ru/$1 [R=301,L]
Настроить перенаправление с без www на www — редирект 301
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^saaait.ru$ [NC] RewriteRule ^(.*)$ http://www.saaait.ru/$1 [R=301,L]
Удаляем /category/ из адресной строки
По умолчанию категории в WordPress отображаются так: http://urokwp.ru/blog/uroki-wordpress/htaccess-dlya-wordpress
А это не очень хорошо, во-первых очень длинный получается адрес, во-вторых лишняя вложеность в структуре. Сейчас это безобразие исправим с помощью .htaccess:
RewriteRule ^category/(.+)$ httр://www.saaait.ru/$1 [R=301,L]
Теперь вид такой: http://urokwp.ru/uroki-wordpress/htaccess-dlya-wordpress
Включаем кэширование браузера
Этот код улучшает кэширование браузером статических файлов. При повторном посещении сайта если код страницы не изменился, то эта страница со всем содержимым загрузится из кэша. Там самым увеличив скорость работы сайта.
FileETag MTime Size <ifmodule mod_expires.c> <filesmatch ".(jpg|gif|png|css|js)$"> ExpiresActive on ExpiresDefault "access plus 1 year" </filesmatch> </ifmodule>
Сжатие данных Gzip
Сжатие данных на сайте тоже позволить увеличить скорость загрузки вашего сайта
<IfModule mod_deflate.c> 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 <ifmodule mod_gzip.c> mod_gzip_on Yes mod_gzip_item_include file .js$ mod_gzip_item_include file .css$ </ifmodule> </IfModule>
urokwp.ru
Рано или поздно, работая над сайтом на CMS WordPress, Вы столкнетесь с необходимостью внести какие-то усовершенствования на сайте а для этого необходимо внести коррективы в файл в файл .htaccess, поэтому любому вебмастеру важно иметь хотя бы общее представление о нем.
Файл .htaccess позволяет Вам управлять почти всеми настройками сервера Apache – самого распространенного HTTP сервера. Вы можете настроить его так, как Вам надо – в интересах Вашего сайта. А настройка эта и осуществляется с помощью файла .htaccess. Внеся одну строчку в этот файл, Вы можете серьезно изменить работу Вашего сайта. Чтобы это было более понятно, посмотрим на некоторые возможности, которые предоставляет вебмастеру этот файл.
С помощью редактирования этого файла Вы можете:
- Сделать стартовой страницей сайта какую-то другую страницу – не index.html, а другую,
- Осуществлять редирект (перенаправление) при запросе сайта или отдельных его рубрик и страниц,
- Ограничивать доступ к сайту и отдельным папкам и страницам всем посетителям, за исключением определенной группы пользователей,
- Устанавливать пароли на папки (директории) и даже на один файл или группу файлов,
- Проводить тонкую настройку php,
- Устанавливать различные запреты или разрешения,
- Установление нужной кодировки документов (так называемая кодировка по умолчанию)
- И многое другое.
Я не буду подробно разбирать все возможности файла .htaccess, об этом Вы можете почитать в Интернете – есть даже специальные сайты, посвященные этому файлу. Обращу Ваше внимание только на три момента.
Первый важный момент. Файл .htaccess обычно расположен в корне сайта и управляет всего его директориями (папками). Но он может быть расположен в отдельной папке, тогда он будет управлять только этой папкой. Причем, если в корневом .htaccess будет написано одно указание, а в файле .htaccess, расположенном в папке, — другое, то сервер Апач будет выполнять указание «папочного» .htaccess. Конечно, в отношении только этой папки, а не всего сайта – остальной частью сайта по-прежнему будет управлять корневой .htaccess.
Второй момент. Сервер Apache при обращении к сайту первым делом ищет файл .htaccess и при дальнейшей работе выполняет его указания – вне зависимости от первоначальных настроек сервера, сделанных хостером. Если на сайте нет такого файла, то он (сервер) руководствуется настройками по умлчанию,
Третий очень важный момент. Если сервер Апач при просмотре файла .htaccess находит синтаксические ошибки (т.е. если Вы что-то неправильно указали), то вся обработка прекращается. Поэтому при редактировании этого файла надо быть крайне внимательным.
Если Вы где-то прочитали, что Вам надо отредактировать этот файл, то прежде всего посмотрите, есть ли он у Вас на сервере вообще. Иногда серверы Apache настроены так, что не создают его самостоятельно, а в дистрибутиве WordPress этого файла нет. Тогда надо закачать его к себе на сайт самостоятельно.
Скачать стандартный (т.е. без всяких дополнительных настоек) файл .htaccess можно ЗДЕСЬ. [Плагин скачан уже 6276 раз(а)].
Он заархивирован в формате zip и имеет название (у меня) htaccess1.zip. Единичка к названию архива прибавлена мной потому, что архив с таким же названием уже имеется у меня на сервере – чтобы не было путаницы. Файл, который находится в архиве, имеет правильное название — без единички? но с точкой впереди.
Прежде всего, Вам необходимо с помощью любого архиватора разархивировать архив, а потом с помощью Вашего FTP – клиента закачать файл .htaccess на сервер, в корневую папку. Напомню, корневая папка, эта та, где лежат другие папки – wp-admin, wp-content, wp-includes, и много различных файлов.
Как посмотреть на содержимое скачанного файла? Откройте его с помощью блокнота-редактора Notepad++. Надеюсь, он у Вас имеется в наличии среди Ваших программ. Кликните по файлу правой кнопкой мыши, откроется выпадающее меню, где надо нжать на строчку «Edit with Notepad++»:
Рис.1
В открывшемся блокноте будет такая картина:
Рис.2
Для примера рассмотрим необходимость изменения кодировки по умолчанию. Дело в том, что не все серверы поддерживают кодировку по умолчанию UTF-8, вместо нее используется по умолчанию другая кодировка – windows-1251, а это приводит к некорректной работе некоторых плагинов, например, Special Text Boxes. Это проявляется в том, что вместо русских букв показываются кракозябры.
Для того, чтобы сервер Apache выдавал документы в правильной кодировке, необходимо в файле .htaccess дописать всего одну строчку:
AddDefaultCharset utf-8
Эту строчку надо вставить на любое место, например, на пустую строчку 10. После этого надо внесенные изменения сохранить.
Точно также следует делать, если файл .htaccess уже находится на сервере.
Теперь все Ваши документы будут выдаваться в правильной кодировке.
P.S. Интересуют ? Рекомендую сходить на сайт droidtabs.ru – их там много, очень много. И еще там есть масса всяких полезных программ. Рекомендую.
P.P.S. А теперь, как обычно, жирная ссылка – тИЦ 900, PR 3:
[share-locker locker_id=»bac38e449d46bbb6a» theme=»grey» message=»Чтобы увидеть ссылку, кликните по любой из кнопок! Спасибо!» facebook=»true» likeurl=»CURRENT» google=»true» googleurl=»CURRENT» tweet=»true» tweettext=»» tweeturl=»CURRENT» follow=»true» linkedin=»true» linkedinurl=»CURRENT»]http://www.9months.ru/forum/.Сайт — женский журнал, тИЦ 900, PR 3. Необходимо: зарегистрироваться, получить письмо, подтвердить, войти на форум в центр пользователя и в профиле поставить ссылку на свой сайт[/share-locker]
www.novichkoff.ru
Для единообразия формирования 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
Последовательность установки:
- Вставить код в начале .htaccess
- При вставке требуется указать правильное зеркало сайта, раскоментировав нужное, по умолчанию удаляет WWW, и включает HTTPS
- Удалить старый redirect перенаправление на основное зеркало.
- Если основное зеркало сайт HTTPS, то внесите протокол в robots.txt
Host: https://site.ru
, для http зеркал протокол уточнять не требуется. - При установке HTTPS основным зеркалом, перейти на свой сайт и убедиться в отсутствие blocked:mixed
Проверить работу redirect
Сервис по генерации списка redirect
Код конфигурационного файла каталога .htaccess.
############################################################################ #### Стандартный .htaccess для проектов студии Клондайк, версия 4.2 #### ############################################################################ RewriteEngine On # Директива включает редиректы. RewriteBase / # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1 с директивой = /$1 Options +FollowSymLinks # Разрешает переход по символическим ссылкам. php_flag display_errors off # запретить отображение ошибок (требование монитора качества) php_flag allow_url_fopen off # запретить использовать удаленые файлы (требование проактивной защиты) ############################################################################ #### Выбор основного зеркала (с www или без www) #### ############################################################################ # 1. Удалить www RewriteCond %{ENV:HTTPS} on #Если включен https RewriteRule .* - [E=SSL:s] #То создаем переменную ssl с текстом s RewriteCond %{HTTP_HOST} ^www.(.*) [NC] # Проверяем, содержит ли домен www в начале URL. RewriteRule ^(.*)$ http%{ENV:SSL}://%1/$1 [R=301,L] # Перенаправляем удаляем www # 2. Добавить www #RewriteCond %{ENV:HTTPS} on #Если включен https #RewriteRule .* - [E=SSL:s] #То создаем переменную ssl с текстом s #RewriteCond %{HTTP_HOST} !^www.(.*) [NC] # Если нет www в начале домена #RewriteRule ^(.*)$ http%{ENV:SSL}://www.%{HTTP_HOST}/$1 [R=301,L] #Подставляем www и https если он включен. ############################################################################ #### Перенаправляем протокол https на http #### ############################################################################ #RewriteCond %{HTTPS} on # Проверяем наличие https в URL. #RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] # Перенаправляем протокол на http. ############################################################################ #### Перенаправляем протокол http на https #### ############################################################################ RewriteCond %{HTTPS} !on # Проверяем наличие https в URL. RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # Перенаправляем протокол на http. ############################################################################ #### Убираем index.php, если он есть в конце URL #### ############################################################################ RewriteCond %{REQUEST_URI} ^(.*)/index.php$ # URL cодержит index.php в конце. RewriteRule ^(.*)$ %1/ [R=301,L] # Удалить index.php из URL. ############################################################################ #### Убираем повторяющиеся слеши (/) в URL #### ############################################################################ RewriteCond %{THE_REQUEST} // # Проверяем, повторяется ли слеш (//) более двух раз. RewriteRule .* /$0 [R=301,L] # Исключаем все лишние слеши. ############################################################################ #### Убираем слеши в конце URL для статических файлов (содержит точку) #### ############################################################################ RewriteCond %{REQUEST_URI} ..+$ # Если файл содержит точку. RewriteCond %{REQUEST_FILENAME} !-d # И это не директория. RewriteCond %{REQUEST_FILENAME} -f # Является файлом. RewriteCond %{REQUEST_URI} ^(.+)/$ # И в конце URL есть слеш. RewriteRule ^(.+)/$ /$1 [R=301,L] # Исключить слеш. ############################################################################ #### Добавляем слеш(/), если его нет, и это не файл. #### ############################################################################ RewriteCond %{REQUEST_URI} !(.*)/$ # Если слеша в конце нет. RewriteCond %{REQUEST_FILENAME} !-f # Не является файлом. RewriteCond %{REQUEST_URI} !..+$ # В URL нет точки (файл). RewriteCond %{REQUEST_URI} ^(.+)$ # В URL есть хоть один символы RewriteRule ^(.*)$ $1/ [L,R=301] # Добавляем слеш в конце. ############################################################################ #### Компрессия статического контента для гугл спид тест #### ############################################################################ <IfModule mod_deflate.c> 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 </IfModule> <IfModule mod_expires.c> 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" </IfModule> ############################################################################ #### Антивирус, только для 1С-Битрикс, #### ############################################################################ #php_value auto_prepend_file "/home/bitrix/ext_www/SITE.RU/bitrix/modules/security/tools/start.php" # если у вас FastCGI, директив не сработает, и нужно ее записать в vhost # укажите путь до файла # включить тут /bitrix/admin/security_antivirus.php?lang=ru ############################################################################ #### Конец общей части, далее следует собственные директивы .htaccess #### ############################################################################ # Рефакторинг сайта 01.01.18 ############################################################################ #### Конец собственных директив .htaccess #### ############################################################################
klondike-studio.ru
Htaccess (HyperText Access) представляет собой простой файл конфигурации, который позволяет дизайнерам, разработчикам и программистам, изменять конфигурацию веб-сервера Apache, чтобы реализовать дополнительную функциональность. Такая функциональность может включать в себя перенаправления пользователей, изменение URL, обеспечение защиты паролем директорий и многое другое
Итак, начнем …
Создание и загрузка файла .htaccess
Создать файл .htaccess очень просто.
Откройте Блокнот или аналогичный текстовый редактор, добавьте код и сохраните файл как обычно вы это делаете.
Например, вы можете назвать его:
Затем загрузите файл в соответствующий каталог на вашем веб-сервере и переименуйте его:
Помните, что для файла .htaccess следует использовать права доступа 644 и загружать его в ASCII-режиме. Если ваш .htaccess файл не работает, то вам следует обратиться к системному администратору или в техподдержку вашего веб-хостинга и убедиться, что использование его разрешено для вашей учетной записи, так как некоторые хостинговые компании не позволяют его использование без предварительного разрешения, это в основном относится к бесплатным хостингам. Также, к сожалению, .htaccess не будет работать на Windows-серверах.
Использование .htaccess
Важно помнить, что файл .htaccess будет влиять на каталог в котором он находится, и на все подкаталоги. Поэтому, если вы добавили свой файл .htaccess в корневой каталог веб-сайта, то это повлияет на все имеющиеся на сайте папки:
Однако, если вы поместите файл .htaccess в директорию http://www.yourdomain.com/directory1, то функциональность .htaccess будет ограничена этой папкой и всеми вложенныеми в неё папками. Например:
При большом количестве правил в этом файле я рекомендую использовать комментарии. Для этого просто разместите символ # в начале каждой строки следующим образом:
Полезные сниппеты
Приведем примеры нескольких полезных фрагментов кода, которые, наверняка, пригодятся при создании сайта.
Directory Index
Вы можете изменить файл, который открывается по умолчанию в каталоге, обычно это файл с именем index (index.html, index.php и т.д.):
Пользовательские страницы ошибок
Вы можете перенаправить пользователей на собственную страницу ошибок при их возникновении:
Вы можете для каждого типа ошибки сделать свою страницу:
Только не забудьте предварительно создать страницы ошибок!
Удаляем WWW из адреса сайта
Чтобы удалить «WWW» из адреса вашего сайта, используйте следующий код:
Установка часового пояса для сервера
Управление доступом к файлам
Файл .htaccess наиболее часто используется, чтобы ограничить или запретить доступ к отдельным файлам и папкам, и вы можете сделать это следующим образом.:
Однако, если вы хотите запретить доступ конкретному IP-адресу, то вы можете использовать этот код:
или для нескольких IP-адресов, вы можете написать так:
301 Permanent Redirects
Вы изменили адреса страниц, но не хотите терять посетителей? Тогда попробуйте:
Установить адрес электронной почты администратора сервера
С помощью следующего кода вы можете указать адрес электронной почты, по умолчанию, для администратора сервера:
Определение типа устройства и перенаправление
Если вы хотите, например, перенаправить пользователей использующих планшет к определенной веб-странице или каталогу, то можно использовать следующие правила:
Защита от хотлинкинга
Если вы не хотите, чтобы картинки с вашего сайта использовали на других сайтах или просто хотите уменьшить трафик. Поэкспериментируйте с этим кодом:
Вызываем окно «Файл Сохранить как»
Если вы хотите заставить пользователей загружать определенные типы файлов, а не просматривать их в браузере, то вы можете использовать это:
или упростить это так:
Rewrite URL
Если вы хотите, чтобы ваши ссылки было немного легче читать (т.е. изменить content.php?id=92 на content-92.html), Вы могли бы реализовать следующие правила «переписывания»:
Перенаправление браузера на HTTPS
Это всегда полезно для тех, кто только что установил SSL-сертификат:
Включаем SSI
Если вы хотите активировать SSI для HTML и SHTML-файлов, то попробуйте:
Включение и отключение просмотра каталогов
Изменение кодировки и языка заголовков
Для тех, кто хочет изменить текущую кодировку и язык:
Блокировка нежелательных поситителей
Если вы хотите заблокировать нежелательных посетителей переходящих с определенного веб-сайта или ряда сайтов, то вы можете использовать:
Блокировка нежелательных ботов
При помощи следующего метода, вы можете сохранить траффик путем блокирования определенных роботов и пауков, которые бродят по вашему сайту:
Заблокировать доступ к определенным файлам
Если вы хотите защитить определенные файлы, или даже заблокировать доступ к файлу .htaccess, то используйте следующий код:
И, наконец …
По соображениям безопасности, я думаю, очень полезно переименовать файл .htaccess:
При написании этой статьи я постарался выделить ряд функций .htaccess, которые могут быть полезны для вебмастера. Конечно, я не рассмотрел все возможности, но как вы видите .htaccess может быть полезным инструментом, и он по-прежнему играет важную роль в улучшении вашего сайта.
Перевод статьи с sitepoint.com
www.webmasters.by
- 10 Мар 2015г
- 4791
- 2
- Рубрика: Разное
Доброго времени суток. ?
Многие из Вас уже слышали или видели у себя на сайте в корне файл под названием .htaccess. Для одних он стал отличным инструментом и помощником в работе с сайтом, а для других так и остался, непонятной частью сайта, которая не понятно для чего нужна.
Для тех, кто еще не работал с данным файлом, предлагаю Вам основы, которые помогут Вам решить некоторые задачи. Сам по себе .htaccess, очень полезная штука. С его помощью Вы можете открыть или закрыть доступ, контролировать трафик и обезопасить свой сайт от вредоносных действий.
Как создать файл .htaccess
У некоторых сайтов уже по умолчанию есть .htaccess. Его создает система управления сайтом или как многие называют — движок. Тот же WordPress сам создает по умолчанию этот файл, который по сути пуст и в нем нет кода, только две строки с комментариями.
Если же у Вас нет такого файла, то вы можете с легкостью его создать. Он должен находится в корневой папке Вашего сайта. Вот несколько шагов в создании:
- 1. Открываем текстовый редактор или тот который используете для верстки, советую Notepad++, если же он Вам не знаком, то обычный Блокнот.
- 2. Ничего в нем не пишем и просто сразу сохраняем нажав на пункт меню «Файл», выбрать «Сохранить как».
- 3. В открывшемся окне, там где стоит выбор «Тип файла» выбрать «Все файлы» или «All files»
- 4. В строке, где нужно указать имя, нужно прописать .htaccess
- Нажать на кнопку«Сохранить», чтобы завершить создание.
Теперь Вы можете открывать его для редактирования и добавлять нужный код, чтобы иметь возможность управлять сайтом. Предлагаю Вам рассмотреть самые популярные команды для .htaccess, которые могут Вам пригодится, и с которыми приходилось сталкиваться мне.
Перед каждым редактированием .htaccess, сохраните его резервную копию, чтобы потом, в случаи не правильной работы сайта, вы смогли вернутся к исходному состоянию.
Как указать кодировку сайта в .htaccess
Если Вам нужно указать кодировку в .htaccess, то Вам нужно открыть его и добавить всего лишь одну строку кода, который укажет кодировку. Для UTF-8:
AddDefaultCharset UTF-8
для windows-1251:
AddDefaultCharset CP1251
Как запретить доступ к определенным файлам или самому .htaccess
Если у Вас возникла надобность нужда в том, чтобы запретить посетителям доступ к определенным файлам или .htaccess то добавьте следующий код:
<Files .htaccess> order allow,deny deny from all </Files>
Как заблокировать доступ к файлам определенного типа в .htaccess
<FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$"> Order Allow,Deny Deny from all </FilesMatch>
Как запретить просмотр директорий в .htaccess
Если у Вас возникла надобность в том, чтобы запретить посетителям просматривать структуру вашего сайта, то добавьте следующий код:
Options -Indexes
Если, Вам наоборот нужно открыть доступ к просмотру директорий, то поможет следующий код.
Options All +Indexes
Как ускорить время загрузки сайта за счет сжатия файлов
Можно сжимать любые файлы, например, для сжатия HTML-файлов нужно добавить вот такую вот строку
AddOutputFilterByType DEFLATE text/html
Если же это например текстовый файл, то надо так:
AddOutputFilterByType DEFLATE text/plain
Для JavaScript:
AddOutputFilterByType DEFLATE application/javascript
Есть код, который одновременно сожмет все javaScript, HTML и CSS файлы при помощи GZIP. Это вот такой вот код:
<IfModule mod_gzip.c> mod_gzip_on Yes mod_gzip_dechunk Yes 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.* </IfModule>
Как запретить вставлять изображения со сторонних ресурсов
Если по какой-то причине, у Вас возникла потребность в том, чтобы запретить пользователям своего сайта добавлять какие бы то не было изображения, то просто, добавьте такой вот код:
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yourdomain.com [NC] RewriteRule .(jpg|jpeg|png|gif)$ - [NC,F,L]
yourdomain.com — замените на домен Вашего сайта, чтобы скрипт работал.
Как заблокировать посетителей, которые пришли из определенного сайта.
Если для Вас имеет значение то, чтобы посетители какого-то сайте не переходили на Ваш сайт, так сказать, ограничить трафик из определенного домена, Вам поможет, вот такой вот не хитрый код:
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_REFERER} site1.com [NC,OR] RewriteCond %{HTTP_REFERER} site2.com [NC,OR] RewriteRule .* - [F] </ifModule>
Как видите, можно блокировать сразу с нескольких добавляя строки, меняя только домены.
Кэширование файлов в .htaccess
Кэширование файлов помогает ускорить работу Вашего сайта. Добавьте код, в котором указаны расширения файлов, которые следует кэшировать.
<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$"> Header set Cache-Control "max-age=2592000" </FilesMatch>
Иногда бывает, что файлы не включены в список, но всеравно кэшируются браузером. Если таким файлам надо отключить кэширование, то код будет другим и в нем указываются расширения.
<FilesMatch ".(pl|php|cgi|spl|scgi|fcgi)$"> Header unset Cache-Control </FilesMatch>
Как изменить главную страницу в .htaccess
Стандартной страницей загрузки являются страницы — index.html, index.php, index.htm.
DirectoryIndex newpage.html
Просто укажите новую страницу, вместо newpage.html.
Как заблокировать доступ к сайту по IP адресу
Про данный способ, можете прочитать в этой статье — Как заблокировать доступ к сайту по IP адресу
Как убрать index.php, index.html из URL адреса
Этот способ тоже описан в статье — Как убрать index.php, index.html из URL адреса
Вот такие коды, могут помочь Вам в работе с Вашим сайтом. Как и говорил, это лишь малая часть, того что можно сделать с помощью .htaccess.
На этом все, спасибо за внимание. ?
gnatkovsky.com.ua