Настройка .htaccess.

Майор

Администратор
Команда форума
Регистрация
04.09.14
Сообщения
2.834
Реакции
1.939
Баллы
113
В этой теме речь пойдет о htaccess, файле, который дает возможность настраивать веб-сервер Apache. Директивы, которые прописываются в этом файле, напрямую влияют на выдачу, которую формирует веб-сервер. Этот инструмент достаточно сильный, использовать его нужно с умом. Статья эта написана еще в конце 2013 года, поэтому делайте скидки на обновления Апача.

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

Для начала — пару слов, что такое htaccess? Процитирую официальный сайт веб-сервера Apache:
.htaccess файлы (или «распределенные конфигурационные файлы») позволяют задавать большое количество дополнительных параметров и разрешений для работы веб-сервера в отдельных каталогах (папках), таких как управляемый доступ к каталогам, переназначение типов файлов и т. д, без изменения главного конфигурационного файла.
То есть, мы можем управлять поведением сервера в каждой, отдельно взятой папке, что очень удобно.
Содержание:
  1. Подробное руководство по .htaccess файлам
  2. Блокируем хотлинки с других сайтов
  3. Перенаправим RSS фиды WordPress на Feedburner
  4. Изменим страницы ошибок
  5. 301 и 302 редирект (перенаправление)
  6. Склеиваем сайты с www и без него
  7. Показ страниц в зависимости от IP
  8. Перенаправляем на главную
  9. Запрет доступа к сайту
  10. Запрещаем просмотр нежелательным User-Agent
  11. Запрещаем доступ к определенному файлу
  12. Скачивание определенных типов файлов
  13. Ограничение на доступ к админке WordPress
  14. Запрещаем автоматическое индексирование файлов
  15. Включаем gzip сжатие
  16. Сжатие с применением mod_deflate
  17. Включаем кэширование браузера клиента
  18. Указываем кодировку по умолчанию
  19. Ограничиваем число подключений к сайту
  20. Разрешаем выполнение php внутри JavaScript
  21. Свои страницы ошибок
 

Майор

Администратор
Команда форума
Регистрация
04.09.14
Сообщения
2.834
Реакции
1.939
Баллы
113
Блокируем хотлинки с других сайтов
Есть нехорошие товарищи, которые могут использовать картинки с вашего ресурса для использования в своих проектах. Они используют ваши изображения на своих сайтах, другими словами, используют вашу пропускную способность в своих целях, по аналогии с перемещением изображений на поддомен. Будем с ними бороться… Заменим любую картинку, на которую ведет хотлинк с другого сайта, на какое-нибудь предупреждающее изображение или на что хватит фантазии. В коде не забывайте менять адреса на ваши URL.
PHP:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?ваш-урл\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
#Замените путь к картинке
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/noHL.jpg [L]
 
Последнее редактирование:

Майор

Администратор
Команда форума
Регистрация
04.09.14
Сообщения
2.834
Реакции
1.939
Баллы
113
Перенаправим RSS фиды WordPress на Feedburner
Я не думаю, что кто-то пользуется чем-то другим, отличным от Feedburner. Удобно для пользователя, удобно для владельца блога, статистика, опять же. Если вы еще не используете — крайне рекомендую. Код ниже перенаправит все ваши RSS потоки на ваш аккаунт, не забывайте только вставить нужный адрес.
Скрытое содержимое доступно для зарегистрированных пользователей!

В этом примере идет перенаправление двух потоков: основного RSS и обновление комментариев, если посетитель подписан на обновления.
 
Последнее редактирование:

Майор

Администратор
Команда форума
Регистрация
04.09.14
Сообщения
2.834
Реакции
1.939
Баллы
113
Изменим страницы ошибок
С хостингом и сайтом случается всякое, поэтому заранее нужно быть готовым к проблемам и сделать свои страницы ошибок. А пользователи в случае проблем будут перенаправлены на соответствующую страницу. На этих страницах можно дать краткую информацию для пользователя, почему такое случилось. Контакты свои оставить, в крайнем случае.
PHP:
ErrorDocument 400 /errors/badrequest.html
ErrorDocument 401 /errors/authreqd.html
ErrorDocument 403 /errors/forbid.html
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/serverr.html
#Замените /errors/*.html на путь к вашим страницам ошибок
В этом примере идет перенаправление в случае основных ошибок. 404 я тоже добавил, хотя CMS обычно отрабатывают такие моменты, но бывали случаи.
 

Майор

Администратор
Команда форума
Регистрация
04.09.14
Сообщения
2.834
Реакции
1.939
Баллы
113
301 и 302 редирект (перенаправление)
301 редирект или, так называемое постоянное перенаправление — говорит о том, что страница поменяла адрес или URL и перенаправляет на новую страницу. Если у вас на сайте была проиндексированная ПС страница, а вы поменяли ее адрес — в обязательном порядке сделайте 301 редирект на новую страницу. При 301 редиректе старая страница не индексируется, а вместо нее «подставляется» новая.
PHP:
RewriteEngine on
Redirect 301 /old-page http://ваш-урл.ру/new-page
Собственно, похожий пример внимательный читатель увидит выше, в случае перенаправления RSS. Да, технология та же.

Бывает так, что сайт переезжает на новый домен, нужно сохранить структуру ссылок, а их могут быть сотни и тысячи, на каждую установить перенаправление нереально. Код ниже поможет разобраться с такой ситуацией:
PHP:
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://newdomain.ru/$1 [R=301,L]
Есть интересная методика «скрытия» внешних ссылок путем 301 редиректа. Допустим, у вас есть «сквозная» ссылка в сайдбаре, которая ведет на ваш профиль в Google+, она внешняя, то есть ведет на внешний ресурс. Для SEO очень хорошо, когда таких ссылок как можно меньше. Можно спрятать их и сделать внутренними.

Технология производства внутренних ссылок из внешних:
  • ставим ссылку на мнимую страницу, допустим gering111.com/google-plus
  • настраиваем 301 редирект в htaccess с этой страницы на реальную страницу вашего профиля
  • посетитель ничего не чувствует, ПС довольны ;)
Подобным образом можно ставить любые другие условно постоянные ссылки.
302 редирект или временное перенаправление говорит ПС, что страница перемещена временно, поэтому индексировать нужно обе страницы, старую и новую.
PHP:
RewriteEngine on
Redirect 302 /old-page http://ваш-урл.ру/new-page
Код абсолютно такой же, как в случае с постоянным перенаправлением.
302 редирект удобно использовать, когда проводятся какие-либо долгосрочные работы на сайте и не нужно показывать посетителям «поломанные» страницы. В таком случае вам поможет этот код:
PHP:
RewriteEngine on
RewriteCond %{REQUEST_URI} !/inside.html$
RewriteCond %{REMOTE_ADDR} !^123.123.123.123
RewriteRule $ /inside.html [R=302,L]
 

Майор

Администратор
Команда форума
Регистрация
04.09.14
Сообщения
2.834
Реакции
1.939
Баллы
113
Склеиваем сайты с www и без него
Очень плохо, когда сайт доступен по двум адресам, ПС это очень не любят. Склеить это в один адрес поможет код ниже:

PHP:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.ваш-урл\.com$ [NC]
RewriteRule ^(.*)$ http://ваш-урл.com/$1 [R=301,L]
В этом примере — главное зеркало это адрес без www. Если необходимо сделать наоборот — поменяйте www местами, сверху уберите, внизу добавьте.

 

Майор

Администратор
Команда форума
Регистрация
04.09.14
Сообщения
2.834
Реакции
1.939
Баллы
113
Показ страниц в зависимости от IP
PHP:
SetEnvIf REMOTE_ADDR 192.168.0.1 REDIR="redir"
RewriteCond %{REDIR} redir
RewriteRule ^/$ /about.html


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