назад к разделу "общие вопросы сайтостроения"

настройка файла .htaccess

раздел: общие вопросы сайтостроения
последнее изменение: 2015-11-15
автор: Юрий Матвеев
директивы htaccess,настройка файла htaccess,переадресация

Ключевую роль в процессе разработки сайта играет файл .htaccess. В большинстве случаев он заменяет нам файл php.ini, т.к. последний находится на стороне хостинга и в большинстве случаев разработчику сайта недоступен. Некоторые web задачи совсем не могут быть решены иначе, чем через настройку .htaccess. Директивы этого файла лично для меня очень мудрёные, поэтому в большинстве случаев я ограничиваюсь простым copy past. Ниже для себя и Вас публикую мою записную книжку часто употребимых директив .htaccess:


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

AddDefaultCharset utf-8
AddCharset utf-8 *

CharsetSourceEnc utf-8
CharsetDefault utf-8


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

# перенаправление на главную
ErrorDocument 404 http://my_site/
# - этим знаком мы можем закомментировать любую строку

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

	RewriteRule (.*) http://my_site/$1 [R=301,L]
	

Некотрые другие задачи переадресации: - для сайтов с установленными ssl-сертификатами также необходимо сделать перенаправление, и даже если посетитель неправильно набъёт название протокола http, его всё равно необходимо заботливо перенаправить на https. Делается это следующим образом:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

- как известно url строка начинается с аббревиатуры www (означает World Wide Web). На первоначальном этапе развития интернета было круто видеть её в своей адресной строке. Но на сегодняшний момент www - это анахронизм. Более того, он создаёт определённую проблему:
- поисковики воспринимают Ваш сайт как два разных сайта: один с www, а второй - без.
Поэтому логично бы было при использовать форму записи url без www (поскольку она короче), а при попытке захода с www. просто вырезать её из адресной строки.
С этой задачей легко справится следующая директива:

# delete www.
RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^www.(.*) [NC]
RewriteRule ^(.*)$ http://%1 [R=301,QSA]

Если мы не хотим видеть на нашем сайте посетителей с определенными ip адресами, то самый простой способ это сделать:

Order Allow,Deny
allow from all
deny from 46.172.2.12
deny from 95.78.28.27

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


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

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.html [L,QSA]
# delete www. (universal)
RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^www.(.*) [NC]
RewriteRule ^(.*)$ http://%1 [R=301,QSA]
# delete index.html
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://%{HTTP_HOST}/$1 [R=301,L]
#
AddDefaultCharset utf-8
AddCharset utf-8 *

CharsetSourceEnc utf-8
CharsetDefault utf-8


Order Allow,Deny
allow from all
#deny from 95.78.28.27

######
#перенаправление
#RewriteRule (.*) http://quickly-worthy.com/$1 [R=301,L]

#ошибка
#ErrorDocument 404 http://quickly-worthy.net/index.html
#ErrorDocument 404 http://test-or-net/

#ssl
#RewriteEngine On
#RewriteCond %{HTTPS} off
#RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Вы можете оставить комментарий или отзыв об этой статье
  • X
    36
    Ваше имя:
    Комментарий:
    loader