Настраиваем файл .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 для поиска вариантов решения. Но в любом случае пишите ваши комментарии ниже, постараемся помочь.






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

  • 6 лет назад Ответить

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

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

    • 6 лет назад Ответить

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

  • 6 лет назад Ответить

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

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

      • 6 лет назад Ответить

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

  • 6 лет назад Ответить

    Здравствуйте. А вы не подскажете мне? Я изменила адреса постоянных ссылок, WordPress, как я понимаю и вижу, сам перенаправляет на новые страницы. Но вот в Яндексе и Гугле получаются разные адреса, хотя страница одна и та же. Как мне теперь быть? Делать перенаправление тех страниц? Но они же и так перенаправляются…Буду вам очень благодарна за ответ.

    • 6 лет назад Ответить

      Конкретее и с примером пожалуйста.

  • 6 лет назад Ответить

    Здравствуйте Webchester! Спасибо вам за помощь, правда возник вопрос может из-за .htaccess некорректно отображаться header(шапка сайта)

  • 6 лет назад Ответить

    Здравствуйте, подскажите, пожалуйста, я устанавливала WP напрямую с хостинга, файл .htaccess создался автоматически, как я понимаю, он стандартный… Вы пишите, что если сайт доступен и по www и без, то нужно внести изменения в .htaccsess, чтобы посетитель попадал только на один адрес. Как я уже написала- файл у меня стандартный- но и без склейки доменов в .htaccess у меня любой вариант ввода адреса перенаправляется на адрес без www. Как так? Или я чего-то недопонимаю, в этом деле я совсем новичок..
    И еще подскажите плиз, можно ли вносить изменения в .htaccess когда сайт уже какое-то время существует, все ЧПУ настроено, и сайт отправлен на индексацию?

    • 5 лет назад Ответить

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

  • 4 года назад Ответить

    Здравствуйте!
    Я не могу найти этот файл, где он может быть? Я хочу убедиться, что его нет и создать. И куда кидать созданный?

    • 4 года назад Ответить

      Созданный файл нужно кидать в корень сайта.

  • 4 года назад Ответить

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

    • 4 года назад Ответить

      Чтобы увеличить производительность вордпресс существует специальные плагины. Я использую плагин hyper-cache. Попробуйте, помогает.

  • 3 года назад Ответить

    Здравствуйте помогите разобраться с проблемой , сайт не работает, на хосте говорят — Наблюдаемая ошибка сгенерирована вашей CMS и отключается в административной странице. Я боюсь трогать, так как не понимаю и боюсь вообще сломать сайт, файл .htaccess вот такой —
    # BEGIN W3TC Browser Cache

    Header append Vary User-Agent env=!dont-vary

    AddOutputFilterByType DEFLATE text/css text/x-component application/x-javascript application/javascript text/javascript text/x-js text/html text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon application/json

    # DEFLATE by extension
    AddOutputFilter DEFLATE js css htm html xml

    # END W3TC Browser Cache
    # BEGIN WordPress

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

    # END WordPress
    где тут ошибка?

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

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

Перед отправкой формы: