ArtShok. Сайтостроение и немного SEO

Уроки и примеры по CSS, jQuery. Советы по монетизации и продвижению сайтов

Вы находитесь на блоге "ArtShok. Красивое сайтостроение".
Блог в большей степени посвящен примерам и урокам по CSS, jQuery, AJAX и немного внимания будет уделено продвижению (SEO). Иначе говоря, всему тому, что поможет сделать Ваш сайт более красивым и совершенным.

Машина твоей мечты вместе с Sape!

11 августа 2009

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

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

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

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

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

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

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

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

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

настройка htaccess, error htaccess, htaccess index, htaccess hotlink, htaccess cashe

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 на сутки

<FilesMatch ".(html|htm)$">
Header set Cache-Control "max-age=43200"
</FilesMatch>

#кэширование css, javascript и txt-файлов на неделю
<FilesMatch ".(js|css|txt)$">
Header set Cache-Control "max-age=604800"
</FilesMatch>

#кэширование flash и картинок на месяц
<FilesMatch ".(flv|swf|ico|gif|jpg|jpeg|png)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>

#запрет на кэширование скриптов
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>

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

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

php_flag display_errors on

Спасибо voland’у за подсказку

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

настройка htaccess, redirect htaccess, www htaccess редирект 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

настройка htaccess, -Indexes htaccess, htaccess блокировка ip, htaccess доступ к файлу

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

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

Options All -Indexes

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

Options +Indexes

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

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

<Files .htaccess>
order allow,deny
deny from all
</Files>

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

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

<Limit GET>
Order Deny,Allow
Deny from 12.345.678.90
Deny from 90.876.543.
Deny from .tvoe.tv
Allow from all
</Limit>

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

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

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

настройка htaccess, htaccess wordpress, htaccess URL, 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]

- - - - - - - - - -
Ну и напоследок:
Если кого интересует продвижение сайтов в Екатеринбурге, то прошу на сайт. Помимо услуг компании на сайте можно найти пару интересных статей на тему SEO, например, “Как семантическое ядро влияет на стоимость?” и “Оптимизация vs Продвижение”

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

Ну а для мечтающих о своей квартире: недвижимость в Греции. Задумайтесь, т.к. если постараться, то можно в Греции найти виллу по стоимости квартиры в Петербурге (знаю, т.к. уже много материала перелопачено)

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

Рекомендуемые статьи:

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



Комментарии к этой записи


  1. все посетители с ip, попадающими в диапазон от 90.876.543.00 до 90.876.543.99

    от 90.876.543.0 до 90.876.543.255

    [Ответить]

    ArtShok:

    Спасибо!
    А можете объяснить почему .255? Откуда данные?

    [Ответить]


  2. http://ru.wikipedia.org/wiki/IP-%D0%B0%D0%B4%D1%80%D0%B5%D1%81

    цитирую:

    P-адрес представляет собой 32-битовое (по версии IPv4) или 128-битовое (по версии IPv6) двоичное число. Удобной формой записи IP-адреса (IPv4) является запись в виде четырёх десятичных чисел (от 0 до 255), разделённых точками, например, 192.168.0.1. (или 128.10.2.30 — традиционная десятичная форма представления адреса, а 10000000 00001010 00000010 00011110 — двоичная форма представления этого же адреса).

    [Ответить]

    ArtShok:

    Будем знать

    [Ответить]


  3. Полезная статья. Но есть ошибки.

    Для блокировки по IP пишем:

    1.
    2.Order Allow,Deny

    Именно так, сначала выполняется allow, потом deny

    3.Allow from all
    4.Deny from 12.345.678.90
    5.Deny from 90.876.543.
    6.Deny from .tvoe.tv

    Итак, сначала разрешаем для всех, а потом баним нужные IP. Так будет работать правильно.

    7.

    [Ответить]

    Анатолий:

    Почему? Разницы быть не должно - в итоге разрешения и запрещения все равно выдаются …

    [Ответить]

    Анатолий:

    Спасибо. “Рецепт” из статьи не работает. Хорошо, в итоге проверил.
    Ваш - работает. Выдает ошибку 403 (доступ запрещен). Как можно сделать, чтобы при доступе с определенного IP выдавалась ошибка 404? Я хочу, чтобы “злодей” гуляющий по моему сайту ничего не понял.

    [Ответить]


  4. довольно занимательная статья. правда, я ничего не понял, но ссылку программисту скинул.))

    [Ответить]


  5. Защита от хотлинков это просто must have! У шакина читал про плагин для такой защиты, но имхо проще в .htaccess прописать.

    [Ответить]


  6. Полная статья по htaccess. Сохранил в закладках.

    [Ответить]


  7. php_flag display_errors on
    Включение ошибок на время отладки

    [Ответить]

    ArtShok:

    Спасибо, дополнено

    [Ответить]


  8. Немного непонятно. Почему все пишут 12.345.678.90. Что такое 678. По Ip4 - Ип адрес 4 байта - октет - до 255. Нельзя ли писать так 101.102.166.90, вместо 12.345.678.90.
    Или я чета не доганяюю?!

    [Ответить]

    ArtShok:

    Не воспринимайте цифры буквально - в данном случае они даны исключительно для примера. Опор в статье делается на .htaccess, а не на теорию IP- адресов

    [Ответить]


  9. Спасибо, помогло в работе!

    [Ответить]


  10. Спасибо, познавательно. Еще бы добавили готовый .htaccess в качестве примера, где предусмотрено “все очень нужное” ;)

    [Ответить]

    ArtShok:

    Пожелание учтено :)

    [Ответить]


  11. Никогда не вникал в тонкости работы с .htaccess только немного стремно экспериментировать, а то ошибки с этим файлом могут боком вылезти

    [Ответить]

    inst:

    На этот случай нужны backup’ы =)

    [Ответить]


  12. По моему это:
    1 ErrorDocument 403 http://www.yoursitename.ru
    2 Order deny,allow
    3 Deny from all
    4 Allow from 12.345.678.90
    5 Allow from 12.345.678.92

    к переадресации на другой сайт не имеет не какого отношения. Просто тупой вывод страницы с ошибкой

    [Ответить]


  13. Вот так будет правильно при пересыле всех, кроме разрешенных на другую страницу:

    1
    2 Order Deny,Allow
    3 Allow from 12.345.678.90
    4 Allow from 90.876.543.
    5 Allow from .tvoe.tv
    6 Deny from all
    7
    8 ErrorDocument 403 http://www.yoursitename.ru*

    *Сайт перенаправления

    [Ответить]


  14. извиняюсь теги не вставились:

    1 (Limit GET HEAD POST)
    2 Order Deny,Allow
    3 Allow from 12.345.678.90
    4 Allow from 90.876.543.
    5 Allow from .tvoe.tv
    6 Deny from all
    7 (/Limit)
    8 ErrorDocument 403 http://www.yoursitename.ru*

    *Сайт перенаправления
    Вместо круглых скобок треугольные

    [Ответить]


  15. у меня защита от хотлинков на хостинге прописывается)))) правда классно? а так статья полезная многим) жаль поздно прочитал) разобрался самостоятельно уже)

    [Ответить]


  16. АртШок, спасибо Вам за интересную и полезную надпись. Начала уже редактировать .htaccess по Вашим рекомендациям. :)

    [Ответить]

    ArtShok:

    Пожалуйста:) Желаю удачно развлечься :)

    [Ответить]


  17. Можно ли сделать с помощью htaccess редирект с урлов типа site.ru/PrOdUcT на site.ru/product. или каким то другим способом.
    Я к примеру переименовал страничку /Product в /product и поисковые системы считают эти страницы разными с дублированным конетентом.

    [Ответить]


  18. Кстати защита от хотлинка хорошая штука, один блог разместил кучу хотлинков на мои картинки

    [Ответить]


  19. )) вместо 403 свою картинку влепить, то что нужно ! )

    [Ответить]


  20. Спасибо за статью!
    Применил 301 редирект для старых страниц с .htm на .html
    Небольшой вопрос: сами старые страницы (.htm) надо оставлять на сервере некоторое время?

    [Ответить]

    ArtShok:

    Да, пока оставьте. Пусть сайт переиндексируется. А потом со спокойной душой можете удалять

    [Ответить]


  21. У меня защита от хотлинков не пошла (использую вариант с переадресацией на другую картинку). Во втором условии были пробелы и знак минуса перед a.
    RewriteCond %{HTTP_REFERER} !^http://([ -a-z0-9] \.)?yoursitename\.ru [NC]
    Пришлось убрать (была ошибка 500).

    Правильное условие ищет не один символ в домене третьего уровня а несколько (добавил + после закрывающей квадратной скобки)
    RewriteCond %{HTTP_REFERER} !^http://([a-z0-9]+\.)?yoursitename\.ru [NC]

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

    Пришлось добавить еще одно правило, чтобы отсечь зацикливание …
    RewriteCond %{REQUEST_URI} !image.jpg$ [NC]

    [Ответить]


  22. Спасибо, классная статья, но мне, как новичку, далекому от программирования и php придется очень долго разбираться, можно ли выложить скромненький примерчик оформления .htaccess со стандартным набором директив? Ну чтобы удобнее было делать по сему. Под стандартным наборчиком я понимаю директивы: AddDefaultCharset, Last-Modified, DirectoryIndex myindex.php, интересует, как все это правильно оформить в блокноте.

    [Ответить]


  23. А вообще хочу поздравить сегодня всех мужчин, имеющих отношение к этому ресурсу с праздником. Счастья Вам, дорогие мужчины!

    [Ответить]


  24. Защиту от хотлинков хостер предлагает просто включит птичкой в панели управления сайтом

    [Ответить]

Оставить комментарий или два