Главная -> Советы -> Примеры настройки файла .htaccess. 16 повседневных приемов

Примеры настройки файла .htaccess. 16 повседневных приемов

Пока некоторые наши доблестные сео гуру переводят иностранные статьи, не утруждая себя установкой ссылки на оригинал статьи, приведу вам подборку кодов для настройки .htaccess.

Почти все пункты являются обязательными, кроме

  1. редиректа и блокировки они настраиваются по мере необходимости
  2. а также настройки ЧПУ (ЧеловекоПонятныхУРЛ) как правило, можно обойтись функционалом CMS

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

Все не так страшно, как может показаться:

  1. открываем блокнот
  2. пишем код (можно и потом это сделать)
  3. сохраняем документ с названием .htaccess
  4. заливаем в корень сайта (или в папку на сервере, где будем производить настройки)

* yoursitename.ru в примерах заменяйте на адрес вашего домена

Настройки по умолчанию

1. Установка главной страницы по умолчанию

DirectoryIndex pagename.html

2. Определение страниц ошибок (error) в .htaccess


ErrorDocument 403 /403.php
ErrorDocument 404 /404.php
ErrorDocument 500 /500.php

Соответственно адрес и название файла могут быть другими, например /error/page404.html

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

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


RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
#домены, которые могут ссылаться на картинки с вашего сайта
RewriteCond %{HTTP_REFERER} !^http://([ -a-z0-9]  .)?yoursitename.ru [NC]
#не показывать картинки при хотлинках
RewriteRule .(gif|jpe?g|png)$ - [F,NC,L]

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

RewriteRule .(jpg|png|gif)$ http://yoursitename.ru/images/imagename.jpg [NC,R,L]

4. Принудительно сохранение файла вместо открытия

Если хотите, чтобы посетители вместо просматра файла онлайн сохраняли его, то в .htaccess пишем:

AddType application/octet-stream .doc .mov .avi .pdf .xls .mp4

5. Кэширование файлов

В WordPress для этого есть специальный плагин: wp-super-cache. Если вы же пользуетесь CMS, которая кэширование не поддерживает, то можно произвести следующие настройки в .htaccess

#кэширование html и htm на сутки

Header set Cache-Control "max-age=43200"

#кэширование css, javascript и txt-файлов на неделю

Header set Cache-Control "max-age=604800"

#кэширование flash и картинок на месяц

Header set Cache-Control "max-age=2592000"

#запрет на кэширование скриптов

Header unset Cache-Control

Параметр max-age приведен в секундах.

6. Включение ошибок на время отладки

php_flag display_errors on
Спасибо volandу за подсказку

Настройка редиректа с помощью .htaccess

1. 301 редирект

Оптимальное решение для перенаправления посетителей со старых адресов на новые, если со временем структура сайта менялась, а старые URLы могли где-то остаться.

Redirect 301 /oldpage.html http://yoursitename.ru/newpage.html

Встречается еще такой вариант:

Redirect permanent /oldpage.html http://yoursitename.ru/newpage.html

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

2. Склеивание доменов с www и без www

Редирект с адреса yoursitename.ru на www.yoursitename.ru


RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.yoursitename.ru$ [NC]
RewriteRule ^(.*)$ http://www.yoursitename.ru/$1 [L,R=301]

Обратный редирект


RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^yoursitename.ru$ [NC]
RewriteRule ^(.*)$ http://yoursitename.ru/$1 [L,R=301]

3. 302 редирект

Если вы ведете работы на сайте, то можете временно отправлять посетителей на нужную страницу (например, с описание того, когда планируется завершение работ и как можно с вами связаться).


RewriteEngine on
RewriteCond %{REQUEST_URI} !/informpage.html$
RewriteCond %{REMOTE_HOST} !^12.345.678.90
RewriteRule $ http://yoursitename.ru/informpage.html [R=302,L]

Просмотр сайта будет возможен только с вашего ip-адреса 12.345.678.90

4. Переадресация на другой сайт

Переадресация всех посетителей на другой сайт, помимо указанных ip-адресов


ErrorDocument 403 http://www.yoursitename.ru
Order deny,allow
Deny from all
Allow from 12.345.678.90
Allow from 12.345.678.92

5. Переадресация на безопасное https соединения


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

Запрет/блокировка с помощью .htaccess

1. Запрет на листинг директории

Используется при отсутствии индексного файла, если хотите запретить просмотр содержимого папки (например, для images):

Options All -Indexes

Обратный код, в смысле разрешение

Options +Indexes

2. Блокировка доступа к файлу

Например, это может быть ваш .htaccess



order allow,deny
deny from all

3. Блокировка по ip

Чтобы спамеры не надоедали



Order Deny,Allow
Deny from 12.345.678.90
Deny from 90.876.543.
Deny from .tvoe.tv
Allow from all

Будут заблокированы:

  • юзер с ip 12.345.678.90
  • все посетители с ip, попадающими в диапазон от 90.876.543.0 до 90.876.543.255
  • и все посетители от провайдера tvoe.tv

Настройка ЧПУ с помощью .htaccess

Вообще, если вы работаете с WordPress, то настроить дружелюбные url можно в разделе Настройки » Постоянные ссылки (ЧПУ). Многие CMS так же поддерживают настройку адреса страницы. Поэтому, если есть возможность, сначала попробуйте обойтись функционалом движка, и потом уже приступайте к настройке htaccess.

1. Как убрать из адреса ?p=

По умолчанию адрес страницы выглядит следующим образом: yoursitename.ru/?p=xxxx, где xxxx id статьи.


RewriteCond %{REQUEST_URI} ^/([0-9]+)$
RewriteRule .* http://yoursitename.ru/?p=%1 [R=301,L]

2. Как убрать из адреса category

По аналогии с прошлым способом пишем

RewriteRule ^category/(.+)$ http://yoursitename.ru/$1 [R=301,L]

- - - - - -
Ну и напоследок:
JQuery framework для тех, кто начал изучать jQuery самое оно. Надо сказать, что фреймворки вообще вещь очень даже полезная (фреймворк простая концептуальная структура, используемая для решения сложной, проблемной задачи), так что пробуйте.

Если есть вопросы или поправки по теме пишите, задавайте

Понравилась статья? Тогда подпишитесь на RSS, чтобы следить за обновлениями!

 
Рекомендуем:

Продвижение сайтов в Республике Беларусь

Компания "Виста" предлагает продвижение сайтов в Республике Беларусь - первые 3 месяца бесплатно.