Htaccess где находится


Что такое .htaccess?

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

Где располагается htaccess?

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

Зачем нужен и какие функции выполняет htaccess?

С помощью файла .htaccess (всё правильно, впереди точка) можно:

1. указать и управлять конфигурациями и настройками права доступа к директориям и файлам
2. осуществлять редирект (пересылку на другой адрес)
3. прописывать название индексных файлов
4. создавать ЧПУ — человеку-понятные-урлы
5. скрывать директории и файлы
6. обрабатывать ошибки и многое другое
7. склеивать сайт с www и без
8. определить кодировку файлов и данных
9. защищать сайт от хотлинков (удалённого использования файлов сервера)
10. работать с кэшем


Подробнее в статье: Примеры настроек в файле htaccess

Директивы модуля Mod_rewrite

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

RewriteBase — устанавливает базовый URL для преобразований в контексте каталога
RewriteCond — определяет условие при котором происходит преобразование
RewriteEngine — включает или выключает работу механизма преобразования
RewriteLock — определяет имя файла синхронизации
RewriteLog — устанавливает имя файла в котором сервер ведет журнал любых происходящих действий по преобразованиям URL
RewriteLogLevel — устанавливает уровень детализации журнала механизма преобразований
RewriteMap — определяет функцию создания ассоциативного массива для поиска по ключу
RewriteOptions — утанавливает специальные опции для механизма преобразований
RewriteRule — определяет правила для механизма преобразований (может упоминаться более одного раза)


tradebenefit.ru

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

Что за файл .htaccess?

Файл .htaccess — это файл конфигурации сервера, который сообщает вашему севера как правильно обрабатывать определенные вещи на вашем сайте. Например как перенаправлять пользователей на страницы, как защитить административную панель паролем, или как защитить определенные папки и т.д.

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

showhiddenfiles-ftp[1]

Иногда, даже когда выставлена такая опция, FTP клиент всё также может не отображать ваш .htaccess файл.


Почему вы можете не найти файл .htaccess?

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

permalinksettings1[1]

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

htaccessfile-writable[1]

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


Если вы получите сообщение об ошибке при загрузке файла, то необходимо изменить права доступа к вашей корневой директории. Давайте предположим, что все ваши файлы WordPress расположены в директории /home/advokatb/public_html/.

В данном случае корневой директорией сайта является public_html. Переходим в родительскую директорию этой папки и щелкаем правой кнопкой мыши на папке public_html. Выбираем File Permissions (Права доступа), что откроет нам диалоговое окно. Вводим в поле 755, и снова пытаемся загрузить свой файл .htaccess в папку public_html.

filepermissions[1]

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

По всем вопросам и отзывам просьба писать в комментарии ниже.

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

wpincode.com


Здравствуйте, читатели блога «Сайт с нуля». Сегодня речь пойдет об настройках сервера сайта, а именно вопроса — где найти файл htaccess и зачем, собственно, его искать.

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

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

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

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

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


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

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

  • Директивы перенаправления простого типа;
  • Директивы перенаправления сложного типа;
  • Индексные страницы;
  • Вывод ошибок php htaccess;
  • Кодировка страницы;
  • Управление параметрами доступа;
  • Создание паролей для определенных директорий;
  • Параметры PHP.

Как создать файл htaccess?

Создание данного файла не является сложной процедурой. Создать файл htaccess, к примеру, для wordpress можно с помощью обычного текстового редактора «Блокнот», который есть в каждом компьютере, работающем под управлением операционной системы Windows.

Алгоритм создания подобного файла выглядит следующим образом:

  • Откройте «Блокнот».
  • Убедитесь, что в настройках программы (в меню формат), функция переноса слов отключена.
  • В меню файл выберете команду «создать» и создайте новый документ.
  • Далее, в том же меню выберете пункт «Сохранить как», вручную впишите тип файла .htaccess и сохраните его в необходимом каталоге.

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

Для этого:

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

Как задается кодировка в файле htaccess?

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

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

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

  • Windows-1251;
  • KOI8-r;
  • Cp866;
  • Windows-1252;
  • Windows-1250;
  • UTF-8.

Давайте рассмотрим, каким образом можно указать, какая кодировка необходима для сайта по умолчанию через файл под названием htaccess. Команда AddDefaultCharset задает таблицу символов или как ее принято называть кодировку, для каждой выдаваемой браузером страницы сайта на сервере.

Для того чтобы указать кодировку, в которой браузер будет отображать станицу, нужно использовать команду: «AddDefaultCharset
UTF-8
».

Во время загрузки файла на сервер существует возможность его перекодировки. Для перекодировки следует указать, что все получаемые файлы будут обладать кодировкой UTF-8. Для того чтобы передать данную кодировку всем загружаемым на сервер файлам вводим команду: «CharsetSourceEnc UTF-8».

В случае, если вам необходимо отменить перекодировку файла сервером вносим команду: «CharsetDisable on».

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

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

sitesnulya.ru

Возможности и для чего нужен

В данном файле сайтостроители могут:

  • Настраивать директивы простого перенаправления (редиректы). Это позволит после смены домена отправить посетителя со страницы предыдущего сайта на новый проект.

  • Переадресовывать с URL, где есть www, на домен без www. Или же на https после того, как установите ssl сертификат.
  • Описывать ошибки. В их числе и ошибка 404 с заменой на необходимую страницу.
  • Кэширование файлов. Делается с целью ускорения работы веб-ресурса.
  • Создавать ЧПУ. Это «Человеко-понятные УРЛы», то есть, формируются ссылки, понятные для интернет-пользователей.
  • Изменять исходный код страниц.
  • Управлять доступом к файлам и директориям при помощи паролей.
  • Задавать индексный файл.
  • Открывать и закрывать доступ с определенных IP-адресов.
  • Управлять поисковыми ботами на сайте.
  • Настраивать директивы сложного направления.

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

Конфигурации сервера изменяются только с использованием директив (команд), включающих в себя «ключ» и «значение» для него. Все самые важные директивы, позволяющие управлять сервером, находятся в основном файле конфигурации, называющимся httpd.conf. Проблема в том, что у рядового пользователя нет возможности получить к нему доступ, так как там находится большое количество параметров, от которых зависит работоспособность всего сервера. Вот почему актуален .htaccess, позволяющий менять некоторые директивы в главном файле.


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

Где находится .htaccess

Можно с легкостью проверить, есть ли у вас служебный файл. От многих других документов он отличается тем, что имеет только расширение в виде названия из слова, тогда как самого названия нет. Да, мы все привыкли видеть файлы с названием из слова, и расширением после точки, которое состоит всего из 2-3 букв. Но пустые названия позволяют делать файлы и папки «скрытыми», с открытым исходным кодом. Из этого следует вывод, что .htaccess для обычных пользователей остается невидимым, поэтому они не смогут его изменить.

Но есть у этого метода «скрытия» файла и обратная сторона медали. В стандартных FTP-клиентах на ОС Windows и Mac, документ очень часто остается невидимым для пользователей, из-за чего они ошибочно полагают, что его просто нет. Поэтому человек создает новый файл для внесения своих конфигураций, кодов для обработки ошибок, создания доступа к папкам и пр. Хорошо, что большинство хостингов оставляют место на диске, где htaccess-файл уже установлен автоматически.

Расположение htaccess на сервере

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

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

Как правильно создать .htaccess

Для этого вам понадобится самый обычный текстовый редактор, к примеру, Блокнот, который есть на любом ПК:

  1. Откройте Блокнот, ничего в нем не пишите.
  2. Выберите пункт «Файл» и нажмите «Сохранить как».
  3. Появится окно, где напротив пункта «Тип файла» выберите «All types» или «Все файлы».
  4. В строке «Имя файла» введите .htacces и кликните на «Сохранить».

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

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

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

Рассмотрим самые популярные команды для .htaccess.

Редирект

Эти директивы используются с завидной регулярностью. Они позволяют перенаправить посетителя со старого URL на новую страницу. Это возможно благодаря 301-редиректу. Достаточно в код файла вписать:

Redirect 301 /старый_URL.html http://www.название_вашего_сайта.ru/новый_URL.html

В целом директива будет отображена в таком виде:

Redirect [status] URL_LOCAL URL_REDIRECT

URL_LOCAL – это старый адрес, с которого осуществляется перенос пользователя.

URL_REDIRECT – новый URL, куда переносится страница.

В поле [status] могут быть следующие значения:

  1. 301 – страница перенесена навсегда.
  2. 302 – страница перенесена на время.
  3. 303 – смотрите другую страницу.
  4. 410 – страница удалена.

Mod_rewrite (директивы сложного переноса)

Этот модуль содержится в Apache. В нем есть изобилие самых разных директив для расширенного управления адресами. К основным из них относятся:

1. Указание основного зеркала

Предназначен для того, чтобы преобразовать домен с www на URL без www. Достаточно ввести правило:

RewriteEngine On # включает работу  RewriteCond %{HTTP_HOST} ^www.название_вашего_сайтаru$ [NC] #условия для начала перенаправления  RewriteRule ^( *)$ http://название_вашего_сайта_/$1 [R=301,L] #правило преобразования

2. Перенос на https

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

RewriteEngine On  RewriteCond %(HTTPS) !on  RewriteRule (.*) https://%(HTTP_HOST)%(REQUEST_URL)

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

Если вы не хотите, чтобы URL страницы заканчивался названием каталога http://название_вашего_сайта.ru/catalog, введите в файл код:

RewriteCond %{REQUEST_URI} /+[^.]+$  RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]

Выполнив данную команду, в дальнейшем после адреса в автоматическом режиме будет добавляться слеш: http://название_вашего_сайта.ru/catalog/

4. Перенос домена

Изменив название сайта, не забудьте в .htaccess указать:

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

Оптимизируя сайт и под Яндекс, и под Google, изменение доменного имени может быть чревато неприятными последствиями. Инструкции в robots.txt, предназначенные для Яндекса, перекрываются 301-редиректом. Но этого можно не допустить, добавив в код правило:

RewriteEngine on  RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC]  RewriteRule ^([^/]+) $1 [L]  RewriteCond %{HTTP_HOST} ^mysite.ru  RewriteRule ^(.*)$ http://www.my-site.ru/$1 [R=301,L]

5. Запретные команды для поискового бота

В .htaccess, так же, как и в robots.txt, можно закрыть доступ к сайту для роботов поисковых систем:

RewriteEngine on  RewriteCond %{USER_AGENT} Googlebot  RewriteRule .* - [F] # F – выдает ошибку 403 – запрещено для сканирования

Обработка ошибок

Практически любой интернет-пользователь встречался с ошибкой 404 not found (страница не найдена или удалена). Но есть огромное количество других ошибок, о которых вы наверняка не слышали.

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

ErrorDocument 404 /siteerror404.html

Индексные документы

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

DirectoryIndex name.xml

Либо добавить несколько таких страниц, и поисковик будет находить их в соответствующей последовательности:

DirectoryIndex index.html index.php index.pl

Указание кодировки

Данная функция нужна, чтобы текст отображался на экране пользователя правильно. Иначе вместо нормальной читабельной страницы он будет видеть непонятные символы. Сегодня широко распространена кодировка: Windows-1251 – Кириллица и UTF-8 – двухбайтовая кодировка. Для выбора кодировки в служебном документе, применяется директива:

AddDefaultCharset WINDOWS-1251

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

CharsetSourceEnc WINDOWS-1251

Указание паролей для директорий

Для этого в закрываемом каталоге пропишите:

AuthName "Need password" #сообщение для запроса пароля  AuthType Basic #тип аутентификации  AuthUserFile /passwords/.psd #имя файла, содержащее пароли для входа  Require valid-user #имя пользователей, которым открыт доступ

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

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

Deny from all

Для запрета просмотра определенного файла, например, test.php:

<Files test.php>  deny from all  </Files>

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

<Files "passwd.html">    Order Deny,Allow  Deny from all  Allow from 12.345.678.90  </Files>

Заключение

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

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

webmasterie.ru

Что такое .htaccess?

Файл .htaccess (англ. hypertext access) используется для простой и удобной настройки веб-сервера на котором хранится сайт пользователя. Соответственно меняя настройку веб-сервера, мы сможем поменять работу сайта. Как правило, файл .htaccess находится в корневом каталоге, а его действие распространяется на весь сайт и на все подкаталоги. Если же в другом каталоге содержится свой .htaccess, то он будет действовать только на свой каталог и подкаталоги.

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

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

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

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

Как проверить работает ли .htaccess?

Все просто, напишите в первой строчке этого файла любое слово (например YAROBOT), сохраните файл и замените им находящийся на сервере. Если сайт продолжит работать, то .htaccess в данный момент не работает. Если же появится ошибка 500 Internal Server Error, то это значит, что веб-сервер не смог понять команду (YAROBOT) и выдал ошибку. Этот факт подтвердит, что работа .htaccess на сервере поддерживается и включена в данный момент. Чтобы вернуть сайту работоспособность удалите строчку с YAROBOT.

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

  1. Редирект между страницами или сайтами + изменение URL
  2. Обработка ошибок
  3. Настройка безопасности сайта
  4. Кодировка страниц сайта
  5. Оптимизация работы сайта
  6. Настройка PHP

Правильный 301 редирект через файл .htaccess

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

RewriteEngine On

301 Редирект с одной страницы на другую (или сайт)

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

Redirect 301 /старая-страница.html http://сайт.рф/новая-страница.html

или

RedirectPermanent /старая-страница.html http://сайт.рф/новая-страница.html

301 Редирект с www-сайта на сайт без www

Например перенаправление с http://www.site.com на http://site.com. Это очень полезная вещь, часто используется в СЕО

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

Обратный редирект с домена без www на домен с www

Перенаправление с http://site.com на http://www.site.com (не советуем использовать)

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

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

Redirect 301 / http://newsite.com/

Как добавить .html в конце URL?

Чтобы при вводе site.com/page или site.com/page/ происходило перенаправление на site.com/page.html пишем в .htaccess следующее:

RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|?)
RewriteRule .* %1.html [R=301,L]
RewriteRule ^(.*)/$ /$1.html [R=301,L]

Как убрать .html в конце URL?

Обратный редирект с site.com/page.html на site.com/page

RewriteBase /
RewriteRule (.*).html$ $1 [R=301,L]

Как убрать слэш в конце URL?

Например было site.com/page/, стало site.com/page

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [R=301,L]

301 Редирект с одного раздела на другой?

Перенаправление всех страниц одного раздела site.com/razdel-1/razdel-2/page на на страницы другого раздела site.com/razdel-1/page

RewriteRule ^blog/raznoe/(.*)$ http://site.ru/blog/$1 [R=permanent,L]

301 Редирект при переезде со старого домена на новый

Следующее правило корректно перенаправит посетителей с каждой конкретной страницы старого сайта на такую же страницу на новом сайте. Например со страницы oldsite.com/page на newsite.com/page

RewriteCond %{HTTP_HOST} ^www.oldsite.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^test.oldsite.com$ [NC]
RewriteRule ^(.*)$ http://newsite.com/$1 [R=301,L]

Правильное изменение страниц ошибок через .htaccess

Когда пользователь хочет увидеть сайт (отправляет запрос на сервер хостера), то сервер возвращает ему ответ с кодом. Коды 1-399 свидетельствуют о нормальной работе сервера, а коды 400-599 сообщают об ошибке сервера (коды всех ошибок смотрите в спец. статье). Например, если сервер с вашим сайтом перегружен, или у него происходит перезагрузка, то пользователь увидит непонятный ему текст (например, 500 Internal Server Error), подумает, что сайт больше не будет работать и больше никогда на него не вернется. Чтобы вместо стандартной страницы ошибки (непонятно для пользователя) показать ему вашу отдельную страницу, на которой будет например, сообщение о том, что сайт временно не работает, но позже восстановит свою работу и на него обязательно стоит вернуться (сайт КиноПоиск при перегрузки серверов выдает сообщение «Матрица перезагружается…» и соответствующую картинку). Наиболее распространенным решением является составление собственной страницы вместо стандартной 404-ошибки. Эта ошибка показывается пользователю, если введен адрес несуществующей страницы. Думающие вебмастеры, создают свою страницу вместо непонятной стандартной, на которой пишут, что человек перешел по несуществующей ссылке и предлагают поискать нужную информацию на сайте, а не уйти с него. Пример нашей 404-страницы можно увидеть здесь. Чтобы показывать пользователям свою страницу ошибки вместо стандартной, нужно создать отдельную страницу (например http://yoursite.com/404.html) и добавить соответствующий код в файл .htaccess Вот примеры кода, который нужно добавить:

ErrorDocument 400 http://yoursite.com/400.html
ErrorDocument 404 http://yoursite.com/404.html
ErrorDocument 500 http://yoursite.com/500.html

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

ErrorDocument 403 «Sorry can’t allow you access today, see you later alligator :)»

Настройки безопасности сайта через файл .htaccess

Файл .htaccess дает большие возможности для улучшения безопасности сайта. Наиболее популярные мы сейчас перечислим:

Защита сайта от скриптовых инъекций

#Включает отслеживание сим-ссылок
Options +FollowSymLinks
#Запускает url_rewriting
RewriteEngine On
#Блокирует все ссылки, содержащие <script>
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
#Блокирует все скрипты, которые пытаются изменить переменные PHP Globals:
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
#Блокирует все скрипты, которые пытаются изменить переменную _REQUEST:
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
#Перенаправляет все подобные попытки на страницу с ошибкой 403 — запрещено
RewriteRule ^(.*)$ index.php [F,L]

Как защитить сайт от кражи картинок

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

Options +FollowSymlinks
#Запрещает кражу картинок
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?yoursite.com/ [nc]
RewriteRule .*.(gif|jpg|png)$ http://yoursite.com/images/stop_stealing.gif[nc]

yoursite.com — адрес вашего сайта
http://yoursite.com/images/stop_stealing.gif — путь к картинке, которую вы сами должны создать. На ней обычно пишут «не крадите картинки с чужих сайтов» или что-то подобное.

Как заблокировать доступ к сайту для пользователя по IP?

Применяется против спамеров и прочих неадекватов, изредка для предотвращения хакерских атак.

#Вносим сюда нежелательные IP адреса
allow from all
deny from 164.186.15.116
deny from 124.153.34.144

Как заблокировать доступ к сайту для всех IP кроме проверенных?

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

#Запрещает доступ для всех, кроме указанных IP-адресов
ErrorDocument 403 http://www.yoursite.com
Order deny,allow
Deny from all
Allow from 164.186.15.116
Allow from 124.153.34.144

Как запретить просмотр содержимого конкретной папки

#Запрещает просмотр содержимого папки
Options All -Indexes

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

#Защищает файл myfile.txt
<files myfile.txt>
order allow,deny
deny from all
</files>

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

Например чтобы запретить доступ ко всем файлам .txt пишем так:

<Files «.(txt)$»>
Order Deny,Allow
Deny from all
</Files>

Блокируем ненужных User Agent-ов

Часто у пользователя в браузере установлено очень много расширений, которые передают серверу (на котором расположен ваш сайт) информацию о себе и другую лишнюю информацию. Такую же информацию посылают на сервер клиентские приложения установленные на компьютере пользователя, а также различные роботы и пауки. Информацию о большинстве актуальных на сегодня «Юзер Агентах» можно найти здесь.

#Блокирует нижеперечисленных User Agent-ов
SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]
SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]
SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]
SetEnvIfNoCase user-Agent ^Zeus [NC]
<limit get=»» post=»» head=»»>
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</limit>

Изменение кодировки сайта через .htaccess

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

UTF-8 — универсальная двухбайтовая кодировка
Windows-1251 — Кириллица (Windows)
KOI8-r — Кириллица (КОИ8-Р)
cp866 — Кириллица (DOS)
Windows-1250 — Центральная Европа (Windows)
Windows-1252 — Западная Европа (Windows)

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

<meta http-equiv=»content-type» content=»text/html; charset=Windows-1251″>

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

AddDefaultCharset WINDOWS-1251

Если работают оба варианта (и мета-тег, и файл .htaccess), то очень важно, чтобы кодировка в них совпадала.

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

CharsetSourceEnc WINDOWS-1251

Чтобы выключить перекодировку сервера нужно вписать:

CharsetDisable on

Оптимизация работы сайта через .htaccess

Ускорение работы сайта через Gzip

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

<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>

или

FileETag MTime Size
<ifmodule mod_expires.c>
<filesmatch «.(jpg|jpeg|gif|png|ico|css|js)$»>
ExpiresActive on
ExpiresDefault «access plus 1 month»
</filesmatch>
</ifmodule>

или

<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>

Как улучшить кэширование сайта на сервере?

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

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType application/javascript «access plus 7 days»
ExpiresByType text/javascript «access plus 7 days»
ExpiresByType text/css «access plus 7 days»
ExpiresByType image/gif «access plus 7 days»
ExpiresByType image/jpeg «access plus 7 days»
ExpiresByType image/png «access plus 7 days»
</IfModule>

или

FileETag MTime Size
<ifmodule mod_expires.c>
<filesmatch «.(jpg|gif|png|css|js)$»>
ExpiresActive on
ExpiresDefault «access plus 1 month»
</filesmatch>
</ifmodule>

В выражении «access plus …» установите срок хранения файлов на компьютере пользователя. По истечении этого срока, при запросе к сайту файлы будут единоразово загружены с сервера. Оптимальным будет от 7 дней до месяца, хотя иногда устанавливается и год.

Изменение главной (индексной) страницы сайта

Как правило при заходе на сайт сначала загружается страница index.html или index.php. Чтобы изменить это правило (в начале станет загружаться mypage.php) добавляем в .htaccess такой код:

DirectoryIndex about.html

Настройка PHP-параметров через файл .htaccess

Обычно за настройки PHP отвечает файл php.ini, но часть этих настроек можно задать через .htaccess. Для этого используются два выражения: php_value — для логических значений (например включитьвыключить), и php_flag для числовых значений. Вот правила написания этих выражений:

php_flag директива1 ЗНАЧЕНИЕ1
php_value директива2 ЗНАЧЕНИЕ2

 

где ЗНАЧЕНИЕ1 может быть on, off, 1 или 0 (1 и on — означает включить, а 0 и off — выключить);

ЗНАЧЕНИЕ2 — любое числовое или буквенное значение, которое подходит под конкретную директиву;

директива1 (используется только с php_flag) может иметь значения:

magic_quotes_gpc — вклвыкл функцию magic_quotes_gpc

php_flag magic_quotes_gpc on

display_startup_errors — вклвыкл показ ошибок, которые происходят при работе PHP

php_flag display_startup_errors 1

display_errors — вклвыкл показ ошибки в браузер

php_flag display_errors 1

output_buffering — вклвыкл буферизацию вывода данных

>php_flag output_buffering on

register_globals — вклвыкл глобальные переменные

php_flag register_globals on

engine — вклвыкл исполнение PHP в папке в которой находится .htaccess и во всех вложенных

php_flag engine off

директива2 (используется только с php_value) может иметь такие значения:

upload_max_filesize — устанавливает максимальный размер загружаемого файла

php_value upload_max_filesize 10M

user_agent — задает значение строки user_agent, которую передает сервер

php_value user_agent “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)”

post_max_size — задает максимальный размер пересылаемой почты

php_value post_max_size 10M

mysql.default_user — задает имя пользователя базы данных

php_value mysql.default_user databaseuser

mysql.default_password — задает пароль для пользователя БД

php_value mysql.default_password jk323jh4g

mysql.default_host — задает имя хоста БД (обычно это localhost)

php_value mysql.default_host localhost

sendmail_from — задает имейл для отправки почты с помощью PHP

php_value sendmail_from

auto_prepend_file — задает файл, который будет добавлен в начало каждого PHP-скрипта

php_value auto_prepend_file /www/publiс_html/myfile.php

auto_append_file — задает файл, который будет добавлен в конец каждого PHP-скрипта

php_value auto_append_file /www/publiс_html/myfile.php

ru.hostings.info

Как заставить Апач обрабатывать SSI директивы?

SSI позволяют «собирать» страницу из кусочков. В одном кусочке у вас код меню, в другом код верхней части страницы, в третьем — нижней. А посетитель видеть обычную страницу, которая состоит из того кода, который входит в ваши кусочки. Необходимы обязательные установки в httpd.conf:
В блоке, начинающемся с <Directory/> и заканчивающийся </Directory> в строку Options Indexes добавьте Includes.
и после, в файле .htaccess пишем:

AddHandler server-parsed .shtml .shtm .html .htm

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

Options -Indexes

Выполнение php кода в файлах с другим расширением.

Иногда бывает полезно «обмануть» посетителя, выдавая ему свои php-скрипты или иные файлы, как html файлы. Реально используется для индексации поисковой системой Rambler php-скриптов.

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

Заметьте, так как файлам с расширением .html и .htm сопоставлено, что это файлы с гипертекстовой разметкой, то мы первой строкой убираем это сопоставление и добавляем обработку таких файлов php интерпретатором.

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

Error 404 …

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

Можно создать специальный файл, где будут ссылки на ваш сайт, а не на хостера. Назвать его 404.html и поместить в корневую директорию.
Величина страницы с ошибкой должна быть больше 511 байтов, иначе Internet Explorer может показать собственную страницу с описанием ошибки.

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

Можно указать другой файл, который автоматически откроется при появлении ошибки.
Карта сайта — является идеальным файлом для обработки ошибки error 404 (файл не найден).

ErrorDocument 404 /map.html

register_globals

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

php_flag register_globals on

Или php_flag register_globals off если вы хотите отключить.

www.ph4.ru

  • Несколько слов о веб-сервере Apache
  • Индексный файл
  • Назначение и использование файла .htaccess
  • Переопределение кодировки
  • Как закрыть директорию паролем
  • Переопределение индексного файла
  • Запрет и разрешение выдачи листинга
  • Собственные страницы ошибок
  • Запрет доступа с некоторых IP-адресов
  • Запрет доступа к некоторым файлам
  • Заголовок last-modified
  • Управление кэшированием
  • Как создать переадресацию
  • Переадресация с HTTP на HTTPS при использовании IP+SSL
  • Особенность переадресации на синонимах
  • Установленные модули Apache

Несколько слов о веб-сервере Apache

Мы используем Apache httpd в качестве основного веб-сервера. Apache используется для организации большинства веб-серверов в мире и является самым массовым продуктом своего класса. Этот сервер обладает обширными возможностями конфигурации, является очень производительным и поддерживает все известные протоколы для работы веб-серверов. Специально для Apache созданы версии таких популярных языков программирования как Perl и PHP, а также этот сервер легко интегрируется с широко применяемыми СУБД (например, MySQL).

Главный сайт проекта находится по адресу httpd.apache.org, а основная документация по версии 1.3.хх доступна на странице httpd.apache.org/docs/.

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

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

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

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

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

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

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

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

Htaccess где находится

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

Переопределение кодировки:

По умолчанию веб-сервер «отдает» все html-документы, которые размещены на сервере в кодировке windows-1251. Изменить тип кодировки, в которой веб-сервер будет «отдавать» информацию, можно в личном кабинете https://cp.masterhost.ru.

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

Htaccess где находится

Изменить кодировку можно также с помощью файла .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-странице в виде тега <meta http-equiv=»Content-type» content=»text/html; charset=windows-1251″ />

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

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

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

AuthType Basic  AuthName "Some Name"  AuthUserFile /home/uXXXXX/.htpasswd  require valid-user 

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

В директиве 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 FilesApache GroupApachebin.

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

  • htpasswd.exe -mc .htpasswd user1

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

  • htpasswd.exe -m .htpasswd user2

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

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

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

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

DirectoryIndex myindex.php

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

Пример: запрет и разрешение выдачи листинга

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

Options +Indexes

Файл .htaccess необходимо создавать именно в том каталоге, в котором планируется разрешить листинг. Данная директива будет действовать также и на все подкаталоги (это достигается включенной по умолчанию в настройках виртуального хоста директивой AllowOverride All).

По умолчанию включена директива Options -Indexes, и в случае отсутствия индексной страницы вы получите HTTP ошибку 403.

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

IndexOptions  Charset=UTF-8

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

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

Пример: запрет доступа с некоторых IP-адресов

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

В таком случае необходимо создать в нужной директории файл .htaccess с директивами. Например, чтобы запретить доступ с IP-адреса 172.16.16.16:

Order Allow,Deny  Allow from All  Deny from 172.16.16.16

Теперь при попытке обратиться к сайту с IP-адреса 172.16.16.16 посетитель получит ошибку 403 или вашу страницу для этой ошибки.

Указание части адреса в виде 172.16.16 ограничит доступ из подсети 172.16.16/24.

Иногда требуется выполнить обратное действие и заблокировать доступ к сайту для всех IP кроме вашего (как узнать мой IP?). Например, чтобы открыть доступ только для IP-адреса 172.16.16.16, добавьте следующую инструкцию в файл .htaccess:

Order Allow,Deny  Allow from 172.16.16.16  

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

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

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

<FilesMatch ".(cfg)$">  Order allow,deny  Deny from all  </FilesMatch>

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

Пример: заголовок last-modified

В ряде случаев требуется, чтобы web-сервер выдавал HTTP-заголовок Last-Modified. К примеру, при регистрации вашего ресурса на Яндексе, возникает ошибка «Неправильные даты». Для статических документов cервер будет выдавать значение last-modified всегда. Это действительно для html-файлов. Для SSI cервер будет выдавать значение last-modified в том случае, если прописана директива «XBitHack full» (просто пропишите эту строку в .htaccess), и для файла, к которому происходит обращение, выставлен атрибут «исполняемый» для группы. В скриптах last-modified выдается иными средствами. Например, если учесть то, что php-скрипт генерирует код динамически, то самым логичным будет в качестве last-modified отдавать текущую дату и время./>

Реализуется это следующим образом:

<? header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT"); ?>

Внимание: команда header должна выполняться в php-скрипте до того, как скрипт начнет выдавать html-текст в браузер пользователя.

Полезные ссылки по теме:

  • Функция header
  • Функции для работы с сервером Apache

Пример: управление кэшированием

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

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

В приведенном ниже примере отключено кэширование для текстовых документов, установлен период обновления для файлов с расширением gif — 3 месяца с момента изменения файла, для файлов с расширением jpeg — 1 день с момента обращения:

ExpiresActive on  ExpiresByType image/jpeg "access plus 1 day"  ExpiresByType image/gif "modification plus 3 months"  ExpiresByType text/html "now"

Примечание: При использовании Parser если вам необходимо полностью исключить заголовки от модуля Apache mod_expires, то для этого необходимо в директории с parser3.cgi создать файл .htaccess и внести в него следующую директиву: ExpiresActive off

Пример: как создать переадресацию

  • Если у вас размещены 2 домена (не обязательно на одной площадке) domain1.tld и domain2.tld, и вам необходимо, чтобы при обращении к domain2.tld у пользователей изменялся адрес на «правильный», и сразу происходило перенаправление, тогда добавьте для домена domain2.tld переадресацию на http://domain1.tld/. О том, как это сделать, написано в следующей статье.
  • Если вам необходимо, чтобы при обращении к вашему домену domain.tld происходило автоматическое перенаправление на www.domain.tld, создайте на виртуальной площадке в директории /home/uXXXX/domain.tld/www файл .htaccess (обратите внимание на то, что название файла начинается с точки) следующего содержания:

    RewriteEngine on  RewriteCond %{HTTP_HOST} ^domain.tld  RewriteRule ^(.*)$ http://www.domain.tld/$1 [R=permanent,L]

    где uXXXX — имя вашей виртуальной площадки, domain.tld — имя вашего домена.

  • О создании переадресаций с другими условиями вы можете узнать из документации по web-серверу Apache.

Переадресация с HTTP на HTTPS при использовании IP+SSL

Если к домену подключена услуга Поддержка SSL и вы хотите запретить HTTP, оставив посетителям доступ только по защищенному протоколу HTTPS, добавьте в .htaccess следующее правило:

RewriteEngine On  RewriteCond %{HTTP:PORT} !^443$  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]

Пример: особенность переадресации на синонимах

Предположим, есть домен domain1.tld и синоним domain2.tld. Если запросить в браузере адрес http://domain2.tld/dir/ со знаком слэша в конце, то будет отображена индексная страница из директории dir основного домена, при этом содержимое адресной строки браузера останется без изменений. Но если запросить http://domain2.tld/dir без слэша в конце, то произойдёт переадресация на http://domain1.tld/dir/, и содержимое адресной строки изменится соответствующим образом.

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

Если такое поведение веб-сервера вас не устраивает, добавьте в файл .htaccess следующие строки:

RewriteEngine on  RewriteCond %{REQUEST_FILENAME} -d  RewriteCond %{REQUEST_URI} !^domain2.tld$  RewriteRule ^(.+[^/])$ http://domain2.tld/$1/ [R]

О создании переадресаций с другими условиями вы можете узнать из документации по web-серверу Apache.

Установленные модули Apache

Список стандартных и дополнительных модулей для веб-сервера Apache, которые установлены на хостинговых машинах:

  • mod_env
  • mod_log_config
  • mod_mime
  • mod_include
  • mod_autoindex
  • mod_dir
  • mod_cgi
  • mod_actions
  • mod_alias
  • mod_rewrite
  • mod_access
  • mod_auth
  • mod_expires
  • mod_setenvif
  • mod_php
  • mod_headers

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

masterhost.ru


You May Also Like

About the Author: admind

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

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

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