Компьютеры Windows Интернет

Как создать файл.htaccess — подробная инструкция для новичков. Файл htaccess что это, как сделать, пример Сжатие файлов в htaccess

andew

2015-02-19T11:30:28+00:00

2017-02-16T05:30:00+00:00

12697

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

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

Делается это разрешение при помощи следующего блока кода:

AllowOverride All #Другие директивы...

Здесь в теге указывается физический путь на сервере до корня вашего сайта, и внутри тега указывается директива AllowOverride. Эта директива может быть установлена в None, чтобы сервер не читал файл.htaccess. Если она установлена в All - сервер будет допускать все директивы.htaccess файла. Значение по умолчанию: AllowOverride All.

Теперь пару слов о названии файла.htaccess. Этот файл может называться и по другому, и это тоже устанавливается в глобальном конфиге apache директивой AccessFileName. По умолчанию эта директива установлена в конфиге как AccessFileName .htaccess, и это значение обычно никто не меняет, но вы должны знать, что изменить его на другое возможно.

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

Для чего мы можем использовать.htaccess файл . Вариантов здесь немало, вот самые распространенные из них:
1.Для управления разрешениями на доступы к каталогам сайта (запаролить директорию, запретить доступ к файлам определенного формата, или доступ к сайту в определенный промежуток времени, запретить или открыть доступ с определенных IP адресов, управлять роботами поисковиков)
2.Для перезаписи текущего URL на новый в зависимости от условий ()
3.Для явного указания кодировки сайта.
4.Для разрешения или запрета просмотра файлов сайта
5.Для защиты от хотлинка
6.Для выполнения ридирктов
7.Для задания своих страниц ошибок
8.Для переопределения индексного файла
9…. и многое другое.

Давайте для примера напишем некий обобщенный файл.htaccess .
В него мы соберем наиболее распространенные случаи использования директив и добавим к ним комментарии. И из этого шаблона путем удаления не нужного вы сможете всегда подготовить конкретный.htaccess для ваших задач. Здесь символ # - это символ комментария применяемый в конфигах apache.

# .htaccess начало шаблона # Установка временной зоны SetEnv TZ Europe/Moscow # Установим принудительно кодировку страниц сайта AddDefaultCharset UTF-8 # Зададим index файл который будет # отдаваться если запрошенный не найден DirectoryIndex index.php index.html # Запретим пользователям просматривать файлы директории Options -Indexes # Разрешим следовать за символическими связями в этом каталоге Options +FollowSymLinks # Разрешение доступа только для указанных IP Order Deny,Allow Deny from all Allow from x.x.x.x # Или запрет доступа по IP Order allow,deny deny from x.x.x.x deny from x.x.x.x allow from all # Запретить всем, то только # одну эту строку указать Deny from all # Закрыть доступ к вложенной директории относительно текущего файла # можно так, или положив туда отдельный.htaccess файл Order Deny,Allow Deny from All # Закрыть директорию паролем AuthType Basic AuthName "Enter a password" #путь до файла с паролями и пользователями AuthUserFile /full/path/to/.htpasswd require valid-user # или закрыть вложенную директорию паролем AuthType Basic AuthName "Enter a password" #путь до файла с паролями и пользователями () AuthUserFile /full/path/to/.htpasswd require valid-user # Запрет на доступ для файла.htpasswd # для всех посетителей кроме разрешенных IP Order Deny,Allow Deny from all Allow from x.x.x.x, x.x.x.xx # Блок если нужно отключить обработку PHP # можно и для задать php_value engine off php_value engine off # # Блок изменение настроек PHP # некоторые директивы зависят от версии PHP #php_flag register_globals off #php_value memory_limit 16M #for files uploading - if needed #php_value max_execution_time 500 #php_value max_input_time 500 #php_value upload_max_filesize 30M #php_value post_max_size 30M #php_flag display_errors off #Настройка PHP для загрузки больших файлов до 256M php_value memory_limit 256M php_value upload_max_filesize 256M php_value post_max_size 256M # # Перезапись URL RewriteEngine On # установить корневой URL как / RewriteBase / #Все запросы с HTTP на HTTPS RewriteCond %{HTTPS} =off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} #Только для указанных каталогов все запросы с http на https redirect RewriteCond %{HTTPS} =off RewriteCond %{REQUEST_URI} /(admin|secret)/ RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} # 301 Редирект как принудительная #постановка замыкающего слеша #RewriteCond %{REQUEST_URI} /+[^\.]+$ #RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ # # 301 Редирект c www.site.ru на site.ru # как удаление www RewriteCond %{HTTP_HOST} ^www\.site\.ru RewriteRule ^(.*)$ http://site.ru/$1 # #301 Универсальный редирект с домена www. на без www. RewriteCond %{HTTP_HOST} ^www\.(.*) RewriteRule ^(.*)$ http://%1/$1 #301 Универсальный редирект с домена без www. на www. RewriteCond %{HTTP_HOST} ^(.*)$ RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%1/$1 # 301 Редирект с указанных доменов на основной RewriteCond %{HTTP_HOST} ^www.domen.net$ RewriteCond %{HTTP_HOST} ^domain.net$ RewriteCond %{HTTP_HOST} ^www.domain.net$ RewriteRule ^(.*)$ http://domain.net/$1 # #Редирект с преобразованием GET параметров RewriteCond %{QUERY_STRING} do=page RewriteCond %{QUERY_STRING} id=(\d+) RewriteRule .* /page/%1/? # Внутреннее пере направление на index.php для CMS # Если запрошены не существующие файл или директория # То перенаправлять запрос на index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # # или еще вариант внутреннего пере направления на index.php RewriteCond $1 !^(index\.php|images|robots\.txt|public) RewriteCond %{REQUEST_URI} !\.(cssіjsіjpgіgifіpng)$ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 # или как: RewriteRule ^(.*)$ index.php [L] # #Еще вариант, для тех у кого не WordPress и кто хочет избавиться #от ненужных запросов (боты и т.п.) к темам, к админки и каталогам WordPress вида #где, что не файл и не директория, и не начинается с /wp-, #то делаем внутренний redirect на index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d #если у вас не WordPress добавим это и также блок после этого RewriteCond %{REQUEST_URI} !^/wp- RewriteRule . /index.php [L] #если у вас не WordPress то всем кто ломиться в /wp-... #отдадим 410 Gone status - рекомендация забыть этот URL #RewriteRule "oldproduct" "-" #общий пример RewriteCond %{REQUEST_URI} ^/wp- RewriteRule . - # Зашита от хотлинка RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://site\.ru/ RewriteCond %{HTTP_REFERER} !^https://site\.ru/ RewriteCond %{HTTP_REFERER} !^http://www\.site\.ru/ RewriteCond %{HTTP_REFERER} !^https://www\.site\.ru/ RewriteRule \.(jpeg|png|bmp|gif|jpg|js|css)$ - [F] # # Еще вариант антихотлинка ресурсов (картинок) RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(.+\.)?server\.ru/ RewriteCond %{HTTP_REFERER} !^https://(.+\.)?server\.ru/ RewriteCond %{REQUEST_URI} !null\.gif$ # Перенаправим на картинку заглушку dummy.gif RewriteRule \.(jpg|jpeg|gif|bmp|png)$ http://server.ru/dummy.gif [L] # Еще вариант антихотлинка ресурсов (картинок) RewriteCond %{HTTP_REFERER} !^$ #Замените?mysite\.com/ на адрес вашего блога RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ RewriteCond %{HTTP_REFERER} !^$ #Замените /images/nohotlink.jpg на ваше изображение с запрещением хотлинка RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L] # Еще вариант антихотлинка ресурсов (картинок) RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !google. RewriteCond %{HTTP_REFERER} !yandex. RewriteCond %{HTTP_REFERER} !search?q=cache RewriteCond %{HTTP_REFERER} !msn. RewriteCond %{HTTP_REFERER} !yahoo. RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpe [L] # # Вывод 404 ошибки если выключен mod_rewrite ErrorDocument 404 /index.php # Зададим свои страницы для ошибок ErrorDocument 404 /err_404.html ErrorDocument 403 /err_403.html # # Блок кода редиректа на мобильную версию сайта # Как вариант привожу здесь, больше для примера RewriteEngine on # Проверить строку UserAgent браузера RewriteCond %{HTTP_USER_AGENT} acs RewriteCond %{HTTP_USER_AGENT} alav RewriteCond %{HTTP_USER_AGENT} alca RewriteCond %{HTTP_USER_AGENT} amoi RewriteCond %{HTTP_USER_AGENT} audi RewriteCond %{HTTP_USER_AGENT} aste RewriteCond %{HTTP_USER_AGENT} avan RewriteCond %{HTTP_USER_AGENT} benq RewriteCond %{HTTP_USER_AGENT} bird RewriteCond %{HTTP_USER_AGENT} blac RewriteCond %{HTTP_USER_AGENT} blaz RewriteCond %{HTTP_USER_AGENT} brew RewriteCond %{HTTP_USER_AGENT} cell RewriteCond %{HTTP_USER_AGENT} cldc RewriteCond %{HTTP_USER_AGENT} cmd- RewriteCond %{HTTP_USER_AGENT} dang RewriteCond %{HTTP_USER_AGENT} doco RewriteCond %{HTTP_USER_AGENT} eric RewriteCond %{HTTP_USER_AGENT} hipt RewriteCond %{HTTP_USER_AGENT} inno RewriteCond %{HTTP_USER_AGENT} ipaq RewriteCond %{HTTP_USER_AGENT} java RewriteCond %{HTTP_USER_AGENT} jigs RewriteCond %{HTTP_USER_AGENT} kddi RewriteCond %{HTTP_USER_AGENT} keji RewriteCond %{HTTP_USER_AGENT} leno RewriteCond %{HTTP_USER_AGENT} lg-c RewriteCond %{HTTP_USER_AGENT} lg-d RewriteCond %{HTTP_USER_AGENT} lg-g RewriteCond %{HTTP_USER_AGENT} lge- RewriteCond %{HTTP_USER_AGENT} maui RewriteCond %{HTTP_USER_AGENT} maxo RewriteCond %{HTTP_USER_AGENT} midp RewriteCond %{HTTP_USER_AGENT} mits RewriteCond %{HTTP_USER_AGENT} mmef RewriteCond %{HTTP_USER_AGENT} mobi RewriteCond %{HTTP_USER_AGENT} mot- RewriteCond %{HTTP_USER_AGENT} moto RewriteCond %{HTTP_USER_AGENT} mwbp RewriteCond %{HTTP_USER_AGENT} nec- RewriteCond %{HTTP_USER_AGENT} newt RewriteCond %{HTTP_USER_AGENT} noki RewriteCond %{HTTP_USER_AGENT} opwv RewriteCond %{HTTP_USER_AGENT} palm RewriteCond %{HTTP_USER_AGENT} pana RewriteCond %{HTTP_USER_AGENT} pant RewriteCond %{HTTP_USER_AGENT} pdxg RewriteCond %{HTTP_USER_AGENT} phil RewriteCond %{HTTP_USER_AGENT} play RewriteCond %{HTTP_USER_AGENT} pluc RewriteCond %{HTTP_USER_AGENT} port RewriteCond %{HTTP_USER_AGENT} prox RewriteCond %{HTTP_USER_AGENT} qtek RewriteCond %{HTTP_USER_AGENT} qwap RewriteCond %{HTTP_USER_AGENT} sage RewriteCond %{HTTP_USER_AGENT} sams RewriteCond %{HTTP_USER_AGENT} sany RewriteCond %{HTTP_USER_AGENT} sch- RewriteCond %{HTTP_USER_AGENT} sec- RewriteCond %{HTTP_USER_AGENT} send RewriteCond %{HTTP_USER_AGENT} seri RewriteCond %{HTTP_USER_AGENT} sgh- RewriteCond %{HTTP_USER_AGENT} shar RewriteCond %{HTTP_USER_AGENT} sie- RewriteCond %{HTTP_USER_AGENT} siem RewriteCond %{HTTP_USER_AGENT} smal RewriteCond %{HTTP_USER_AGENT} smar RewriteCond %{HTTP_USER_AGENT} sony RewriteCond %{HTTP_USER_AGENT} sph- RewriteCond %{HTTP_USER_AGENT} symb RewriteCond %{HTTP_USER_AGENT} t-mo RewriteCond %{HTTP_USER_AGENT} teli RewriteCond %{HTTP_USER_AGENT} tim- RewriteCond %{HTTP_USER_AGENT} tosh RewriteCond %{HTTP_USER_AGENT} tsm- RewriteCond %{HTTP_USER_AGENT} upg1 RewriteCond %{HTTP_USER_AGENT} upsi RewriteCond %{HTTP_USER_AGENT} vk-v RewriteCond %{HTTP_USER_AGENT} voda RewriteCond %{HTTP_USER_AGENT} w3cs RewriteCond %{HTTP_USER_AGENT} wap- RewriteCond %{HTTP_USER_AGENT} wapa RewriteCond %{HTTP_USER_AGENT} wapi RewriteCond %{HTTP_USER_AGENT} wapp RewriteCond %{HTTP_USER_AGENT} wapr RewriteCond %{HTTP_USER_AGENT} webc RewriteCond %{HTTP_USER_AGENT} winw RewriteCond %{HTTP_USER_AGENT} winw RewriteCond %{HTTP_USER_AGENT} xda RewriteCond %{HTTP_USER_AGENT} xda- RewriteCond %{HTTP_USER_AGENT} up.browser RewriteCond %{HTTP_USER_AGENT} up.link RewriteCond %{HTTP_USER_AGENT} windows.ce RewriteCond %{HTTP_USER_AGENT} iemobile RewriteCond %{HTTP_USER_AGENT} mini RewriteCond %{HTTP_USER_AGENT} mmp RewriteCond %{HTTP_USER_AGENT} symbian RewriteCond %{HTTP_USER_AGENT} midp RewriteCond %{HTTP_USER_AGENT} wap RewriteCond %{HTTP_USER_AGENT} phone RewriteCond %{HTTP_USER_AGENT} ipad RewriteCond %{HTTP_USER_AGENT} iphone RewriteCond %{HTTP_USER_AGENT} iPad RewriteCond %{HTTP_USER_AGENT} iPhone RewriteCond %{HTTP_USER_AGENT} ipod RewriteCond %{HTTP_USER_AGENT} iPod RewriteCond %{HTTP_USER_AGENT} pocket RewriteCond %{HTTP_USER_AGENT} mobile RewriteCond %{HTTP_USER_AGENT} android RewriteCond %{HTTP_USER_AGENT} Android RewriteCond %{HTTP_USER_AGENT} pda RewriteCond %{HTTP_USER_AGENT} PPC RewriteCond %{HTTP_USER_AGENT} Series60 RewriteCond %{HTTP_USER_AGENT} Opera.Mini RewriteCond %{HTTP_USER_AGENT} Moby RewriteCond %{HTTP_USER_AGENT} Mobi # Проверить служебные заголовки, отсылаемые браузером RewriteCond %{HTTP_ACCEPT} "text/vnd.wap.wml" RewriteCond %{HTTP_ACCEPT} "application/vnd.wap.xhtml+xml" # Проверить исключения RewriteCond %{HTTP_USER_AGENT} !windows.nt RewriteCond %{HTTP_USER_AGENT} !bsd RewriteCond %{HTTP_USER_AGENT} !x11 RewriteCond %{HTTP_USER_AGENT} !unix RewriteCond %{HTTP_USER_AGENT} !macos RewriteCond %{HTTP_USER_AGENT} !macintosh RewriteCond %{HTTP_USER_AGENT} !playstation RewriteCond %{HTTP_USER_AGENT} !google RewriteCond %{HTTP_USER_AGENT} !yandex RewriteCond %{HTTP_USER_AGENT} !bot RewriteCond %{HTTP_USER_AGENT} !libwww RewriteCond %{HTTP_USER_AGENT} !msn RewriteCond %{HTTP_USER_AGENT} !america RewriteCond %{HTTP_USER_AGENT} !avant RewriteCond %{HTTP_USER_AGENT} !download RewriteCond %{HTTP_USER_AGENT} !fdm RewriteCond %{HTTP_USER_AGENT} !maui RewriteCond %{HTTP_USER_AGENT} !webmoney RewriteCond %{HTTP_USER_AGENT} !windows-media-player # При выполнении условий переадресация на мобильную версию сайта RewriteRule ^(.*)$ http://mobile.version.of.site.ru #Универсальный 302 редирект на мобильную версию сайта RewriteEngine on #Универсальный редирект на мобильную версию сайта RewriteCond %{HTTP_HOST} ^(.*)$ RewriteCond %{HTTP_USER_AGENT} (?i:midp|samsung|nokia|j2me|avant|docomo|novarra|palmos|palmsource|opwv|chtml|pda|mmp|blackberry|mib|symbian|wireless|nokia|hand|mobi|phone|cdm|upb|audio|SIE|SEC|samsung|HTC|mot-|mitsu|sagem|sony|alcatel|lg|eric|vx|NEC|philips|mmm|xx|panasonic|sharp|wap|sch|rover|pocket|benq|java|pt|pg|vox|amoi|bird|compal|kg|voda|sany|kdd|dbt|sendo|sgh|gradi|jb|dddi|moto|iphone|android) RewriteRule ^$ http://m.%1 # .htaccess конец шаблона

Расшифрую некоторые флаги из директив:

  • RewriteCond ... - NC значит регистр нечувствительное сравнение выполнять
  • RewriteCond ... - NC см. выше, OR - значит объединять RewriteCond через OR, по умолчанию если ничего не указана то RewriteCond объединяются через AND оператор.
  • RewriteRule ... [L] - L значит закончить (остановить обработку) на этом RewriteRule правиле любые дальнейшие преобразования URL , т.е. последующие RewriteRule не выполнять.
  • RewriteRule ... - L см. выше, R=302 значит выполнить редирект с кодом 302 на преобразованный URL
  • RewriteRule ... - L и R см. выше, QSA - при преобразовании URL выполнять при стыковку заданных частей, а не замену.
  • RewriteRule ... [F] - F, значит отказать в выдачи результата по этому URL кодом 403 Forbidden .
  • RewriteRule . - G|Gone - [G] flag значит отдать код 410 Gone status - рекомендация забыть этот URL

AuthUserFile - задает путь к файлу с паролями для http авторизации пользователя. Путь может быть абсолютный от корня файловой системы Linux сервера или относительный от ServerRoot apache. В Ubuntu ServerRoot "/etc/apache2" по умолчанию. При задании относительного пути от ServerRoot apache начальный слеш в пути не указывается, иначе путь будет восприниматься как абсолютный от корня Linux. Также, если путь содержит недопустимые символы и пробелы его нужно заключать в кавычки, это общее правило.

Order, Deny, Allow

Теперь еще раз, но уже более детально, хотелось бы вернуться к директивам управление доступом: Order , Deny , Allow и более детально описать ее синтаксис и логику.

Директивы Allow , Deny , Order модуля mod_access_compat нежелательны к использованию и считаются устаревшими, хотя и поддерживаются еще в версиях Apache 2.3 и 2.4 . В следующих версиях они будут удалены. Вместо них, начиная с версии Apache 2.3 , этот функционал реализуется директивой Require , которая позволяет более гибко настраивать доступы, чем устаревшие директивы. Детали смотрите в статье , которая подробно описывает директивы Require , Allow , Deny , Order с примерами их использования.

Директива Order синтаксис: Order или

По умолчанию директива Order имеет порядок: Deny,Allow . Обратите внимание, что Deny,Allow пишутся без пробела.

В зависимости от того в каком порядке указаны директивы Deny,Allow или Allow,Deny меняется логика работы.

Если Deny,Allow то запрещается доступ со всех IP кроме указанных, если Allow,Deny разрешается доступ со всех IP кроме оговоренных. Далее идут секции описания для доступа и запрета. Ключевое слово all означает со всех IP.

Например, что бы запретить (блокировать) доступ с IP x.x.x.x и x.x.x.xx и разрешить доступ всем остальным необходимо добавить в.htaccess следующий код:

# Разрешить ВСЕМ кроме указанных IP
Order Allow,Deny
Allow from all
Deny from x.x.x.x x.x.x.xx

Обратите внимание что IP записаны через пробел. Можно также указать IP как IP/маска.

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

# Запретить ВСЕМ кроме указанных IP
Order Deny,Allow
Deny from all
Allow from x.x.x.x x.x.x.xx

Запрет или разрешение можно указывать и на отдельный файл или группы файлов. Например, что бы запретить доступ всех кроме IP x.x.x.x к файлу passwd.html, который расположен в текущей директории.

# Запретить файл passwd.html ВСЕМ кроме указанных IP

Order Deny,Allow
Deny from all
Allow from x.x.x.x

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

#Запретить файлы *.key ВСЕМ кроме указанных IP

Order Deny,Allow
Deny from all
Allow from x.x.x.x

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

Htaccess - это файл который относится к настройке сервера Apache. В нём можно задать разные настройки для более удобной настройки ошибок и прочих вещей для сайта. Обычно, файл.htaccess лежит в корневом каталоге и действует на весь сайт, на все подкаталоги, если же только в другом каталоге не лежит свой.htacces, то тогда он будет действовать на свой каталог и на свои подкаталоги, если же конечно последние не содержат своего.htaccess файла.

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

Поддерживает ли ваш хостер.htaccess?

Это наверное самый сложный вопрос, на который сразу не ответишь! Иногда хостеры поддерживают.htaccess, только вот своим пользователям запрещают пользоваться этим сервисом. Если же вы на фтп заметили что там присутствует файл.htaccess, тогда не спешите его заменять, и лучше обратитесь в support (службу поддержки). По обычаю, если на сервере установлен Unix или Linux, то сервер поддерживает.htaccess. Я знаю три сайта которые поддерживают.htaccess, это:

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

Очень просто. Заходим в Блокнот (Notepad), пишем текст который будет ниже и потом нажмем на "Сохранить Как" ("Save As)", выбираем тип файла "Все Файлы" *.* ("All Files" *.*) и в поле "Имя файла" пишем.htaccess . Если же вы не можете сделать это, то не огорчайтесь и сохраните его просто как.htaccess.txt файл, а когда закачаете на фтп, используя свой ФТП клиент, измените имя на.htaccess .

ВНИМАНИЕ: Перед использованием.htaccess, я вас предупреждаю: даже если используя.htaccess на вашем сервере чрезвычайно нежелательно, т.к. могут возникнуть некоторые проблемы (если что-то неверно, то он просто не будет работать), Вы должны настороженно относиться к Microsoft FrontPage Extensions. Microsoft FrontPage Extensions использует.htaccess, так что не советую вам изменять полностью его (файл.htaccess) или добавлять самому информацию и заменять свой.htaccess на.htaccess сервера. Если уж вас очень приспичило, то посоветую вам сначала скопировать файл.htaccess с сервера и уж потом его там изменять, а то кто знает что вы там сделаете с вашими "кривыми" ручками:-).

Обычные страницы ошибок

В первую очередь, я поведаю вам о том, что можно изменить страницу ошибок. Т.е. те страницы, которые выдаются при ошибке (например 404 Файл не найден) можно настроить под дизайн. Я думаю у каждого веб-дизайнера в глазах загорелась мысль, о том что можно под свой дизайн, на своём фоне с присутствием вашего меню и лого, написать 404 большими красными буквами, чтобы каждый увидел это. Ну вот и приступим. Система такова: ErrorDocument номер ошибки /file.html Допустим мы хотим изменить 404-ую ошибку, тогда пишем следующее: ErrorDocument 404 /notfound.html где notfound.html - файл, который лежит в корневом каталоге и изменен нами! Если же файлы с ошибками лежат в папке /errorpages то пишем в файле.htaccess ErrorDocument 404 /errorpages/404.html.

Вот список самых частых ошибок:

401 - Authorization Required
400 - Bad request
403 - Forbidden
500 - Internal Server Error
404 - Wrong page или File Not Found

Создаем файлы со всеми этими ошибками, и пишем это в файл.htaccess.

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

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

Для чего нужен файл.htaccess

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

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

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

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

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

Ограниченный доступ

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

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

Order deny,allow Deny from all Allow from *.*.*.*

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

Для адресов, относящихся к одной подсети, нужно указать вместо последней звездочки диапазон 0/*.
Например:

Allow from *.*.*.0/11

Если вы не знаете свой ip-адрес, воспользуйтесь одним из множества сервисов в интернете, например: https://2ip.ru/

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

Запрет доступа конкретным адресам

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

Order allow,deny Allow from all Deny from *.*.*.*

Тут, в отличие от прошлого примера, сначала дается доступ, а уже после — запрещается. Строка Allow from all дает доступ всем посетителям сайта. Третья строка блокирует доступ к сайту для выбранного ip. Как и в прошлый раз, добавляйте новые ip c новой строки. Обратитесь в техническую поддержку своего провайдера, чтобы узнать ip-адрес, с которого ведутся запросы к вашей площадке.

Установка пароля для доступа к папке.

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

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

AuthName «your_text» AuthType Basic Require valid-user AuthUserFile «полный_путь_к _файлу_.htpasswd»

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

Строка Require valid-user открывает доступ для любых имен пользователей. Указать свой список имен вы можете, перечисляя их через запятую вместо valid-user.

Логин и пароль для доступа к папке должны быть зашифрованы и содержаться в файле.htpasswd из этой же директории. В четвертой строке нужно указать путь к этому файлу. Для его создания также можно использовать файловый менеджер.

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

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

Содержание:
  • § 1. Файл.htaccess
  • 1.1. Как создать файл.htaccess
  • 1.2. Настройка.htaccess.
  • § 2.
  • 2.2. Перенаправление старых ссылок на новые страницы с помощью редиректа 301
  • § 3. Ограничение доступа
  • 3.2. Защита поролем

§ 1. Файл.htaccess

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

Особенности использования htaccess:

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

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

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

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

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

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


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

Порядок действий для создания.htaccess :

1. Открыть текстовый редактор (Notepad++ или даже обычный Блокнот ).

2. В меню "Файл " выбрать "Сохранить как ".

3. В выпадающем списке "Тип файла " выбрать "Все файлы ".

4. Ввести в качестве имени ".htaccess " (без кавычек).

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

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

2.1. Ошибка 404 или как удержать посетителя

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


Ошибка 404 возникает в браузере пользователя, когда он набирает ошибочный или вовсе несуществующий адрес либо переходит на сайт по "битой" ссылке. Вот тогда и происходит автоматический переход пользователя на cерверную страницу ошибки.

Можно сделать свою страницу с сообщением об ошибке 404. К примеру:

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

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

Создаем собственной страницы ошибок

1 . Открываем Блокнот (текстовый редактор).

2. Вставляем туда следующий код:

ErrorDocument 404 http://ваш_сайт/myerror.html

где ваш_сайт - доменное имя вашего сайта, а myerror - название страницы 404 ошибки.

3. Сохраняем этот файл с именем.htaccess. Файл.htaccess управляет страницей 404.

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

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

6. Наберите в браузере строку http://ваш_сайт/ /abracadabra.html и увидите результат проделанной работы.

Наличие собственной страницы ошибки 404 не является решением всех проблем.

Удерживая с помощью собственной страницы ошибки 404 своих потенциальных клиентов, Вы увеличиваете вероятность того, что они купят именно у Вас, а не у Вашего конкурента!

1. Удостоверьтесь, что Вы правильно написали и не забыли точку в начале имени файла: .htaccess.

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

3. Собственная страница ошибки 404 не даст испортить репутацию как Вам, так и Вашему ресурсу!

2.2. Перенаправление старых ссылок на новые страницы с помощью редиректа 301

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

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

Redirect 301 http://domen.ru/old-page/ http://domen.ru/archive/new-page/

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

2.3. Склейка зеркал при помощи 301 редиректа

Редирект 301 так же используют для переадресации страниц с префиксом www на страницы без www или наоборот. Для поисковых систем сайт ваш_сайт.ru - это два сайта с одинаковым содержанием, имеющие адреса: http://www.ваш_сайт.ru/ и http://ваш_сайт.ru. Такие сайты называются зеркалами.Таким образом, часть тиц и pr уходят с одного сайта на другой. Чтобы этого не происходило, и поисковые машины считали два этих сайта одним, произвести "склейку зеркал", то есть перенаправить пользователей и поисковых роботов с сайта с префиксом www на сайт без www или наоборот. Для этого в файле.htacces надо написать:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.ваш_сайт.ru
RewriteRule (.*) http://ваш_сайт.ru/$1

мы настроили переадресацию со всех страниц сайта с префиксом www

§ 3. Ограничение доступа

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

Чтобы запретить доступ ко всему сайту, необходимо в файле.htacces написать следующее:

deny from all

Запретить доступ только с конкретного ip-адреса:

deny from all
order allow deny
deny from all
deny from ip_адрес_пользователя

"ip_адрес_пользователя" необходимо заменить на конкретный ip-адрес.

Чтобы разрешить доступ только с конкретного ip-адреса, можно написать:

order allow deny
deny from all
allow from ip_адрес_пользователя

3.1. Защита файла от хотлинка

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

Защитить файлы от хотлинка при помощи файла.htaccess можно добавив в него две строчки:

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?ваш_сайт.ru.*$
RewriteRule \.(jpe?g|bmp|gif|png|css|zip|pdf|txt|doc)$ -

В скобочках через символ "|" указаны расширения файлов, доступ к которым будет запрещен всем, за исключением сервера и пользователей сайта ваш_сайт.ru

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

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?ваш_сайт.ru
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yandex.ru
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yahoo.
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?google.
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?bing.
RewriteRule \.(jpe?g|bmp|gif|png|css|zip|pdf|txt|doc)$ -

3.2. Защита поролем

При помощи файла дополнительной конфигурации.htacces возможно установить пароль на директорию сайта, конкретный файл или группу файлов с одинаковым расширением.

Чтобы установить пароль на директорию, в.htaccess необходимо написать :

AuthName "What do you want?"
AuthType Basic

require valid-user

Файл.htaccess, содержащий эти строки необходимо поместить в директорию, доступ к которой мы хотим закрыть. При попытке пользователя зайти на соответствующий раздел сайта сервер отдаст код статуса 401 (требуется авторизация) и выведет окно с полями для ввода имени пользователя и пароля и сообщением "What do you want?", указанным в директиве "AuthName" (допускаются только латинские символы и цифры).

Имена пользователей и пароли хранятся в файле.htpasswd. Путь к этому файлу задается в директиве "AuthUserFile".

Важно: путь к файлу.htpasswd указывается абсолютный, от корневого каталога сервера .

Чтобы узнать путь к.htpasswd, который необходимо указать в.htaccess, можно создать файл php, содержащий:

< ?php echo $_SERVER["DOCUMENT_ROOT"]; ? >

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

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

< Files file.txt >
AuthName "It"s not for all"
AuthType Basic
AuthUserFile /home/сервер/ваш_сайт.ru/pass/.htpasswd

Пароль на группу файлов:

< Files "\.(sql)$" >
AuthName " It"s not for all "
AuthType Basic
AuthUserFile /home/сервер/ваш_сайт.ru/pass/.htpasswd

В данном случае все файлы, имеющие расширение.sql будут доступны только по паролю.

Не забывайте написать ваш комментарий, понравилась ли статья. От вас пару слов, а мне - признание поисковых систем, что пишу нормальные человеческий статьи. Заранее спасибо вам!