расставляй правильно приоритеты и не отвлекайся на мелочи

10 полезных хаков .htaccess для WordPress

Перевод: 10 awesome .htaccess hacks for WordPress
Автор: Jean-Baptiste Jung

Предупреждение

Когда редактируете файл .htaccess Вашего WordPress блога будьте уверены, что у Вас всегда есть его архивная копия, из которой можно будет восстановить исходные данные, если вдруг что-то пойдет не так.

1. Перенаправляем RSS ленту WordPress на FeedBurner с помощью .htaccess

Какой блоггер не использует FeedBurner? Уверен, FeedBurner это замечательный сервис, который позволяет Вам узнать сколько посетителей подписаны на Вашу RSS ленту. Проблема лишь в том, что Вы должны вручную отредактировать файлы Вашей темы, что-бы переправить URL ленты. К счастью есть великолепный хак с использованием .htaccess, который сохранит Вам уйму времени. Не забудьте исправить 6-ую строчку, когда будете применять этот код:

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{HTTP_USER_AGENT} !FeedBurner    [NC]
 RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
 RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds2.feedburner.com/catswhocode [R=302,NC,L]
</IfModule>

2. Удаляем слово «/category/» из URL Вашего WordPress

По умолчанию, постоянные ссылки на категории WordPress выглядят вот так:

http://www.catswhocode.com/blog/category/wordpress

Как Вы видите, слово category в URL не несет в себе никакого смысла. Как его убрать? Сперва сохраните Ваш файл .htaccess. Затем, откройте его и добавьте следующую строку:

RewriteRule ^category/(.+)$ http://www.yourblog.com/$1 [R=301,L]

После сохранения, URL Ваших страниц категорий будет выглядеть вот так:

http://www.catswhocode.com/blog/wordpress

3. Используем кеш браузера

Хорошим подспорьем для оптимизации времени загрузки Вашего блога будет использование кеша клиентских браузеров. Этот код напрямую не улучшит время загрузки Вашего блога, но он поможет в работе серверу, отсылая 304-ый код статуса, который будет говорить о том, что запрашиваемые статические элементы (изображения, таблицы стилей, JavaScript) не изменялись и их не нужно загружать повторно.

FileETag MTime Size
<ifmodule mod_expires.c>
  <filesmatch "\.(jpg|gif|png|css|js)$">
       ExpiresActive on
       ExpiresDefault "access plus 1 year"
   </filesmatch>
</ifmodule>

4. Сжимаем статические данные

Вы знаете, что пользователю можно отправлять сжатые данные, которые будут разархивированы в изначальные на клиенской стороне? Этот код определенно сохранит Вам и Вашим посетителям время загрузки, значительно уменьшив размеры передаваемых данных.

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html

5. Убираем из постоянных ссылок День, Месяц, Год и оставляем только название статьи

Первым делом, когда Вы заходите в администраторскую часть WordPress, Вы идете в Settings ? Permalinks и выбираете постоянные ссылки вида /%postname%/. Ваши ссылки теперь будут выглядеть вот так:

http://www.yourblog.com/name-of-the-post

Теперь нам необходимо перенаправить все обратные ссылки, использующие старую структуру формирования URL, на новую структуру «укороченных» постоянных ссылок. Сделаем это с помощью .htaccess, расположенного в корне WordPress, просто вставив туда следующий код (не забываем вставлять свой домен):

RedirectMatch 301 /([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ http://www.domain.com/$4

6. Запрещаем постить комментарии пользователям без реферера

Вы устали от волны ежедневных спам комментариев? Конечно, есть Akismet, но есть и маленький .htaccess трюк предотвращающий определенный спам на Вашем блоге. Как правило спамеры используют ботов приходящих ниоткуда. Этот код проверяет реферер (ссылку на страницу, с которой комментатор оставляет свое сообщение) и запрещает комментирование, если оно осуществляется напрямую, через вызов скрипта wp-comments-post.php без использования формы отправки комментариев на Вашем блоге. Просто измените строку 4 в соответствии с Вашим доменом.

RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*yourblog.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]

7. Как сказать посетителям, что на блоге проходят технические работы?

Когда Вы обновляете свой блог или выполняете какие-то изменения в его дизайне, не очень-то грамотно давать показывать это посетителям, особенно когда при таких процедурах случаются различные проблемы связанные с ошибками и недочетами. По хорошему, Вы должны заранее заготовить страницу с предупреждением о том, что на данном ресурсе проводятся временные работы, и что он будет доступен в ближайшее время, так называемая «maintenance page», соответственно всех посетителей необходимо переправлять на эту страницу. Замените maintenance.html (строка 2) на страницу, которую Вы подготовили, что-бы перенаправлять своих посетителей и IP адрес на строке 3 — это Ваш IP адрес. Помните, что статус 302 — перенаправление, используется для того, что указать поисковым системам, что-бы они не индексировали нашу заготовку вместо настоящей домашней страницы сайта!

RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123
RewriteRule $ /maintenance.html [R=302,L]

8. Защищаем WordPress от хотлинков

Хотлинки — это способ использовать изображение с одного сайта на другом. Многие блогеры этим пользуются и этим самым нагружают чужие ресурсы. Этот код поможет защитить Ваш WordPress от хотлинков и тем самым снизить нагрузку на Ваш ресурс:

RewriteEngine On
#Replace ?mysite\.com/ with your blog url
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
#Replace /images/nohotlink.jpg with your "don't hotlink" image url
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

9. Закрываем администраторский раздел WordPress от чужих глаз (IP адресов)

За исключением коллективных блогов, только Вы должны быть допущены к директории wp-admin — это директория администраторского раздела WordPress. Если у Вас есть постоянный IP адрес или блок IP адресов, этот код для Вас. Все, что Вам надо сделать, это ввести его в строке 8. Помните, что этих строк может быть несколько или, если Вы используете блок адресов, они могут быть записаны в соответствии с правилами IP адресации, к примеру так: 77.77.77.0/255.255.255.0

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Example Access Control"
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
allow from xx.xx.xx.xx
</LIMIT>

10. Посылаем спамеров в баню (banning) с помощью .htaccess

Как Вы знаете — спамеры очень приставучие. В отношении каких-то конкретных персон, Вы можете завести черный список, с помощью которого сможете полностью блокировать доступ к своему детищу. Просто замените IP адрес на строке 3 на IP адрес спамера, если их несколько, то Вы можете воспользоваться советом предложенным в предыдущем пункте.

<Limit GET POST>
order allow,deny
deny from 200.49.176.139
allow from all
</Limit>
8 комментариев на статью:
  1. vit:

    Интересно, узнал новое про сжатие передаваемых данных, спасибо

  2. Артур:

    А меня вечно хостинг блокируется из-за этих ЧПУ.. настраиваю там ВП выдает типа впишите следующее — потом косяки и бан…

    • admin:

      Непонятно, за что бан? :(
      Если выкидывает ошибку 500, значит либо mod_rewrite не поддерживается, либо ошибки в его конфигурировании

  3. Radon:

    У меня ссылка на категории вида: http://domen.ru/category/soft
    Строка: RewriteRule ^category/(.+)$ http://domen.ru/$1 [R=301,L]
    не работает.

  4. Сергей:

    Здравствуйте у меня вопрос: мой блог установлен в подпапке то есть он стоит не в основном каталоге и его не индексирует яндекс.
    Из яндекса пришло письмо:
    В поисковой системе Яндекс сайты индексируются и участвуют в поиске только по
    адресу главного зеркала. Главным зеркалом Вашего сайта на данный момент
    является домен http://www.sait.biz. Но все страницы раздела http://www.sait.biz/blog/
    отдают нашему роботу 302 перенаправление на неглавное зеркало —
    sait.biz/blog/, и, соответственно, не могут быть проиндексированы. Для того,
    чтобы раздел начал индексироваться по адресу текущего главного зеркала Вам
    нужно снять перенаправление.

    в моём .htaccess прописано
    # BEGIN

    RewriteEngine On
    RewriteBase /blog/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /blog/index.php [L]

    # END

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

    • admin:

      Если честно, то не могу понять в чем проблема, формально все у Вас правильно. Сорри за поздний ответ, отпуск на дворе :)

Ответить
Обязательные поля помечены *