Как посмотреть htaccess чужого сайта
Перейти к содержимому

Как посмотреть htaccess чужого сайта

  • автор:

maxua.com.ua Автоматизация интернет магазинов

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

1. Перенаправление посетителей при обновлении сайта.

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

order deny,allow

deny from all

allow from 123.123.123.123

ErrorDocument 403 /page.html



allow from all

Замените 123.123.123.123 на Ваш ip-адрес, а также замените page.html на ту страницу, которую будут видеть пользователи, зашедшие на сайт.

2. Определенная страница с ошибкой 404.

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

ErrorDocument 404 /404.html

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

3. Редирект на перемещенные или переименованные страницы.

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

Redirect 301 /old.html http://yoursite.com/new.html

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

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

Если у Вас в папке на сайте нет файла index, то любой пользователь может посмотреть, какие файлы в ней лежат.

Чтобы избежать таких вещей, следует прописать такой код:

Options All -Indexes

На некоторых хостингах такая функция прописана по-умолчанию, в таком случае Вам не стоит беспокоиться.

5. Создание красивых URL.

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

http://yoursite.com/about

http://yoursite.com/pages/about.html

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

Вот некоторые примеры с кодом:

RewriteEngine on

RewriteRule ^about/$ /pages/about.html [L]

RewriteRule ^features/$ /features.php [L]

RewriteRule ^buy/$ /buy.html [L]

RewriteRule ^contact/$ /pages/contact.htm [L]

P.S. В интернете существует несколько сайтов, с помощью которых можно автоматически редактировать файл .htaccess. Например htaccesseditor.com.

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

AddHandler application/x-httpd-php .php .htm .html

нажать «Сохранить как. «, в имя файла ввести .htaccess и выбрать «все файлы».

еще статья по матерьялу

Переопределение сообщений об ошибках

Одной из полезных возможностей, предоставляемых Apache, является подмена стандартных сообщений об ошибках веб-сервера своими. Для этого служит директива ErrorDocument.

ErrorDocument 403 «

Forbidden

ErrorDocument 404 /errors/404.html

Внимание: при указании непосредственно HTML кода в данной директиве кавычки ставятся только в начале строки (см. пример)!
Пути к файлам указываются относительно корневого каталога данного веб-хоста, а не относительно файловой системы (правильно: /errors/404.html; неправильно: /var/www/myhost/html/errors/404.html).

Парольная защита

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

Для этого необходимо создать файл с паролями (обычно называется .htpasswd) и разместить его в безопасном месте (например, на уровень выше каталога, который является корневым для Вашего хоста; к примеру, если сайт размещен в /home/user/html, то .htpasswd лучше положить в /home/user). Для создания .htpasswd используйте утилиту htpasswd из комплекта Apache.

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

AuthUserFile /home/user/.htpasswd
AuthName “Secure Zone”
AuthType Basic
Require valid-user

AuthUserFile указывает путь к файлу с паролями. AuthName определяет так называемый ‘realm’ («мир»); обычно указывается, к чему осуществляется доступ (например, ‘Site Management Tools’, ‘Billing Information’ и т.п.)
AuthType определяет тип авторизации; практически всегда используется Basic (кроме него доступен тип Digest, но его мы рассматривать не будем).

Наконец, Require определяет набор условий, по которым определяется, кто из перечисленных в .htpasswd пользователей имеет доступ к данному каталогу сайта. ‘valid-user’ подразумевает, что доступ может получить любой пользователь после ввода пароля; вместо valid-user можно через пробел перечислить имена пользователей, которым предоставляется доступ.

Включение поддержки SSI

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

AddType text/html .shtml .htm .html
AddHandler server-parsed .shtml
Options +Includes

Блокировка по IP адресам

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

Синтаксис для этих директив таков:

Order Deny,Allow (или Allow,Deny – в зависимости от того, что требуется)
Deny from all (или адрес хоста)
Allow from all (или адрес хоста)

Например,
Order Deny,Allow
Deny from all
Allow from 192.168.0.
Allow from .localnet
Allow from admin.somewhere.in.the.net
вызывает отказ в доступе для всех, кроме сети 192.168.0.0/24, всех хостов, DNS имя которых содержит .localnet, а также хоста, DNS имя которого admin.somewhere.in.the.net.

Если нужно запретить доступ группе хостов, используется Allow,Deny:
Order Allow,Deny
Allow from all
Deny from 192.168.1.
Deny from hackers.are.everywhere.in.the.net

Принцип прост. По Order определяется порядок обработки правил allow/deny; если мы возьмем второй пример, то сначала сервер обработает правило allow from all, а затем хосты, которые прошли это правило, подвергаются проверке правилом deny; при этом все хосты из сети 192.168.1.0/24 и хост hackers.are.everywhere.in.the.net не проходят эту проверку и не получают доступа.

Более сложные применения:

Order Deny,Allow
Deny from all

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

Блокировка по реферреру

Посредством использования модуля mod_rewrite и файла .htaccess можно добиться запрета доступа к Вашим ресурсам, если клиент пришел с какого-то определенного сайта (блокировка по referer’у).

Для этого требуются следующие директивы .htaccess:

RewriteEngine on
# Options +FollowSymlinks # – раскомментировать, если при установке этого .htaccess появляется ошибка 500, Internal Server Error
RewriteCond % badsite.com [NC]
RewriteRule .* – [F]

Или, если нужно перечислить больше одного сайта,

RewriteEngine on
# Options +FollowSymlinks # – раскомментировать, если при установке этого .htaccess появляется ошибка 500, Internal Server Error
RewriteCond % badsite.com [NC,OR]
RewriteCond % anotherbadsite.com
RewriteRule .* – [F]

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

RewriteEngine On
RewriteCond % !^http://(www.)?mydomain.ru(/)?
RewriteCond % !^http://(.*).mydomain.ru(/)?
RewriteRule .*.(gif|jpg|jpeg|png)$ – [F]
Изменение индекс-страницы

Задать/Изменить индексный файл и последовательность их обработки можно директивой DirectoryIndex
Например:

DirectoryIndex photo.php photo.php5 index.php

Перенаправления

Для организации редиректа средствами .htaccess достаточно строки вида:
Redirect /old_directory/old_file.html http://your_new_site.com/new_directory/new_file.html

если нужно редиректить все содержимое подкаталога:
Redirect /old_directory http://your_new_site.com/new_directory/

редирект для всего сайта:
RewriteEngine On
RewriteRule (.*) http://your_new_site.ru

Запрет обращений к .htaccess

Защитить их можно следующим образом, однако, это по умолчанию уже есть в httpd(2).conf, то есть в самой конфигурациии веб-сервера.

Добавление MIME-типов

Для добавления MIME-типов используется директива
AddType mime/type extension
Например,
AddType application/x-bittorrent torrent

Используется она в тех случаях, когда конфигурация по умолчанию заставляет сервер передавать документы не так, как требуется; например, многие серверы по умолчанию подразумевают тип text/plain, и бинарный файл (например, rar-архив), скачанный с такого сервера, вполне может оказаться «битым».

Запрет прямых ссылок на ресурсы

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

Как же бороться с подобной практикой?
Рассмотрим следующий пример части файла .htaccess:
RewriteEngine on
RewriteCond % !^$
RewriteCond % !^http://(www\.)?mydomain.com/.*$ [NC]
RewriteRule \.(js|css)$ — [F]

Данный код запрещает обращения к .js и .css файлам (скрипты javascript и описания Cascading Style Sheets), если они производятся не с Вашего сайта.

Другой пример:
RewriteEngine on
RewriteCond % !^$
RewriteCond % !^http://(www\.)?mydomain.com/.*$ [NC]
RewriteRule \.(png|gif|jpg|jpeg)$ http://www.mydomain.com/youaretheworst.gif [R,L]

При обращении извне к изображениям, хранящимся на вашем сайте, вместо самих изображений будет отображаться содержимое файла youaretheworst.gif.

Запрет вывода списка файлов

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

Однако иногда может, наоборот, понадобиться разрешить просматривать список файлов, при этом исключив из него их часть. Для этого служит IndexIgnore.
Например,
IndexIgnore *.php* *.pl *.html *.shtml
разрешает вывод списка всех файлов, кроме PHP и Perl скриптов, а также HTML документов.

Как посмотреть htaccess чужого сайта

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

Индексный файл

Индексный файл или файл-индекс — это тот файл, который открывается по умолчанию при обращении пользователя через веб к каталогу, а не к конкретному файлу. Например, ваш посетитель запросит адрес http://ваш_домен/price/, где price — название каталога. Индексный файл это тот файл, который будет показан пользователю при обращении к каталогу без указании имени конкретного файла в нем.

По умолчанию индексными файлами являются следующие: index.html, index.php. Если вы хотите чтобы первым открывался какой-то иной файл, нужно переопределить текущие значения. Как это сделать читайте здесь.

Назначение и использование файла .htaccess

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

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

RewriteEngine on

Пример: как переопределить кодировку html-документов

Мы хотим «объяснить» веб-серверу что все html-документы, которые размещены на сервере, нужно «отдавать» клиенту в кодировке koi8-r, а не в windows-1251, как это сервер делает по умолчанию. Для этого поместим в .htaccess строку:

AddType «text/html; charset=koi8-r» .html .htm .shtml

Получив такой .htaccess, веб-сервер Apache станет выдавать клиентскому браузеру заголовок, в котором будет указано, что документ имеет кодировку koi8-r.

Если на вашем ресурсе существуют html-документы в разных кодировках, (ISO-8859-1, Windows-1250, Windows-1252, UTF-8), то вам, возможно, будет необходимо отключить принудительну выдачу заголовка с кодировкой windows-1251. Для этого в .htaccess добавляется строка:

AddDefaultCharset Off

При этом соответствующая кодировка должна быть прописана на каждой html-странице в виде тега:

Пример: как закрыть директорию паролем

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

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

AuthType Basic
AuthName «Some Name»
AuthUserFile /home/hXXXXX/data/.htpasswd
require valid-user

Путь /home/hXXXXX/data/.htpasswd обозначает полный путь к файлу паролей на диске нашего сервера. Если, например, вы поместите файл .htpasswd (в нем будут пароли) в домашний каталог, куда вы попадаете зайдя на сервер по FTP, то путь к этому файлу будет иметь вид /home/hXXXXX/data/.htpasswd, где hXXXXX — наименование вашей виртуальной площадки (например, h12345).

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

Создаем файл паролей. Файл с паролями должен содержать строки вида login:password. Пароль должен быть зашифрован с использованием алгоритма MD5. Один из способов создать такой файл — воспользоваться программой, входящей в поставку Apache — htpasswd (на нашем сервере она находится в каталоге /usr/local/bin/, полный путь — /usr/local/bin/htpasswd).

Рассмотрим как создать файл паролей в unix shell прямо на сервере. Зайдем в shell, и будем выполнять следующие команды:

htpasswd -mbc .htpasswd user1 sNQ7j9oR2w

создаем новый файл .htpasswd, в который добавляем запись для пользователя user1 с паролем, указанным в командной строке. Просьба обязательно заменить sNQ7j9oR2w на любой собственный пароль — здесь этот пароль указан только для примера

htpasswd .htpasswd user2

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

Если вы используете Windows и не хотите пользоваться unix shell для генерации паролей, можно загрузить Windows-версию программы htpasswd здесь и создать файл с паролями на своем компьютере, после чего, загрузить его на сервер. Если у вас уже установлена Windows-версия Apache, файл htpasswd.exe можно найти в каталоге Program Files\Apache Group\Apache\bin\.

Итак, получите htpasswd.exe и используйте его для генерации паролей таким образом:

htpasswd.exe -mc .htpasswd user1

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

htpasswd.exe -m .htpasswd user2

добавляем пользователя user2 в существующий файл паролей htpasswd.exe, запросив пароль интерактивно

После окончания заведения всех логинов файл нужно загрузить на сервер.

Пример: собственные страницы ошибок

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

Пример: использование перенаправления (Redirect) на другие ресурсы или страницы

Redirect [status] URL-from URL-to

status — необязательное поле (используются в основном поисковыми роботами), определяет код возврата

3xx: Redirection (Перенаправление):

  • 300 Multiple Choices (Множество выборов).
  • 301 Moved Permanently (Перемещено окончательно).
  • 302 Found (Найдено).
  • 303 See Other (Смотреть другое).
  • 304 Not Modified (Не изменялось).
  • 305 Use Proxy (Использовать прокси).
  • 306 (зарезервировано).
  • 307 Temporary Redirect (Временное перенаправление).

URL-from — URL или путь (как прямой так и относительный, корректнее будет указывать относительный путь) запрашиваемого документа (документ или страница или запрос к которому обращается посетитель сайта)

URL-to — URL куда будет перенаправлен запрос после обращения к URL-from

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

Для этого создадим файл .htaccess, со следующим содержанием:

Redirect 307 / http://freebsd.org/

Допустим, делаем переадресацию на перемещённый контент, при обращении к doc/index.html или index.html. Где doc — папка сайта которая находится в той же директории, что и сам файл .htaccess. Сам контент допустим перенесли на сайт microsoft

Redirect 301 doc/index.html http://www.microsoft.com/rus/windows/default.mspx #Или такой вариант Redirect 301 index.html http://www.microsoft.com/rus/windows/default.mspx

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

Redirect 303 http://www.microsoft.com/ http://www.freebsd.org/

Чуть более сложный пример. Нам необходимо перенаправить всех посетителей пришедших на наш сайт без преффикса www, т.е. на host-food.ru. Ввиду массовой интернет-безграмотности, многие делают наоборот, но по уму, сайт должен находиться на субдомене www. Итак, перенаправляем всех кто пришёл по имени host-food.ru на правильное — www.host-food.ru:

# add www to domain name RewriteCond % ^host-food\.ru RewriteRule ^(.*)$ https://www.host-food.ru/$1 [R=permanent,L]

Также, перенаправляем с неправильно набранного имени сайта hostfood.ru на правильное — www.host-food.ru:

# redirect for hostfood.ru RewriteCond % ^hostfood\.ru RewriteRule ^(.*)$ https://www.host-food.ru/$1 [R=permanent,L] RewriteCond % www\.hostfood\.ru RewriteRule ^(.*)$ https://www.host-food.ru/$1 [R=permanent,L]

Пример: запрет доступа к некоторым файлам

Иногда возникает необходимость запретить доступ к определенным файлам. Например, к конфигурационным файлам, содержащим реквизиты доступа к базам данных, интерфейсам и т.п. Допустим, в файле config.cfg вы храните логин/пароль доступа к базе данных. Создаем в этой директории файл .htaccess с директивами:


Order allow,deny
Deny from all

Теперь, если посетитель наберет в браузере нечто вида http://www.ваш_домен.ru//config.cfg, он получит ошибку 403.

Пример: переопределение индексного файла

Ситуация: пользователь обратился к каталогу http://www.ваш_домен.ru/price/. При таком запросе первым откроется и будет показан индексный файл. Если вы хотите переопределить индексный файл и сделать так, чтобы первым открывался не index.htm, а, например, файл myindex.php, то сделать это можно поместив в файл .htaccess, в соответствующем каталоге, следующую инструкцию:

DirectoryIndex myindex.php

Получив .htaccess с таким содержимым, веб-сервер Apache откроет, по-умолчанию, именно файл myindex.php.

Пример: Запрет доступа с какого-то определённого IP адреса

Для этого, нужно прописать в данный файл строку:

Deny from 77.41.104.180

(пример для запрета с адреса 77.41.104.180)

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

Order Deny,Allow Allow from 77.41.104.180 Deny from all

Пример: Переадресация с HTTP на HTTPS

Ситуация: требуется перенаправить всех посетителей сайта на зищищённое HTTPS соединение

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

# RewriteEngine on RewriteCond % !=https RewriteRule .* https://%% [R=301,L]

Требуется запретить доступ к сайту для всех стран кроме России, и, определённой подсети

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

# written by lissyara, 2013-05-27 in 20:53 MSK # включаем реврайт RewriteEngine on # включаем GeoIP GeoIPEnable On # задаём страны и поведение для них SetEnvIf GEOIP_COUNTRY_CODE BY GoodCountry SetEnvIf GEOIP_COUNTRY_CODE RU GoodCountry Order Allow,Deny # разрешаем доступ из сетей страны GoodCountry Allow from env=GoodCountry # добавляем исключение Allow from 91.227.16.0/24

По поводу примера с исключением — на самом деле, эта подсеть тоже Российская, но — GeoIP на момент написания скрипта этого не знал, и не выдавал для неё страну.

Вот пример с блокировкой доступа к админке WordPress, и ограничением POST запросов к сайту только Россией:

# written by lissyara, 2015-11-04 in 12:33 MSK # включаем реврайт RewriteEngine on # включаем GeoIP GeoIPEnable On # задаём страны и поведение для них SetEnvIf GEOIP_COUNTRY_CODE RU GoodCountry # закрываем доступ к админке WordPress для всех не-Российских IP адресов Order Allow,Deny Allow from env=GoodCountry # запрещаем POST запросы ко всему сайту для всех не-Российских IP адресов Order Allow,Deny Allow from env=GoodCountry

POST запросы не кэшируются, поэтому от них создаётся большая нагрузка на сайт

Запрет всех POST запросов к какой-то директории

Создаём файл .htaccess в директории куда надо ограничить доступ:

# written by lissyara, 2017-01-015 in 17:23 MSK # Order deny,allow Deny from all Allow from 127.0.0.1

На всех тарифах нашего хостинга поддерживается htaccess.

© 2008–2023 «HOST-FOOD»
Качественный хостинг, дешевый хостинг, недорогой хостинг сайтов, php хостинг, регистрация доменов

Как узнать есть ли 301 редирект у сайта (чужого)?

zxgame

zxgame

19.11.2012 16:25 5 035

Подскажите, пожалуйста, каким образом определить есть ли 301 редирект на сайте. Если сайт не мой? 301 редирект это тоже самое что и клей? его можно проверить на хсео.ин? Достаточно ли прописать в .htaccess ?
Options +FollowSymLinksRewriteEngine OnRewriteCond % ^vash_sait\.ru$ [NC]RewriteRule ^(.*)$ http://www.vash_sait.ru/$1 [R=301,L]
просто первый раз этим занимаюсь
для яндекса обязательно в файле роботс определять главное зеркало?

Ответы на пост (2) Написать ответ

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

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

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

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

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

  • Примеры использования файла .htaccess
  • Диагностика ошибок
  • Дополнительная документация и примеры

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

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

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

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

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

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

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

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

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

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

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

Подобное правило не сработает для перенаправления с адресов, содержащих Query String (символы после ?). Для запросов, содержащих QUERY_STRING, можно использовать сочетание RewriteCond и RewriteRule.

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

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

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

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

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

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

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

a) в файле ~/ваш_домен/docs/robots.txt прописать

User-agent: *
Disallow: /errors

b) создать файл ~/ваш_домен/docs/errors/.htaccess, в котором прописать

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

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

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

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

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

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

Order Allow,Deny
Allow from all
Deny from 123.4.5.6 123.5.4.3

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

Order Deny,Allow
Deny from all
Allow from 123.4.5.6 123.5.4.3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для работы перенаправления на сайте должен быть установлен действительный SSL-сертификат.

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

RewriteEngine on
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

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

RewriteEngine on
RewriteCond %{ENV:HTTPS} on
RewriteRule ^.*$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

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

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

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

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