Супер возможности файла .htaccess для WordPress
Добрый вечер, друзья! Вот и пришла пора обсудить такой важный файл — как .htaccess для WordPress, который необходим для правильной работы блога и внедрения дополнительных функций. Многие начинающие веб-мастера даже не догадываются о существовании данного файла и тем более о его предназначении.
А некоторые, опасаются самостоятельно его настраивать. Что в принципе и правильно! Не разбираешься не лезь =)
Статьи по теме:
- Правильный файл robots.txt для WordPress
- Защити свой блог по максимуму!
- Делаем мобильную версию на раз-два!
Кто такой .htaccess и зачем?
Начнем с того, что представляет из себя этот .htaccess и какую пользу он несет? Этот файлик применяется для дополнительной конфигурации web-сервера Apache и ему подобных. Данный файл позволяет выполнять следующие функции:
- В разных директориях задает определенные конфигурации;
- Заблокировать пользователя через адрес IP;
- Осуществлять управление поисковыми роботами;
- Изменять имена индексных файлов;
- Ограничивать доступ к папкам посредством логина и пароля;
- Перенаправлять людей на сторонние ресурсы (редирект);
- Не давать просматривать файлы любого вида и закрывать доступ к ним;
- Создавать странички ошибок 500, 404 и 403.
Стандартный образец .htaccess для WordPress
По идеи, сам файл уже должен присутствовать на Вашем сервере в корневой директории. Поэтому зайдите туда и скопируйте его на ваш ПК. Перед тем, как Вы будете вносить правки, хочу Вас предупредить:
Перед любым вмешательством в .htaccess, рекомендую сделать резервную копию файла! Достаточно малейшей ошибки и Ваш блог накроется медным тазом.
Если не умеете делать резервные копии, то прочитайте эту статью... А я продолжаю!
Как поступить, когда .htaccess отсутствует? Делаем следующее... На рабочем столе, создадим обычный txt-файл и переименуем его в .htaccess! После чего, откройте его с помощью все того же текстового редактора «блокнот», хотя лучше применить «Notepad++»... И запишите туда следующие записи:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Теперь копируем все это дело и сохраняем... Перекидываем обратно в корневую директорию ресурса на хостинге.
Убираем дубли WordPress с помощью .htaccess
Лично я использую .htaccess для перенаправления посетителей или поисковых ботов с одного адреса на другой (редирект). Это в первую очередь необходимо для борьбы с дублированием контента... Если не знаете про что идет речь, то почитайте статью моего партнера — тут, в поиске наберите «дубли», там несколько статей!
Используем .htaccess для борьбы с дублями:
[sociallocker]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule (.+)/feed /$1 [R=301,L]
RewriteRule (.+)/comment-page /$1 [R=301,L]
RewriteRule (.+)/trackback /$1 [R=301,L]
RewriteRule (.+)/comments /$1 [R=301,L]
RewriteRule (.+)/attachment /$1 [R=301,L]
RewriteCond %{QUERY_STRING} ^replytocom= [NC]
RewriteRule (.*) $1? [R=301,L]
RewriteCond %{QUERY_STRING} ^attachment_id= [NC]
RewriteRule (.*) $1? [R=301,L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
[/sociallocker]
Примеры функций .htaccess для WordPress
Внимание! Данные коды подойдут не для всех из-за особенностей Вашего хостинг-провайдера!
Создадим перенаправление (редирект) на другой домен:
RewriteRule ^(.*)$ http://новый_доменс.ru/$1 [R=301,L]
Перенаправление с www.доменс.ru на основной домен сайта доменс.ru
RewriteEngine On
RewriteCond %{HTTP_HOST} !^доменс\.ru$ [NC]
RewriteRule ^(.*)$ http://доменс.ru/$1 [L,R=301]
Блокировка доступа к ресурсу для всех:
deny from all
Блокировка конкретных юзеров к ресурсу по IP:
order allow,deny
deny from 555.555.555.555
allow from all
А вот так, наоборот, открываем доступ к ресурсу для определенных IP
order deny,allow
deny from all
allow from 555.555.555.555
Кэшируем данные в браузере — Сам Google советует применять кэширование информации, чтобы ускорить ресурс. Смысл данной настройки в том, что браузер единожды получает определенные виды данных и далее забирает их из кэша, а не подгружает их заново. Благодаря этому ресурсу добавляется заветная скорость загрузки.
<IfModule mod_expires.c>
Header append Cache-Control "public"
FileETag MTime Size
ExpiresActive On
ExpiresDefault "access plus 0 minutes"
ExpiresByType image/ico "access plus 1 years"
ExpiresByType text/css "access plus 1 years"
ExpiresByType text/javascript "access plus 1 years"
ExpiresByType image/gif "access plus 1 years"
ExpiresByType image/jpg "access plus 1 years"
ExpiresByType image/jpeg "access plus 1 years"
ExpiresByType image/png "access plus 1 years"
</IfModule>
Если первый вариант не сработал, попробуйте вот этот:
<ifmodule mod_expires.c>
<filesmatch ".(jpg|jpeg|gif|png|ico|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 1 year"
</filesmatch>
</ifmodule>
Блокируем доступ к наиважнейшим модулям
С целью обеспечения дополнительной безопасности ресурса, мы можем заблокировать доступ, допустим к файлу .htaccess. Для этого примените такие строки:
<Files .htaccess>
order allow,deny
deny from all
</Files>
GZIP-сжатия для: HTML, CSS, JS — ускоряем загрузку блога:
<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>
Теперь сделаем кеширование файлов:
<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>
Хочу еще раз предупредить о том, что .htaccess для WordPress не игрушка! Вы все делаете на свой страх и риск! Если не уверены, лучше нанять спеца!
До следующих уроков!
PS: Кстати, создал канал на Telegram (https://telegram.me/savme_blog) и приглашаю Вас подписаться!
С уважением, Владимир Савельев
а мне интересно — что такое телеграмм? Там у меня нет аккаунта. Вообще нужен ли он мне?
Telegram это такое приложение для смартфонов по типу Ватцап, только еще круче! Там есть возможность подписываться на группы, создавать свои и еще много что интересного! Ходят слухи что это самое защищенное приложение =)
Доброго времени суток. Отличная статья. Я хотел бы уточнить один момент. Если делать кеширование через этот файл, то гугл перестанет говорить, что время кеширования страниц нужно увеличить?
Привет Сергей! Все зависит от параметров хостинга если не сработают коды в статье, то нужно обратиться в службу поддержки у своего хостера и попросить включить кеширование статичных файлов...
Допустим у меня ни один из способов не сработал! Вопрос решил в службе поддержки хостинга!
Спасибо большое за ответ. Попробую прописать параметры, а там посмотрим)
Вписывать нужно до строчки
# END WordPress
, ну если ты не зналОк. Спасибо) Это я знал) К сожалению ничего не изменилось, Гугл по прежнему так же относится) Ладно, оставлю как есть до смены шаблона) Кстати, вопрос не в тему статьи, но всё же, спрошу тут, сколько заплатили за дизайн? Если конечно не секрет. Давно хочу что то минималистичное, но всё не собраться с мыслями
Сергей тогда напиши хостеру они сами включат, у меня тоже эти коды не работают — особенность хостинга Чуть ранее я писал статью о смене дизайна, почитай! Отдал 5000 за дизайн главной страницы...
Статью о смене дизайна прочитал и всерьёз задумался, что мне тоже пора менять, но что бы не размножать миллионы глупых вопросов, решил спросить про цену тут. Спасибо за совет. Напишу хостеру, может чем помогут)
Дубли -плохо, но редиректы — тормоз, что тоже на есть хорошо...
Раньше я недооценивал значение этого файла, а сейчас использую его для реализации некоторых возможностей. При умелом обращении htaccess действительно является крайне полезным.
У меня (в отличии от оригинального файла Htaccess) есть еще 2 такие сточки:
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ %{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
Подскажите, они нужны? Или это лишнее что-то. Возможно, меня взломали? Спасибо.