Настраиваем файл .htaccess для WordPress

25 декабря 2011 года, Размещено в категории: WordPress

Добрый день, давайте поговорим про этот файл.

.htaccess — специальный файл, он лежит в корне сайта (если у вас его нету, то надо создать) и выполняет директивы для сервера Апач, то есть через него можно задать инструкции для работы с сервером. Этот файл существует только на Линкус серверах, сервыры с операционной системой Windows имеют другие настройки.
Настраиваем файл .htaccess для WordPress
И так, давайте разберёмся с этим файлом поближе.

Обязательно прочтите перед редактированием
- Через файл .htaccess можно полностью заблокировать доступ к сайту, если вы не знаете что делаете, то лучше не трогайте его.
- Сделайте на всякий случай копию старого файла .htaccess, это вам позволит быстро всё восстановить, заменив им новый файл.
- Пользуйтесь текстовым редактором Notepad++, он намного лучше отображает код и не создаёт лишних тегов, символов в сохраняемых файлах.

Основные настройки

Самое первое, что создаёт WordPress, так это вот такой код:

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

Мы задаём указания для сервера, где поясняем — где лежит наш блог. Если в корне сайта, то подходит код, который указан выше, если например сайт на WordPress-е находится в каталоге, то надо указывать вот так:

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

Безопасность WordPress

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

<Files ~ "^.*\.([Hh][Tt][Aa])">
 order allow,deny
 deny from all
 satisfy all
</Files>

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

C помощью этих директив, вы сможете заблокировать пользователя по IP, если вы например не хотите, чтоб он посещал сайт. Строка deny дублируется, и блокировать можно сколько угодно ip адресов.

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

Закрываем доступ для спамеров

Многие спам боты обращаются напрямую у файлу wp-comments-post.php, который отвечает за приём комментариев на сайте. На этом можно и выловить их, проверяя все обращения к файлу wp-comments-post.php на наличие 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>

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

Редиректы

Или так называемые перенаправления, они тоже делаются через файл .htaccess.

Самый простой редирект одной страницы, делается вот так:

RewriteEngine on
Redirect 302 /page http://google.ru

Перенаправление всего сайта при склейке, то есть два сайта должны быть идентичными, выполняется вот так:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://newdomain.ru/$1 [R=301,L]

R=301 – редирект постоянный и сайт переехал навсегда. Это означает, что поисковые системы будут передавать весь ссылочный вес новому домену.

Склейка домена с www и без

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

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

В этом примере, главным доменом будет www.domain.com, а domain.com будет склеено к нему. И все пользователи, которые будут запрашивать домен domain.com, перемесятся на www.domain.com. В обратной ситуации, меняем www по аналогии с примером.

Вывод

Файл .htaccess для WordPress имеет очень много настроек и тонкостей, в этой статья я привёл базовые директивы, которые должен знать каждый вебмастер. Но для специфических задач, вам надо либо экспериментировать, либо идти в google для поиска вариантов решения. Но в любом случае пишите ваши комментарии ниже, постараемся помочь.

Чтобы постоянно получать новые посты с блога, подпишитесь на Подписка через RSS-feed rss ленту и следуйте за мной в Следовать в Твиттере twitter-e

Интересно будет почитать:

  1. Дорогой гость Сказал:

    > .htaccess — специальный файл, он лежит в корне сайта (если у вас его нету то надо создать) и выполняет директивы для сервера Апач, то есть через него можно задать инструкции для работы с сервером. Этот файл существует только на Линкус серверах, сервыры с операционной системой Windows имеют другие настройки.

    Что за феерический бред? В Windows создать этот файл никто не мешает и он также успешно будет работать.

    • Webchester Сказал:

      Вы не правильно меня поняли, если стоит Апач то всё гуд, будет работать хаткесс. Но на Виндовских серверах используют web-сервер IIS и там уже другой файл служит вместо .htaccess — web.config. Я с виндовсом никогда не работал и не знаю можно ли там апач поставить. Но все что я видел хотсинги, с Виндовс системой, используют IIS. Где хаткесс работать не будет.

  2. Roow Сказал:

    Спасибо, немного разобрался в этом.

    • Сергей Мак Сказал:

      Появилась проблема на Вордпрессе. Изменил настройку постоянных ссылок с /?p123 на /название поста. Потерялся сайт -ошибка 301. В админку зайти могу, файл .htaccess сам исправить не смогу. Поможете?

      • Admin Сказал:

        Как это ошибка 301? И ничего в .htaccess не надо исправлять, потому что WordPress сам создёт перенапровления на новые адреса. Покажите сайт и опишите подробно — что вы изменяли на сайте и.т.п.

Прокоментировать