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

И так, давайте разберёмся с этим файлом поближе.
Обязательно прочтите перед редактированием
- Через файл .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 ленту
и следуйте за мной в
twitter-e
> .htaccess — специальный файл, он лежит в корне сайта (если у вас его нету то надо создать) и выполняет директивы для сервера Апач, то есть через него можно задать инструкции для работы с сервером. Этот файл существует только на Линкус серверах, сервыры с операционной системой Windows имеют другие настройки.
Что за феерический бред? В Windows создать этот файл никто не мешает и он также успешно будет работать.
Вы не правильно меня поняли, если стоит Апач то всё гуд, будет работать хаткесс. Но на Виндовских серверах используют web-сервер IIS и там уже другой файл служит вместо .htaccess — web.config. Я с виндовсом никогда не работал и не знаю можно ли там апач поставить. Но все что я видел хотсинги, с Виндовс системой, используют IIS. Где хаткесс работать не будет.
Спасибо, немного разобрался в этом.
Появилась проблема на Вордпрессе. Изменил настройку постоянных ссылок с /?p123 на /название поста. Потерялся сайт -ошибка 301. В админку зайти могу, файл .htaccess сам исправить не смогу. Поможете?
Как это ошибка 301? И ничего в .htaccess не надо исправлять, потому что WordPress сам создёт перенапровления на новые адреса. Покажите сайт и опишите подробно — что вы изменяли на сайте и.т.п.