Главная / Уроки Wordpress / .htaccess для WordPress

.htaccess для WordPress

Для корректной работы вашего сайта на CMS WordPress обязательно необходим такой файл как .htaccess.

Что это за зверь и зачем он нужен на сайте? Этот файл не входит в комплект поставки вордпресса наверное потому, что каждый его настраивает сам, но существуют общие, и я б сказал, важные, необходимые, общие настройки файла htaccess для WordPress.

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

расположение файла htaccess wordpress

Файл htaccess позволяет:

  1. полностью или частично заблокировать сайт
  2. блокировать доступ по IP
  3. блокировать спам
  4. настроить редирект 301 (перенаправление с www на без www)
  5. настроить редирект  — 302 (временно перемещен)
  6. настроить редирект  — 404 (файл не найден)
  7. управлять статическими данными
  8. увеличить скорость загрузки вашего сайта

Создание файла htaccess для WordPress

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

Теперь можно заняться настройкой. В стандартные настройки входит такая запись:


# 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

Кстати стандартный файл .htaccess для WordPress можно скачать здесь

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

Защита файла .htaccess

Да да, лучше перестраховаться 🙂


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

Защита файла wp-config.php:


<Files wp-config.php>
 order allow,deny
 deny from all
 </Files>

Блокировка по IP

<Limit GET POST>
order allow,deny
deny from xxx.xxx.xxx.xxx
deny from yyy.yyy.yyy.yyy
allow from all
</Limit>

*где ххх и yyy — ip адреса злодеев

Дополнительная защита сайта от спама

Некоторые спам-боты обращаются к файлу wp-comments-post.php напрямую, а этот файл отвечает за комментарии на вашем. Но можно отловить такие запросы проверяя все обращения  на наличие REFERER, ибо у обычных посетителей он будет, а спам-боты как правило им обделены. (для справки: Referer (HTTP referer) — в протоколе HTTP один из заголовков запроса клиента. Содержит URL источника запроса. Если перейти с одной страницы на другую, referer будет содержать адрес первой страницы. Часто на HTTP-сервере устанавливается программное обеспечение, анализирующее referer и извлекающее из него различную информацию. Так, например, владелец веб-сайта получает возможность узнать, по каким поисковым запросам, как часто и на какие именно страницы попадают люди. )

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

Настроить перенаправление с www на без www —  редирект 301

Это необходимо сделать. Зачастую многие игнорируют этот параметр.

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.saaait\.ru$ [NC]
RewriteRule ^(.*)$ http://saaait.ru/$1 [R=301,L]

Настроить перенаправление с без www на www —  редирект 301

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^saaait\.ru$ [NC]
RewriteRule ^(.*)$ http://www.saaait.ru/$1 [R=301,L]

Зачем нужен 301 редирект?

Дело в том, что поисковики считают один и тот же сайт с www и без него разными сайтами. И если вы занимаетесь продвижением сайта, то ссылочный вес может утекать из за такого написания и не правильной настройки. И все внешние ссылки на ваш сайт будут делиться на две части, в зависимости от того, в каком виде размещена ссылка на ваш сайт (с www или же без него), и при отсутствии редиректа вы будете фактически лишаться части ссылок, так как они буду растекаться в итоге на 2 разных сайта.

Удаляем /category/ из адресной строки

По умолчанию категории в WordPress отображаются так: http://urokwp.ru/blog/uroki-wordpress/htaccess-dlya-wordpress
А это не очень хорошо, во-первых очень длинный получается адрес, во-вторых лишняя вложеность в структуре. Сейчас это безобразие исправим с помощью .htaccess:

RewriteRule ^category/(.+)$ httр://www.saaait.ru/$1 [R=301,L]

Теперь вид такой: http://urokwp.ru/uroki-wordpress/htaccess-dlya-wordpress

Включаем кэширование браузера

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

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

Сжатие данных Gzip

Сжатие данных на сайте тоже позволить увеличить скорость загрузки вашего сайта

<IfModule mod_deflate.c>
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
<ifmodule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_item_include file \.js$
mod_gzip_item_include file \.css$ </ifmodule>
</IfModule>

В тему!

не работают файлы перевода WordPress

Если не работают файлы перевода WordPress

Сидел писал новый обзор плагина и в очередной раз столкнулся с проблемой: не работают файлы перевода ...

8 комментариев

  1. Александр

    А в каких местах вставляются эти команды? Или можно как угодно?

  2. Супер сайт, спасибо, все понятно и красиво сделано. Сделал на своем сайте http://www.sasanov.ru и все стало просто летать.

    Спасибо Админу!

  3. Здравствуйте, настроил все запреты к доступу в админ панель сайта. Проверял, все работает! Доступ через wp-admin wp-login.PHP только по моему IP. Но попытки входа не прекратились. Плагин (который у меня стоит) Login Security мне присылает письма о том, что на сайте было три неудачных попыток входа. Вопрос- куда пытается зайти бот,если все заблокировано?

  4. еще можно добавить
    # для сертификата SSL

    RewriteEngine On
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

    вот такой код необходимо вводить для указания срока хранения данных?

    # Enable expirations
    ExpiresActive On
    # Default directive
    ExpiresDefault «access plus 1 month»
    # My favicon
    ExpiresByType image/x-icon «access plus 1 year»
    # Images
    ExpiresByType image/gif «access plus 1 month»
    ExpiresByType image/png «access plus 1 month»
    ExpiresByType image/jpg «access plus 1 month»
    ExpiresByType image/jpeg «access plus 1 month»
    # CSS
    ExpiresByType text/css «access 1 month»
    # Javascript
    ExpiresByType application/javascript «access plus 1 year»

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

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

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.