Если Вы уже зарегистрировались на сайте, то авторизуйтесь

10 приемов работы с htaccess, которые вы могли не знать

Опубликовано 14.07.15
0 комментариев
21 462

На форумах вебмастера часто задают вопросы, которые решаются при помощи модификации .htaccess – файла настроек сервера Apache. Возможности файла .htaccess шире, чем кажутся на первый взгляд.

Некоторые из приемов знакомы всем SEO-специалистам и вебмастерам, другие научат новому.

1. Делаем URL-ы более кроткими

Проблема “красоты” URL-ов сейчас возникает не часто. Большинство CMS способы сами формировать адреса, которые нравятся поисковым системам. Однако, если у вас нет системы управления сайтом, собственный движок, или вы просто не хотите менять правило формирования URL всего сайта ради одной страницы, отлично подойдет заглушка с использованием ForceType.

Например, страницы вашего сайта генерируются с расширением “php”, например http://site.ru/seo.php, но вы хотите чтобы страница была доступна по адресу  http://site.ru/seo, для этого, мы должны указать серверу, что по этому адресу расположена страница на языке PHP. Это можно сделать следующей командой:

<Files seo>

ForceType application/x-httpd-php5

</Files>

Вместо seo можно указать сразу несколько значений через пробел, или даже все страницы, при помощи символа “*”.

С помощью ForceType можно сделать и некоторые нестандартные решения. Допустим, у вас есть папка images с изображениями и вы хотите чтобы эти изображения открывались без указания расширения:

<Location /images>

ForceType image/gif

</Location>

Теперь все изображения в папке будут доступны без указания расширения. Например, изображение http://site.ru/images/penguin.jpg будет также доступно по адресу http://site.ru/images/penguin

То же самое можно проделать, к примеру, с swf или pdf файлами.

 

2. Указываем каноничные адреса в не-html файлах

Атрибут rel=”canonical” можно отнести к “новым” атрибутам, не относящимся к начальной спецификации html. Однако, после появления этот тег получил широкое распространение среди SEO-специалистов, которые использовали его для указания на страницы-оригиналы.

Как бы там ни было, не многим известно что каноничность можно указать не только html-странице, но и любому документу, например pdf или swf-файлу. Это полезно, например, если вы генерируете страницы для печати в формате pdf, добавляя к тексту элементы айдентики компании или водные знаки.

Обычно, в таких случая эти файлы закрывают от индексации в robots.txt, но вы можете пойти и другим путем, отправляя в заголовке файла информацию о каноничном адресе с помощью .htaccess:

<Files article-about-seo.pdf>

Header add Link ‘<http://www.site.ru/article-about-seo.php>; rel=”canonical”‘

</Files>

С помощью похожей директивы вы можете указать каноничные страницы сразу для всех pdf-файлов:

RewriteRule ([^/]+).pdf$ – [E=FILENAME:$1]

<FilesMatch “.pdf$”>

Header add Link ‘<http://www.site.ru/%{FILENAME}e.php>; rel=”canonical”‘

</FilesMatch>

Теперь каждый pdf-файл в каталоге указывает в качестве каноничной страницу с таким же именем файла, но с расширением php.

 

3. Задаем директивы индексирования, как в мета-теге robots

Все директивы (index, noindex, follow, nofollow, noarchive, nosnippet) мета-тега robots доступны для указания в .htaccess. Это может быть полезно, если вы не можете внести изменения в CMS,  robots.txt (например, файл автоматически перезаписывается системой администрирования). Или хотите ограничить индексирование файлов какого-то конкретного типа.

Например, мы не хотим чтобы поисковые системы следовали по ссылкам, сохраняли в кэш и формировали сниппеты для файлов с расширением doc, но все-равно индексировали их. Для этого применяется конструкция X-Robots-Tag:

<FilesMatch “.doc$”>

Header set X-Robots-Tag “index, nofollow, noarchive, nosnippet”

</FilesMatch>

Таким же образом мы можем ограничить индексацию файлов нескольких типов:

<FilesMatch “.(doc|docx|pdf)$”>

Header set X-Robots-Tag “index, nofollow, noarchive, nosnippet”

</FilesMatch>

 

4. Стандартные редиректы зеркал

Несколько самых распространенных редиректов:

# Редирект на зеркало сайта с www.

RewriteCond %{HTTP_HOST} !^www.site.ru

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

# Редирект на зеркало сайта без www.

RewriteCond %{HTTP_HOST} ^www.site.ru [NC]

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

# Редирект на HTTPS-версию сайта.

RewriteCond %{HTTPS} !on

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Редирект на URL-адреса с символом слэш “/” .

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !(.*)/$

RewriteRule ^(.*)$ http://www.site.ru/$1/ [L,R=301]

 

5. Собственные страницы ошибок  

Страницы ошибок 404, 403, 500 и им подобных обычно имеют очень примитивный дизайн, создаваемый CMS. Но вы можете создать свою страницу, и определить ее как страницу ошибки с помощью простых команд в .htaccess:

ErrorDocument 403 /forbidden403.php

ErrorDocument 404 /notfound404.php

ErrorDocument 500 /internal500.php

 

6. Показываем Google, что у страницы есть мобильная версия

Если при отображении мобильной версии сайта URL страниц не изменяется, то есть вы генерируете на одних и тех же страницах различный код для разных устройств, нужно сообщить об этом роботу Google, чтобы снизить шансы получить санкции за подмену контента.

Для этого в заголовок страницы запишем значение Vary: User-Agent, показывающее, что контент варьируется в зависимости от User-Agent клиента:

Header append Vary User-Agent

 

7. Внедряем кэширование файлов для ускорения загрузки

Поисковые системы (особенно Google) уделяют много внимания скорости загрузки страниц и файлов. В наших силах увеличить скорость работы, добавив кэширование тех файлов, которые не обновляются или обновляются редко:

<FilesMatch “.(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$”>

Header set Cache-Control “max-age=28800”

</FilesMatch>

Также мы можем сжать страницы перед загрузкой используя gzip:

<ifModule mod_gzip.c>

mod_gzip_on Yes

 mod_gzip_dechunk Yes

 mod_gzip_item_include file .(html?|txt|css|js|php|pl)$

 mod_gzip_item_include handler ^cgi-script$

 mod_gzip_item_include mime ^text/.*

 mod_gzip_item_include mime ^application/x-javascript.*

 mod_gzip_item_exclude mime ^image/.*

 mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*

</ifModule>

Не забудьте сделать резервную копию .htaccess перед использованием кода из этого пункта. Если на сервере или в CMS (к примеру, кэширующий плагин) уже используется механизм кэширования, добавление этих строк может привести к неработоспособности сайта.

 

8. Заменяем сайт на заглушку

Когда вы вводите какие-либо значимые изменения на сайт, иногда бывает разумно выставить “заглушку”, которая на время будет отображаться вместо страниц:

# Добавляем свой IP в исключения.

RewriteCond %{REMOTE_ADDR}  !your_ip_address

# Добавляем “собственный” сервер сайта в исключения.

RewriteCond %{REMOTE_ADDR}  !127.0.0.1

# Отправляем на заглушку всех, кто зашел не на offline.php.

RewriteRule !offline.php$ http://www.site.ru/offline.html [L,R=307]

 

9. Делаем URL-адреса для SEO, даже если CMS не позволяет

Даже сейчас еще остались сайты, на которых нет ЧПУ URL-ов. Одни неудачно выбрали CMS, другие были созданы в те времена, когда CMS только зарождались. В любом случае, если вам “повезло” иметь такой сайт, вы можете без труда исправить адреса страниц, если, конечно, захотите.

Например, чтобы изменить адрес с http://site.ru/product.php?id=3214 на http://site.ru/ssylki/ будет достаточно следующего кода:

RewriteRule ssylki/ product.php?id=3214

А если нужно поменять адрес сразу группы товаров с разными id:

RewriteRule ssylki/([0-9]+)/ product.php?id=$1

Теперь страницы будут доступны по адресам http://site.ru/ssylki/3214/, http://site.ru/ssylki/3215/ и т.д.

 

10. Добавляем в ответ сервера произвольное сообщение

Вы можете отправить в ответе сервера произвольное сообщение. Зачем? Вот простой пример.

SEO-компании часто анализируют сайты конкурентов, и эту работу они поручают достаточно квалифицированным людям. Почему бы не попробовать переманить ценного сотрудника к себе? Поступим оригинально и запишем приглашение в ответ сервера для страниц сайта:

Header set Hiring-Now “SEO-professional? Work for us, we pay more!”

Можно сразу добавить в сообщение email или телефон и ждать новых работников. Кириллические символы использовать нельзя, но можно применить транслитерацию.

 

Как посмотреть возвращаемые сервером заголовки

Ответ сервера можно узнать при помощи различных онлайн сервисов, таких как MainSpy и be1.ru.

В Google Chrome для этого используются встроенные инструменты разработчика. Для этого, нажмите Ctr+Shift+I и выберите пункт Network.

В Firefox для таких случаев есть плагин LiveHTTPHeaders который добавляет полную информацию о заголовках в пункт “Информация о странице”:

заголовки от сервера

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Не забудь оформить подписку на Ротапост!

  • No Related Post