Топ-100 Управление сайтом через файл htaccess - Разработка сайтов на WordPress
Управление сайтом через htaccess

Управление сайтом с помощью .htaccess

Возможности файла .htaccess

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

Некоторые особенности .htaccess, которые вам нужно знать

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

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

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

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

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

Создание файла .htaccess

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

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

Как только вы создали файл, поместите его в корневой каталог, в котором вы хотите, чтобы команды были действительными, убедившись, что FTP – это ASCII, а не BINARY. Вам также может потребоваться изменить код доступа к файлу (также известный, как команда CHMOD) на 644 (RW-R – R–) – это означает, что файл будет доступен для выполнения на сервере, но недоступен для просмотра через браузер. Такой доступ к файлу является серьезным риском для безопасности сайта и должен быть ограничен.

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

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


Выражения и шаблоны .htaccess

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

Буквы и цифры в шаблонных выражениях имеют свое обычное значение, но некоторые символы имеют конкретное применение:

Символ Значение Пример
. любой символ .a может быть “1a”, “fa”, “.a” или, например, “/a”
* ноль или больше, чем предыдущий символ a* может быть “”, “a”, “aa”, “aaa” и т. д.
+ один или несколько предшествующих символов a + соответствуют «a», «aa», «aaa», «aaaaaa» и т. д.
? ноль или больше, чем передний символ ? соответствует “” (т.е. ничего) или “е”
\ используется перед специальным символом, таким как “.”, “*”, “?” и другими \. – используется вместо точки (.), поскольку сама точка будет значимой для любого символа
^ обозначает начало строки ^ http: // www \ .ravechnost \ .ru соответствует любому адресу, начинающемуся с https://www.ravechnost.ru, например, на https://www.ravechnost.ru/images/catty.png
$ символизирует конец строки .*\.gif$ соответствует каждой строке, которая заканчивается на .gif
[ ] соответствует любому из символов, включенных в квадратные скобки [abc] + соответствует «a», «b», «c» или любой их комбинации, например, “Aabcbcbcba”
( ) группируют и запоминают найденную совпадающую строку как специальную переменную – имена переменных $ 1, $ 2, $ 3 и т. д (. +) / users /(.+) может соответствовать 2009 / users / mary. В этом случае «2009» будет сохранен как $ 1, а «mary» – как $ 2.

 

Конкретные примеры использования шаблонных выражений можно найти ниже.


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

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

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

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

Как работает страница ошибки

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

Подробнее о кодах сообщений HTTP можно прочитать в статье «Сообщения HTTP», но вкратце наиболее распространенные коды ошибок:

  • 400 – Запрос страницы заполнен неправильно или не может быть выполнен.
  • 401 – Запрашиваемая страница защищена и требует правильно введенного имени пользователя и пароля
  • 403 – доступ к странице запрещен
  • 404 – Страница не найдена на сервере – Обычно при вводе неправильного URL-адреса страницы или по недействительной гиперссылке
  • 500 – ошибка сервера

Команда страницы ошибки

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

ErrorDocument error_code / directory / page_name

Вместо относительного адреса (/ directory / page_name) вы также можете использовать абсолютный адрес, например, https://ravechnost.ru/404.html

Одним конкретным примером является использование страницы ошибок NotFound.html в каталоге ошибок в случае, если запрошенная страница не была найдена:

ErrorDocument 404 /errors/NotFound.html

Обратите внимание, что страница должна быть HTML-документом. Файл .htaccess не работает с динамическими страницами, такими как. php файлы

Что включить на странице ошибки

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

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

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

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

Эти советы сделают страницу с ошибкой не просто надоедливым сообщением, а способом общения.


Блокировка пользователей с помощью .htaccess

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

Ниже приведен конкретный пример отказа в доступе к сайту пользователя с IP-адресом 234.56.7.8, а также с любыми IP-адресами, начинающимися с 123.45.6. (123.45.6.1, 123.45.6.2 и т. д.):

order allow,deny
deny from 234.56.7.8
deny from 123.45.6.
allow from all

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

Deny from badsait.com

Имя робота можно использовать в бане. В следующем примере проверяется имя робота, запрашивающего страницу (User-Agent), и если оно оказывается именем робота, которому мы хотим запретить доступ (bad_ robot), тогда переменная marsh_navyn получает значение 1 и вызывает запрет на доступ:

SetEnvIf User-Agent bad_ robot marsh_navyn=1
Order allow,deny
Allow from all
Deny from env=marsh_navyn

Обратите внимание, что значение User-Agent может быть легко изменено пользователем, поэтому бан на основе имени User-Agent не очень безопасен.


Перенаправление страниц в .htaccess

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

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

Существуют различные способы автоматического перенаправления страниц – одним из них является мета-тег http-equiv=”refresh”, уже обсуждавшийся в статье HTML head:

<mеta http-equiv="Refresh" content="0;url=http://www.новый_адрес_страницы" />

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

Rеdirect 301 / old_directory / star_file.html http: //your_site.com/new_directory/new_file.html

301 – это код HTTP сообщения Moved permanently (страница на новом адресе). Старый адрес относится к основному каталогу сайта, а новый адрес является абсолютным – он включает в себя имя самого сайта. Это также позволяет перенаправлять страницы на совершенно другой сайт.

Один конкретный пример:

Rеdirect 301 /rose.html http://www.example.com/flowers/red_rose.html

Страница rose.html, расположенная в корневом каталоге сайта, теперь находится по новому адресу – в подкаталоге flowers по адресу www.example.com с новым именем red_rose.html.

Таким же образом, содержимое всего каталога можно перенаправить:

Rеdirect 301 / old_directory / http: //your_site.com/new_directory/
или даже весь сайт:
Rеdirect 301 / http: //your_new_site.com/

Как автоматически добавить www к URL-адресу страницы (http://example.com/index.html, чтобы стать http://www.example.com/index.html) или наоборот – освободить URL-адреса страниц от www (http : //www.example.com/index.html, чтобы стать http://example.com/index.html), описывается далее.


Перезапись URL с помощью .htaccess

Проблема дублирования ссылок: одна страница – несколько адресов

Часто бывает так, что одна и та же страница может быть доступна по нескольким URL. Другими словами, гиперссылки с другим адресов ведут на одну и ту же страницу (на английском языке это называется дублированием ссылок). Наиболее распространенным примером такого дублирования страниц является использование субдомена www вместе с основным доменом. Например, страницы адреса

https://ravechnost.ru/index.php и
https://www.ravechnost.ru/index.php

полностью идентичны – при вводе любого из двух вышеуказанных URL-адресов в адресную строку браузера отобразится та же страница.

Однако, поисковые системы различают URL для страниц. Это имеет свои нежелательные последствия – вместо того, чтобы сообщаться на странице, они распределяются по разным URL-адресам. Поскольку ценность страницы во многом определяется ее трафиком, очень популярная страница может выглядеть для поисковых систем как две или более довольно посредственные страницы.

Одним из возможных решений проблемы дублирования ссылок является перезапись URL-адресов с помощью файла .htaccess. В следующем примере каждый запрос страницы ravechnost.ru будет переписан как запрос страницы от www.ravechnost.ru:

#Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^ravechnost\.ru
RewriteRule ^(.*)$ https://www.ravechnost.ru/$1 [R=permanent,L

Первая строка, Options + FollowSymLinks, используется, если этого требует конфигурация сервера. Если вы получили сообщение об ошибке Server 500 error, удалите символ #, который является символом комментария и лишает законной силы команду, на которую он помещен.

Команда RewriteEngine on позволяет перезаписывать URL-адреса – по умолчанию механизм перезаписи выключен.

RewriteCond определяет условие для перезаписи адреса. В этом примере условие состоит в том, что имя хоста (доменное имя сайта) – ravechnost.ru. Это имя содержится в переменной HTTP-HOST, а символ «%» является именем переменной и всегда предшествует имени переменной. «^» – это символ начала строки. Знак “\” позволяет использовать символ, следующий за ним, не вызывая его особого значения. Поскольку точка (.) имеет особое значение, перед ней используется «\».


Блокировка hotlinking (кража трафика)

Что такое hotlinking?

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

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

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

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

Блокировка hotlinking с помощью .htaccess

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

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} .*jpе?g$|.*gif$|.*png$ [NC]RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !имя_домена1\.com [NC]
RewriteCond %{HTTP_REFERER} !имя_домена2\.com [NC]
RewriteCond %{HTTP_REFERER} !имя_домена3\.com [NC]
RewriteRule (.*) - [F]

Первая строка включает Apache mod_rewrite, который требуется для выполнения следующих команд.

Во второй строке указано, что команды применяются только к файлам, оканчивающимся на «jpg», «jpeg», «gif» или «png», т.е. картинки. Конечно, вы также можете добавить запрещающие другие файлы – .js, .css, .mp3 и т. д. [NC] гарантирует, что любая комбинация прописных и строчных букв допустима для этих расширений (как расширений .gif, так и .gif. действительны).

Ниже приводится проверка адреса, с которого поступил запрос файла. Первое условие,

RewriteCond% {HTTP_REFERER}! ^ $

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

RewriteCond% {HTTP_REFERER}! имя_домена1 \ .com [NC]

проверяет, что ссылка на файл находится в вашем домене, [NC] допускает любую комбинацию строчных и прописных букв для имени домена. Обязательно замените «имя_домена1» реальным именем вашего сайта, а также поставьте «\» перед каждой точкой, содержащейся в имени.

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

RewriteCond% {HTTP_REFERER}! Имя_домена2 \ .com [NC]
RewriteCond% {HTTP_REFERER}! Имя_домена3 \ .com [NC]

Если вышеуказанные условия выполнены, последняя команда будет запущена

RewriteRule (. *) - [F]

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

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

RewriteRule (. *) /Images/bad_boy.jpg [L]

доставит вместо ожидаемого изображения, картинку bad_boy.jpg из каталога изображений.

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

Акция! Сайт + логотип + продвижение всего за 29000!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Получить предложение

Pin It on Pinterest