Файл htaccess

Что такое .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

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

Данный конфиг позволяет решить следующие задачи:

  • Вставить код в начале .htaccess
  • При вставке требуется указать правильное зеркало сайта, раскоментировав нужное, по умолчанию удаляет WWW, и включает HTTPS
  • Удалить старый redirect перенаправление на основное зеркало. 
  • Если основное зеркало сайт HTTPS, то внесите протокол в robots.txt Host: https://site.ru, для http зеркал протокол уточнять не требуется.
  • При установке HTTPS основным зеркалом,  перейти на свой сайт и убедиться в отсутствие  blocked:mixed
  • Проверить работу redirect
    Сервис по генерации списка redirect

    Код конфигурационного файла каталога .htaccess.

    ############################################################################  #### Стандартный .htaccess для проектов студии Клондайк, версия 4.6 ####  ############################################################################  RewriteEngine On   # Директива включает редиректы.  RewriteBase /    # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1 с директивой = /$1  Options +FollowSymLinks   # Разрешает переход по символическим ссылкам.  php_flag display_errors off   # запретить отображение ошибок (требование монитора качества)  php_flag allow_url_fopen off   # запретить использовать удаленные файлы (требование проактивной защиты)    ############################################################################  #### Выбор основного зеркала (с www или без www) ####  ############################################################################   # 1. Удалить www  RewriteCond %{ENV:HTTPS} on   #Если включен https  RewriteRule .* - [E=SSL:s]   #То создаем переменную ssl с текстом s  RewriteCond %{HTTP_HOST} ^www.(.*) [NC]   # Проверяем, содержит ли домен www в начале URL.  RewriteRule ^(.*)$ http%{ENV:SSL}://%1/$1 [R=301,L]   # Перенаправляем удаляем www     # 2. Добавить www  #RewriteCond %{ENV:HTTPS} on   #Если включен https  #RewriteRule .* - [E=SSL:s]   #То создаем переменную ssl с текстом s  #RewriteCond %{HTTP_HOST} !^www.(.*) [NC]   # Если нет www в начале домена  #RewriteRule ^(.*)$ http%{ENV:SSL}://www.%{HTTP_HOST}/$1 [R=301,L]   #Подставляем www и https если он включен.    ############################################################################  #### Перенаправляем протокол https на http ####  ############################################################################  #RewriteCond %{HTTPS} on   # Проверяем наличие https в URL.  #RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]   # Перенаправляем протокол на http.    ############################################################################  #### Перенаправляем протокол http на https ####  ############################################################################  RewriteCond %{HTTPS} off   # Проверяем наличие https в URL.  RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange.php$ [NC]    # Исключим обмен с 1С, ему требуется только 200   RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]   # Перенаправляем протокол на http.    ############################################################################  #### Убираем index.php, если он есть в конце URL ####  ############################################################################  RewriteCond %{REQUEST_URI} ^(.*)/index.php$   # URL cодержит index.php в конце.  RewriteCond %{REQUEST_METHOD} =GET   # Выявляем GET запрос в URL (не POST).  RewriteRule ^(.*)$ %1/ [R=301,L]   # Удалить index.php из URL.    ############################################################################  #### Убираем повторяющиеся слеши (/) в URL ####  ############################################################################  RewriteCond %{THE_REQUEST} //   # Проверяем, повторяется ли слеш (//) более двух раз.  RewriteCond %{QUERY_STRING} !http(s|)://   # Убедимся что это не урл в GET  RewriteRule .* /$0 [R=301,L]   # Исключаем все лишние слеши.    ############################################################################  #### Убираем слеши в конце URL для статических файлов (содержит точку) ####  ############################################################################  RewriteCond %{REQUEST_URI} ..+$   # Если файл содержит точку.  RewriteCond %{REQUEST_FILENAME} !-d   # И это не директория.  RewriteCond %{REQUEST_FILENAME} -f   # Является файлом.  RewriteCond %{REQUEST_URI} ^(.+)/$   # И в конце URL есть слеш.  RewriteRule ^(.+)/$ /$1 [R=301,L]   # Исключить слеш.    ############################################################################  #### Добавляем слеш(/), если его нет, и это не файл. ####  ############################################################################  RewriteCond %{REQUEST_URI} !(.*)/$   # Если слеша в конце нет.  RewriteCond %{REQUEST_FILENAME} !-f   # Не является файлом.  RewriteCond %{REQUEST_URI} !..+$   # В URL нет точки (файл).  RewriteCond %{REQUEST_URI} ^(.+)$   # В URL есть хоть один символы  RewriteRule ^(.*)$ $1/ [L,R=301]   # Добавляем слеш в конце.      ############################################################################  #### Компрессия статического контента для гугл спид тест ####  ############################################################################  <IfModule mod_deflate.c>   AddType image/svg+xml .svg   AddOutputFilterByType DEFLATE image/svg+xml    AddOutputFilterByType DEFLATE application/rss+xml   AddOutputFilterByType DEFLATE application/vnd.ms-fontobject   AddOutputFilterByType DEFLATE application/x-font   AddOutputFilterByType DEFLATE application/x-font-opentype   AddOutputFilterByType DEFLATE application/x-font-otf   AddOutputFilterByType DEFLATE application/x-font-truetype   AddOutputFilterByType DEFLATE application/x-font-ttf   AddOutputFilterByType DEFLATE application/x-javascript   AddOutputFilterByType DEFLATE application/xhtml+xml   AddOutputFilterByType DEFLATE application/xml   AddOutputFilterByType DEFLATE font/opentype   AddOutputFilterByType DEFLATE font/otf   AddOutputFilterByType DEFLATE font/ttf   AddOutputFilterByType DEFLATE image/svg+xml   AddOutputFilterByType DEFLATE image/x-icon   AddOutputFilterByType DEFLATE text/css   AddOutputFilterByType DEFLATE text/html   AddOutputFilterByType DEFLATE text/javascript   AddOutputFilterByType DEFLATE text/plain   AddOutputFilterByType DEFLATE text/xml   AddOutputFilterByType DEFLATE image/svg+xml  </IfModule>  <IfModule mod_expires.c>   ExpiresActive on   ExpiresByType image/jpeg "access plus 1 year"   ExpiresByType image/svg "access plus 1 year"   ExpiresByType image/gif "access plus 1 year"   ExpiresByType image/png "access plus 1 year"   ExpiresByType text/javascript "access plus 1 year"   ExpiresByType text/css "access plus 1 year"   ExpiresByType application/javascript "access plus 1 year"   ExpiresByType application/vnd.ms-fontobject "access plus 1 year"   ExpiresByType application/x-font-ttf "access plus 1 year"   ExpiresByType application/x-font-opentype "access plus 1 year"   ExpiresByType application/x-font-woff "access plus 1 year"   ExpiresByType image/svg+xml "access plus 1 year"  </IfModule>   <IfModule mod_headers.c>   <filesmatch ".(ico|flv|jpg|jpeg|webp|png|gif|css|swf)$">   	Header set Cache-Control "max-age=31536000, public"   </filesmatch>   <filesmatch ".(html|htm)$">   	Header set Cache-Control "max-age=7200, private, must-revalidate"   </filesmatch>   <filesmatch ".(pdf)$">   	Header set Cache-Control "max-age=86400, public"   </filesmatch>   <filesmatch ".(js|otf|ttf|woff|woff2)$">   	Header set Cache-Control "max-age=31536000, private"   </filesmatch>   </IfModule>  ############################################################################  #### Конец общей части, далее следует собственные директивы .htaccess ####  ############################################################################      

    klondike-studio.ru

    • Несколько слов о веб-сервере Apache
    • Индексный файл
    • Назначение и использование файла .htaccess
    • Web Application Firewall
    • Переопределение кодировки
    • Как закрыть директорию паролем
    • Переопределение индексного файла
    • Запрет и разрешение выдачи листинга
    • Собственные страницы ошибок
    • Запрет доступа с некоторых IP-адресов
    • Запрет доступа к некоторым файлам
    • Заголовок last-modified
    • Управление кэшированием
    • Как создать переадресацию
    • Переадресация с HTTP на HTTPS
    • Особенность переадресации на синонимах
    • Установленные модули 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, скорее всего, использование команды запрещено в условиях виртуального хостинга. Напишите в техническую поддержку, мы постараемся вам помочь. Просьба подробно описать проблему и указать цели, которых хотите достичь использованием данной директивы.

    Web Application Firewall

    Web Application Firewall (ModSecurity) необходим для обнаружения и предотвращения атак на веб-сайты. Проверка осуществляется определенным набором правил и, если она не пройдена, запрос к сайту отклоняется с ошибкой (403 forbidden).

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

    • SecRuleRemoveById — удалить правило по id [id:»»]
    • SecRuleRemoveByTag — удалить правило по тегу. [tag: «»]

    Определить, какое именно правило необходимо отключить, можно в журнале ошибок error.log

    Пример отключения по ID:

    <IfModule security2_module>      SecRuleRemoveById 933100 933150  </IfModule>

    Примеры отключения по Tag:

    <IfModule security2_module>      SecRuleRemoveByTag "attack-injection-php"      SecRuleRemoveByTag "CWAF"  </IfModule>

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

    По умолчанию веб-сервер «отдает» все 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 при использовании SSL

    Если необходимо запретить HTTP, оставив посетителям доступ только по защищенному протоколу HTTPS, то сделать это возможно в Личном кабинете

    • Древо услуг — Домен — Переадресация — Добавить
    • В открывшемся окне выбираем «Протокол http-> https» и нажимаем «Добавить услугу»

    img

    Либо добавьте в файле .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
    • mod_security

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

    masterhost.ru

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

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


    4. Дополнительная документация и примеры

    С подробной документацией вы можете ознакомиться на сайте разработчика веб-сервера Apache: http://httpd.apache.org/docs/2.4/rewrite/

    www.nic.ru

    Что собой представляет файл htaccess и для чего используется

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

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

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

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

    Некоторые особенности использования htaccess:

    1. В нем можно переопределить большое количество директив, прописанных в главном файле httpd.confg

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

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

    4. Htaccess не доступен пользователю для просмотра из браузера, так как относится к категории «системные».

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

    • Директивы простого перенаправления (редирект);
    • Директивы сложного перенаправления (mod_rewrite);
    • Индексные страницы;
    • Обработка ошибок;
    • Определение кодировки;
    • Управление доступом к директориям и файлам;
    • Паролирование директорий;
    • Опции PHP.

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

    Сейчас мы рассмотрим самые распрострнные рабочие варианты использования htaccess для настройки сайта.

    Прежде чем мы приступим обратите внимание на следующие моменты:

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

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

    3. Синтаксис .htaccess

    — Пути к файлам (директориям) указываются от корня сервера.

    Пример:

    — В случае настройки файла htaccess лежащего в корневой папке сайта, пути указываются от корня этой папки.

    Пример:

    — Домены записываются с указанием протокола http:// или https://

    Пример:

    — Файл имеет название именно «точка» htaccess.

    — Для создания закомментированной строчки используйте знак #.

    — Редактировать файл удобнее всего при помощи редактора AkelPad, входящего в состав Total Commander, достаточно его выделить и нажать F4.

    Простое перенаправление — директива Redirect

    1. Осуществление перенаправления на новые страницы сайта

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

    2. Приведение фидов к общему формату

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

    Сложное перенаправление — директива RewriteRule

    1. Перенаправление домена с www на без www.

    Очень часто приходится использовать 301 редирект в htaccess для склеивания доменов с www и без www. Раньше поисковые системы считали такие адреса совершенно различными и смотрели на них как на разные сайты. Сегодня задача по склейке возлагается на поискового робота, но никогда не лишним будет указать корректное зеркало. К тому же, у самих не будет никакой путаницы.

    2. Перенаправление посетителей на разные старницы в зависимости от IP-адреса посетителя.

    В htaccess имеется возможность указать на какую страницу, будет перенаправлен пользователь с конкретным IP-адресом. Например, перенаправление посетителей с ip адресом 183.11.101.1 на страницу kontakt.html

    3. Перенаправление в случае обновления веб-ресурса

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

    Где 14.124.354.80 — заменить на свой IP адресс.

    4. Защита от хотлинков

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

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

    5. Перенаправление на безопасное https-соединение

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

    6. Автоматическая подстановка слеша в конце адреса.

    Очень распространены ситуации, когда URL-адрес, заканчивается именем каталога: http://vash-sait.ru/images/raznoe 

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

    7. Блокировка пользователей пришедших с определенного сайта

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

    Индексные страницы — директива DirectoryIndex

    1. Изменение индексной старницы загружаемой по умолчанию

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

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

    Обработка ошибок — директива ErrorDocument

    1. Пользовательская страница ошибок

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

    2. Создание своих страниц с описанием ошибок

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

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

    • 401 — Требуется авторизация (Authorization Required)
    • 403 — пользователь не прошел аутентификацию, запрет на доступ (Forbided)
    • 404 — запрашиваемый документ (файл, директория) не найден (Not Found)
    • 500 — внутренняя ошибка сервера — ошибка скрипта или ошибка в синтаксисе файла .htaccess — (Internal Server Error)

    Определение кодировки

    1. Определение кодировки, в которой сервер «отдает» файлы

    Чтобы у пользователя на дисплее монитора не выводились непонятные для него символы, из которых не представляется возможности прочесть слова, необходимо указать корректную кодировку. Даже при отсутствии тега < Мета http-equiv = «Content-Type»> текст на странице будет всегда корректным и поможет в этом снова htaccess-файл.

    2. Определение кодировки на загружаемые файлы

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

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

    1. Запретить доступ ко всем файлам

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

    2. Разрешить доступ с определенного IP

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

    Для этого используются директивы order (далее указывается порядок выполнения директив), deny (директива, с помощью которой запрещается всем и ко всему), allow (директива, за которой следует IP-адрес, попадающий в список исключений и открывающий ему доступ к директивам и файлам). Стоит также отметить, что директивы deny и allow должны следовать именно в этом порядке, иначе действие директивы allow будет перекрыта директивой deny и не даст ожидаемого результата.

    3. Запретить доступ с определенного IP

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

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

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

    5. Ограничить доступ к определенному типу файлов

    6. Запретить просмотр директории без индексных файлов

    Если в htaccess добавить сточку Options –Indexes, будет ограничена возможность просматривать каталоги, в которых нет индексных файлов.

    7. Разрешить просматривать директорию

    Также можно разрешить просматривать определенные директории.

    Опции PHP

    1. Заставить работать PHP скрипты в HTML файлах

    2. Заставить выполнять PHP в файлах JavaScript

    3. Ограничение размера загружаемого файла для PHP

    20M  — это ращмер файла в мегабайтах 

    4.  Изменить максимальный размер запроса для загрузки в PHP

    5. Изменить время исполнения скрипта

    30 — время исполнения скрипта в секундах.

    6. Изменение времени на разбор введенных данных

    webmastermix.ru


You May Also Like

About the Author: admind

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

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

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

Adblock
detector