Как правильно настроить .htaccess?
Для чего нужен .htaccess
Когда вы размещаете сайт на хостинге, важно сразу учесть различные параметры доступа. Доступ к сайту предполагает, что необходимо открыть некоторые страницы и закрыть другие, не допустить доступа к отдельным папкам, настроить переадресацию с несуществующих или переименованных страниц и т.д. Служебные сведения для регулировки доступа хранятся в файле .htaccess, который хранится в корневой папке вашего сайта.
ВАЖНО:
Имя файла должно начинаться с точки. Если вы создаёте файл с нуля, позаботьтесь вписать её в название.
Файл должен иметь отсутствующее (пустое) расширение. В проводнике Windows, где расширения скрываются, это не всегда видно. Откройте свойства файла или активируйте показ расширения в проводнике.
Прежде чем редактировать ваш .htacess, сохраните его копию в надёжном месте.
Переадресация
Бывает нужно переадресовать посетителя с вашего сайта или его конкретных страниц на сторонний ресурс. Для этого в .htaccess вписывается следующая строка:
Redirect / http://www.othersite.com
Вместо othersite.com впишите адрес, на который нужно перенаправить посетителя.
Чтобы переадресовывать с конкретных страниц, выражение должно выглядеть так:
Redirect 301 /theoldpage.html http://thenewsite.ru/thenewpage.html
или
Redirect permanent /theoldpage.html http://thenewsite.ru/thenewpage.html
Вместо theoldpage, thenewsite.ru и thenewpage надо подставить конкретные адреса.
Настройка доступа к сайту и файлам
Некоторые файлы или папки необходимо убрать из общего доступа или разрешить доступ только для администратора. Для этой настройки пользуйтесь тегами allow и deny. Если вы владеете английским, то поймёте логику без труда. Блок должен начинаться со вступления Order allow,deny.
Так, строки
Order allow,deny
allow from all
deny from 19*.16*.1*.1*
означают, что всем адресам, кроме данного конкретного, доступ к сайту разрешён. Список забаненных адресов вы прописываете самостоятельно, указываете их через пробел.
Можно регулировать доступ к конкретным файлам
<Files noindex.php>
deny from all
</Files>
В строку Files, кроме условного noindex.php, вы можете вписать любые другие файлы, доступ к которым надо закрыть (к примеру, config.php). Вместо имени файла можно подставлять маски (как в поиске Проводника) – например, *.conf.
Запрет показа ваших файлов с других сайтов
Если вы хотите, чтобы ваш контент читали только с вашего сайта, то можете запретить его загрузку со сторонних страниц. Для этого нужно использовать следующий фрагмент:
Options +FollowSymlinks
#Запрет показа файлов со сторонних сайтов
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?mysite.ru/ [nc]
RewriteRule .*.(gif|jpg|png)$ http://mysite.ru/img/picture.gif[nc]
Разумеется, вместо mysite и адреса файла надо подставить ваш адрес и название файла, который будет показываться вместо ваших картинок. Это может быть текстовое предупреждение или нечто более оригинальное (иногда вместо картинок со своего сайта вебмастера предлагают показать знаменитое фото Ленина с кукишем или Эйнштейна с языком).
Задать страницы ошибок
Чтобы пользователь мог при сбое сервера или ошибочном запросе понять, в чём проблема и почему не грузится нужная страница, стоит создать коды ErrorDocument для загрузки «аварийных» страниц.
ErrorDocument 400 /no/badreq.html
ErrorDocument 401 /no/authreqstd.html
ErrorDocument 403 /no/forbidd.html
ErrorDocument 404 /no/404.html
ErrorDocument 500 /no/serv.html
Вместо /no/*.html пропишите адреса ваших страниц, соответствующих той или иной ошибке.
Независимость от «www»
Многие пользователи по привычке набирают www перед адресом страницы. Это сейчас необязательно, а с точки зрения поисковиков и вовсе вредно (два сайта вместо одного). Приравнять их можно, внеся в файл следующие строки:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.thenewsite.ru/$ [NC]
RewriteRule ^(.*)$ http://thenewsite.ru/$1 [R=301,L]
Переписывая адреса страниц «на лету», система приравнивает адреса, набранные с WWW, к адресам без такового префикса.
Специфика движка
Если вы используете сайты на типовом движке (WordPress, Joomla и т.д.), почитайте документацию по специфической настройке .htaccess для вашего движка. Как правило, мануалы по конкретным CMS подробно разъясняют, как надо настраивать этот файл под нужды этой CMS.
Эти рекомендации будут отличаться для разных систем управления контентом, в соответствии с их спецификой.