BloGGood.ru

Блог Костаневича Степана

До Нового Года осталось:

Блог на разные темы, seo-оптимизация, раскрутка сайта, создание сайта, вкусные эффекты для сайта и многое другое…

Главная » Wordpress » htaccess для WordPress

htaccess для WordPress

2013-03-13 / Вр:23:06 / просмотров: 23470

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

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

Настройки файла htaccess для WordPress.

Стандартный htaccess для Wordpress.

Вот так выглядит стандартный код htacces для wordpress.

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^robots.txt$ - [L]
RewriteRule ^sitemap.xml$ - [L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

Но я вам рекомендую его расширить. Смотрите предлагаемое.

htaccess для WordPress

Безопасность  WordPress и защита.

Закрыть доступ к просмотру всех файлов.

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

deny from all

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

Если вы хотите закрыть доступ пользователя к сайту, например, за нарушение правил и т. д., вы можете заблокировать пользователя по IP.
Для добавления нового IP по причине блокировки продублируйте строку deny.
xx.xxx.xxx.xxx - вместо этого вставляйте IP пользователя для блокировки
x2.xx2.xx2.xx2 - вместо этого вставляйте второй IP пользователя для блокировки, и так до бесконечности.

<Limit GET POST>
order allow,deny
deny from xx.xxx.xxx.xxx
deny from x2.xx2.xx2.xx2
allow from all
</Limit>

Защита изображения на сайте.

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

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?ваш-сайт.com/.*$ [NC]
RewriteRule\.(png|gif|jpg|jpeg)$ http://www.ваш-сайт.com/stopimg.gif [R,L]

Если кто-то решит установить картинку, хранящуюся у вас на сайте, то увидит вместо ожидаемого результата картинку с предупреждением  stopimg.gif

Защита от Спама.

Зачастую многие спам-боты обращаются напрямую к файлу, который обрабатывает комментарии пришедшие с сайта, этот файл называется wp-comments-post.php. Можно выловить спам-бота от живого пользователя через обращение к файлу wp-comments-post.php на наличие REFERER. При добавлении комментариев, у пользователя он есть, а вот у спам-бота его нет. Но этот метод не является 100% защитой от Спама,  воспользуйтесь дополнительно плагином.
Не забудьте поменять "ваш домен.ru" на ваш (5-тая строка ).

# защита комментария от Спам-бота
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*ваш домен.ru.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]

Запретить доступ к папке wp-content и wp-includes.

Все пользователи  WordPress знают, что в папке "wp-content" хранятся все плагины и темы, картинки и многое др. Рекомендую защитить папку "wp-content" от нехороших людей (редисок).

Создать новый файл htaccess в папке "wp-content" на хостинге с таким кодом (эти же действия сделайте для папки "wp-includes"):

Order deny,allow
Deny from all
<Files ~ ".(xml|css|jpe?g|png|gif|js)$">
Allow from all
</Files>

Запрет доступа к файлу wp-config.php

В WordPress файл "wp-config.php"  содержит всю важную информацию, например, название и пароль к базе данных. Запретим доступ через файл htaccess.

# защита wp-config.php
<files wp-config.php>
order allow,deny
deny from all
</files>

Запрещаем доступ к определенному файлу.

Вы можете защитить файлы плагина css и js.

<Files ~ "\.(js|css)$">
order allow,deny
allow from all
</Files>

○ Запрещаем просмотр нежелательным User-Agent.

Вы можете запретить просмотр сайта некоторым программам, сканирующим сайтам, старые браузерам от которых вы полностью отказались.

SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]
SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
Order Allow,Deny
Allow from all
Deny from env=bad_bot

○ Ограничение доступа к админ-панеле WordPress.

Вы можете разрешить доступ к админ-панеле только вашему IP адресу. Но этот метод подходит, если у вас постоянный IP адрес.
xx.xxx.xxx.xxx - это ваш IP адрес.

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Example Access Control"
AuthType Basic
<LIMIT GET>
order allow, deny
deny from all
allow from xx.xxx.xxx.xxx
</LIMIT>

○ Защита htaccess.

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

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

Редиректы (перенаправления).

Самый простой редирект на новый сайт и страницу.

Если вам нужно автоматически перенаправить пользователей на другой сайт или страницу, укажите в  файл htaccess вот такой код.

перенаправление на страницу сайта.

Redirect 301 / http://ваш сайт.ru/страница.htm

перенаправление на новый адрес сайта.

Redirect 301 / http://ваш сайт.ru/

Внимание: "/" - слеш в конце обязательно.
Пример неправильной записи:
http://ваш сайт.ru
Пример правильной записи:
http://ваш сайт.ru/страница.htm
http://ваш сайт.ru/

Также можно перенаправить со страницы на страницу, при этом сохранит PR старой страницы.

Redirect 301 /путь/старая-страница.htm http://ваш сайт.ru/новая-страница.htm

○ 301 редирект для слияния страниц с www и без (склеить домен).

Чтобы поисковики один и тот же сайт не считали дублированным, домен нужно склеить.  Если выразится более ясным языком, то сайт должен быть доступен только по одному адресу, т.е. либо с www, либо без www.

главным доменом будет с www

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^ваш-домен\.ru$ [NC]
RewriteRule ^(.*)$ http://www.ваш-домен.ru/$1 [R=301,L]

главным доменом будет без www

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.ваш-домен\.ru$ [NC]
RewriteRule ^(.*)$ http://ваш-домен.ru/$1 [R=301,L]

Изменяем страницы ошибок.

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

ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html

401.html, 403.html, 404.html, 500.html - это подготовленые страницы ошибок.

Ускорение сайта через файл htaccess для WordPress.

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

Файлы сайта будут записываться в кэш браузера пользователя и при повторном вызове будут загружаться оттуда, это ускорит скорость загрузки сайта и уменьшит нагрузку на хостинг.

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/bmp "access plus 1 years"
ExpiresByType image/png "access plus 1 years"

Важно: обратите внимание на image/, возможно в вашем случае папку с картинками нужно поменять.

Кодировка сайта.

○ Кодировка по умолчанию.

Чтобы избежать проблемы с кодировкой, можно указать принудительную кодировку - UTF8

AddDefaultCharset UTF-8

Вот и все!!! Не игнорируйте темой "htaccess для WordPress", так как htaccess важен для защиты блога.

С Уважением Webmasterok2009

Понравился пост? Помоги другим узнать об этой статье, кликни на кнопку социальных сетей ↓↓↓

Получай обновления блога!!! Подпишись:

Популярные статьи:

150 Ответов на комментарий - htaccess для WordPress

  1. Мария

    Здравствуйте! Помогите мне. Я меняла этот файл. На каком то этапе вылезла ошибка 500. Перезалила. Теперь как только вставляю хоть что то, хоть какой то запрет помимо стандартного вылетает ошибка 403 о запрете к файлам вп админ. Я в отчаянии. Гугл не помог. Что мне делать. У вас самая лучшая статья о данном файле так понятно все но почему не получается?

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Здравствуйте, Мария. Постараюсь Вам помочь. Вы брали все примеры htaccess с моего блога?

    Ответить

    Мария отвечает:

    Да. Огромное спасибо за оперативность. Я еще покопалась и нашла ошибку. Оказывается нужно было строчку deny from all в начале не ставить. Она видимо запрещала мне дальнейшие махинации. Я убрала ее и дальше все поставила по вашим советам и все получилось ошибки больше не было. Еще раз спасибо за мегаполезную статью!

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Пожалуйста, Мария. Я рад что у Вас, все получилось. Если будут вопросы, обращайтесь. Удачи Вам.

    Ответить

  2. Татьяна

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

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Здравствуйте, Татьяна! Возможно, нужно поменять права доступа файла htaccess. Но я рекомендую обратиться вначале с этим вопросом к Вашему хостинг-провайдеру. Объясните им, что файл не закачивается на сервер. Они Вам скажут, что делать и какие права доступа нужно указать для файла. Пожалуйста, отпишете, когда проблема будет решена.

    Ответить

  3. Татьяна

    Проблема решена, правда такому чайнику, как я, пришлось попыхтеть. Проверила сайт с помощью ai-bolit и нашла в htaccess шелл и кучу прочего хлама. Вредоносный код добавлялся из-за бэкдора, он автоматически перезаписывал этот файл. Сейчас все почистила и htaccess перезаписался сразу же. Вот как-то так. :???:

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Татьяна, я рад, что проблема с файлом htaccess у Вас решилась! Спасибо огромное за комментарий. Удачи вам! Кстати, смотрел Ваш сайт и мне он очень понравился!

    Ответить

    Станислав отвечает:

    Здравствуйте, подскажите, пожалуйста, что такое “Вредоносный код добавлялся из-за бэкдора”? У меня была похожая проблема на Джумле 3. В файл htaccess прописалась всякая хрень, а я не могу не удалить этот файл, не перезаписать, не изменить содержимое. Все возвращается после сохранения. Не придумал ничего лучше, как снести сайт и поменять движок на ВордПресс.

    И еще вопрос по статье (наверное к автору блога) В какую часть кода вставлять все Ваши рекомендации: до основного кода, в основной код или после?

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Здравствуйте, Станислав! Можно поместить код до основного или после основного кода (перед # BEGIN WordPress или после # END WordPress)!

    Ответить

  4. Татьяна

    Спасибо большое, за оценку. Тут у меня еще вопросик по поводу htaccess назрел. Ограничение доступа к админ-панели WordPress по IP можно прописать для двух постоянных адресов, или в обязательном порядке,только для одного?
    Если,можно, то как будет выглядеть?

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    в каталоге админки создайте файл .htaccess с таким кодом:

    # Защита по IP
    
    <Files "admin.php">
    Order deny,allow
    Deny from all
    Allow from Ваш IP адрес
    Allow from другой IP адрес
    Allow form еще один IP адрес
    </Files>
    

    Ответить

  5. Татьяна

    Спасибочки,огромное :smile:

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Пожалуйста! Мне было приятно Вам помочь. Если что, обращайтесь, с радостью помогу, если смогу! :smile:

    Ответить

  6. Ксения

    Добрый день! У меня такой вопрос, а как закрыть категорию с названием темы? Вот к примеру, если такой адрес ввести, то выскакивает ошибка: bloggood.ru/wp-content/themes/bloggood/

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Здравствуйте, Ксения! Запретите доступ к папке wp-content. В папке “wp-content” хранятся все фалы плагинов, вашей темы и т. д. Запретим доступ любопытным лицам. Создайте в папке “wp-content” файл htaccess и установите такой код:

     
    Order deny,allow
    Deny from all
    <Files ~ ".(xml|css|jpe?g|png|gif|js)$">
    Allow from all
    </Files> 
    

    Ответить

    Simon отвечает:

    PS: Такой файл htaccess в папке wp-content закроют работу аудио плеера на всех страницах сайта и файлы для скачивания если таковые имеются, а так-же возможна не корректная работа шаблона в мобильной версии а иногда и в обоих версиях.

    Ответить

  7. Vlad

    Здравствуйте!

    А не могли бы вы проверить мой htaccess?

    Что-то я в нем сомневаюсь немного + хотел поставить 301 редирект для replytocom:

    RewriteCond %{QUERY_STRING} ^replytocom= [NC]
    RewriteRule (.*) $1? [R=301,L]

    P.S. Если что файл потом скину вам на почту…

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Здравствуйте! Все правильно!
    Только не ставьте код внизу файла, иначе редирект для replytocom работать не будет.

    Ответить

    Светлана отвечает:

    Я тоже пытаюсь поставить редирект на replytocom. Но файл не загружается. Ошибка 500, кажется. С чем это может быть связано? Спасибо.

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

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

    Ответить

    Светлана отвечает:

    этот файл очень большой, как мне кажется, для комментария :) могу выслать на почту.
    Еще вопрос не по теме. У Вас на комментаиях стоит плагин для вывода древовидности или кодом прописано (я имею в виду открывание поля для ввода комментария при нажатии кнопки Ответить)?

    Степан => автор блога

    Степан => автор блога отвечает:

    Светлана, отправьте код htaccess через форму “Контакты”.

    Степан => автор блога

    Степан => автор блога отвечает:

    Я Вас понял! Для вывода древовидное комментария я установил плагин WordPress Thread Comment. Таким способом я избегаю от создания дублированных страниц.

    Светлана отвечает:

    Оказалось, что этот файл заблокирован плагином. Сейчас вставила код, не знаю, насколько туда или нет. Изменения произошли, но.. было ?replytocom=922#respond, стало #respond. Это считается перенаправлением или проблема не решена?

    Степан => автор блога

    Степан => автор блога отвечает:

    Светлана, я так думаю, что #respond – это ссылка якорь. Проблема решена!
    Я так понимаю, Вы, Светлана, избавляетесь от дублей страниц?

    Светлана отвечает:

    Да, Степан, избавляюсь :) Но с плагином не очень хорошо получается: кнопка ответить не всегда корректно работает, в хроме она вообще не отображается и стили нельзя отредактировать. Хочу пока обойтись без него, а потом как получится.
    Спасибо.

    Степан => автор блога

    Степан => автор блога отвечает:

    Светлана, может Вам помочь? :smile:

    Светлана отвечает:

    Спасибо, Степан. Я для начала хочу попробовать сделать такую форму без плагина – видела на некоторых сайтах (хотя может и ошибаюсь).
    Но у меня вопрос по поводу дублей к Вам. Разве с #respond или #comment не образуются дубли страниц, ведь это тоже получается другой адрес. Подобные адреса открываются и с тегом Далее и с кнопками соц.сетей… Получается борьбы через одни только комментарии с данным вопрососм не достаточно…

    Степан => автор блога

    Степан => автор блога отвечает:

    Светлана, я думаю, что #respond или #comment не образуют дубли страниц, так как этот ссылка якорь. Но это мое личное мнение, потому могу и ошибаться.

  8. Vlad

    “Все правильно” – это вы о htaccess, или о 301 редиректе?

    Просто когда я смотрел htaccess, обнаружил там слишком много кода…

    В htaccess что код может самостоятельно добавляться, или может я когда-то закинул не совсем стандартный файл?

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Влад, я не видел вашего htaccess. По поводу 301 редиректа, код правильный.
    Код htaccess самостоятельно добавляться не может, либо вы самостоятельно добавили, либо кто-то, либо вредоносный скрипт!

    Ответить

  9. Vlad

    Насчет 301 и так было понятно!! :smile:

    Давайте я скину вам свой htaccess на почту?

    А вы посмотрите и что-то посоветуете… Возможно его вообще нужно заменить на новый… :|

    Хотел посмотреть у вас адрес в контактах, но увы “Почта: даю при необходимости”… :|

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Влад, скопируйте Ваш код htaccess и вставьте в комментарий. Постараюсь Вам чем-то помочь!

    Ответить

  10. Vlad

    Вот мой htaccess:

    # BEGIN WPSuperCache
    
    RewriteEngine On
    RewriteBase /
    #If you serve pages from behind a proxy you may want to change 'RewriteCond %{HTTPS} on' to something more sensible
    AddDefaultCharset UTF-8
    RewriteCond %{REQUEST_METHOD} !POST
    RewriteCond %{QUERY_STRING} !.*=.*
    RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$
    RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\"]+ [NC]
    RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]
    RewriteCond %{HTTP_USER_AGENT} !^.*(2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800).* [NC]
    RewriteCond %{HTTP_user_agent} !^(w3c\ |w3c-|acs-|alav|alca|amoi|audi|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|htc_|inno|ipaq|ipod|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|lg/u|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|palm|pana|pant|phil|play|port|prox|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda\ |xda-).* [NC]
    RewriteCond %{HTTP:Accept-Encoding} gzip
    RewriteCond %{HTTPS} on
    RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{SERVER_NAME}/$1/index-https.html.gz -f
    RewriteRule ^(.*) "/wp-content/cache/supercache/%{SERVER_NAME}/$1/index-https.html.gz" [L]
    
    RewriteCond %{REQUEST_METHOD} !POST
    RewriteCond %{QUERY_STRING} !.*=.*
    RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$
    RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\"]+ [NC]
    RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]
    RewriteCond %{HTTP_USER_AGENT} !^.*(2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800).* [NC]
    RewriteCond %{HTTP_user_agent} !^(w3c\ |w3c-|acs-|alav|alca|amoi|audi|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|htc_|inno|ipaq|ipod|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|lg/u|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|palm|pana|pant|phil|play|port|prox|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda\ |xda-).* [NC]
    RewriteCond %{HTTP:Accept-Encoding} gzip
    RewriteCond %{HTTPS} !on
    RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{SERVER_NAME}/$1/index.html.gz -f
    RewriteRule ^(.*) "/wp-content/cache/supercache/%{SERVER_NAME}/$1/index.html.gz" [L]
    
    RewriteCond %{REQUEST_METHOD} !POST
    RewriteCond %{QUERY_STRING} !.*=.*
    RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$
    RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\"]+ [NC]
    RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]
    RewriteCond %{HTTP_USER_AGENT} !^.*(2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800).* [NC]
    RewriteCond %{HTTP_user_agent} !^(w3c\ |w3c-|acs-|alav|alca|amoi|audi|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|htc_|inno|ipaq|ipod|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|lg/u|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|palm|pana|pant|phil|play|port|prox|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda\ |xda-).* [NC]
    RewriteCond %{HTTPS} on
    RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{SERVER_NAME}/$1/index-https.html -f
    RewriteRule ^(.*) "/wp-content/cache/supercache/%{SERVER_NAME}/$1/index-https.html" [L]
    
    RewriteCond %{REQUEST_METHOD} !POST
    RewriteCond %{QUERY_STRING} !.*=.*
    RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$
    RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\"]+ [NC]
    RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]
    RewriteCond %{HTTP_USER_AGENT} !^.*(2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800).* [NC]
    RewriteCond %{HTTP_user_agent} !^(w3c\ |w3c-|acs-|alav|alca|amoi|audi|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|htc_|inno|ipaq|ipod|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|lg/u|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|palm|pana|pant|phil|play|port|prox|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda\ |xda-).* [NC]
    RewriteCond %{HTTPS} !on
    RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{SERVER_NAME}/$1/index.html -f
    RewriteRule ^(.*) "/wp-content/cache/supercache/%{SERVER_NAME}/$1/index.html" [L]
    
    
    # END WPSuperCache
    
    # BEGIN WordPress
    
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    
    
    # END WordPress
    

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Вы устанавливали плагин WP Super Cache?
    Потому, что эти новые правила отвечающие за кэширование браузера и правильную отдачу страниц записал плагин WP Super Cache.

    Ответить

  11. Ольга

    Здравствуйте! У меня стандартный htaccess, я хочу дополнить и прописать код для 301 редиректа для слияния страниц без www. Куда нужно вставить код в начало или в конец? Или можно в любое место дописать 3 строчки

    Options +FollowSymLinks
    RewriteCond %{HTTP_HOST} ^ваш-домен\.ru$ [NC]
    RewriteRule ^(.*)$ http://www.ваш-домен.ru/$1 [R=301,L]
    

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Здравствуйте, Ольга! Если Вы хотите прописать код для 301 редиректа для слияния страниц без www, тогда Вам нужен вот этот код:

    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www.ваш-домен\.ru$ [NC]
    RewriteRule ^(.*)$ http://ваш-домен.ru/$1 [R=301,L]
    

    Я всегда вставляю код редерикта самый вверх кода .htaccess!

    Ответить

  12. Vlad

    Вообщем сейчас я все те каракули заменил на вот такой:

    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /
    RewriteCond %{QUERY_STRING} ^replytocom= [NC]
    RewriteRule (.*) $1? [R=301,L]
    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} ^attachment_id= [NC]
    RewriteRule (.*) $1? [R=301,L]
    RewriteRule ^index\.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    # END WordPress

    Потом может из вашей статьи еще что-то добавлю… :smile:

    Ответить

  13. Vlad

    Да, плагин стоит!

    А если я htaccess поставил тот что предоставил ниже, с нуля так сказать…

    Плагин запишет сам все обратно?

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Я этого не знаю! Проверяйте файл htaccess в течение недели. Если изменений никаких нет, значит, плагин уже ничего обратно не запишет!

    Ответить

  14. Vlad

    А то что он записал – это необходимо для его нормальной работы и все потом нужно восстановить?

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Влад, вы знаете для чего установили плагин WP Super Cache? Проверьте сайт, если функция плагина WP Super Cache работает правильно, значит все гуд!

    Ответить

  15. Vlad

    Да, знаю!

    Вообщем в плагине выбивало: “Необходимые для работы плагина права были изменены или отсуствуют. Прокрутите страницу вниз и нажмите кнопку Обновить правила Mod_Rewrite.

    Пришлось обновить…

    Обновил и все снова стало на свои места!

    В принципе я видел метки плагина, просто не думал, что весь код идет от него…

    Спасибо за уделенное время!
    :smile:

    Ответить

  16. Сергей

    разместил ваши коды в своем .htaccess и сайт умер :sad:
    ошибка 500.

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    какой именно код, он здесь не один?

    Ответить

  17. Галина

    Степан, очень рада, что наткнулась в многочисленных поисках на вашу статью – по сравнению с другими, очень внятно и доступно. Но поскольку с темой htaccess столкнулась вообще впервые, трудности с пониманием все равно возникли. Заглянула – он у меня есть, но там какая-то абракадабра написана, нужно, видимо, срочно создавать. Вопрос первый: имеющущийся файл в корне сайта убить и загрузить заново или можно просто стереть “абракадабру” и скопировать все коды, когда я их составлю?
    Вопрос 2. Самый для меня сейчас больной – как правильно перекрыть кислород sputnikBot – очень он меня достал. Почему и вышла на тему htaccess. Известен его заголовок User-Agent – Mozilla/5.0 (compatible; SputnikBot/2.3). В общем, пишу сейчас и вздыхаю: вдруг поможете разобраться? :cry:

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Здравствуйте, Галина!
    Ответ на вопрос №1 – можете удалить старый htaccess с абракадаброй и залить новый. Можно стереть абракадабру и скопировать все коды которые Вы составите. Здесь разницы нет.
    Вопрос №2 –
    Чтобы защититься от sputnikBot, нужно прописать:

    RewriteEngine on
    RewriteBase /
    RewriteCond %{HTTP_USER_AGENT} ^sputnikBot
    RewriteRule ^.*$ - [F]
    

    Для запрета нескольким ботам, нужно добавить еще строку:

    RewriteEngine on
    RewriteBase /
    RewriteCond %{HTTP_USER_AGENT} ^sputnikBot [OR]
    RewriteCond %{HTTP_USER_AGENT} ^имя бота [OR]
    RewriteCond %{HTTP_USER_AGENT} ^имя бота
    RewriteRule ^.*$ - [F]
    

    Галина, напишите результат.

    Ответить

  18. Галина

    ОК, спасибо огромное, Степан! Я за это дело засяду во второй половине недели – сейчас цейтнот жуткий навалился. И непременно напишу, что у меня из этого получится! :smile:

    Ответить

    Галина отвечает:

    В общем, отчитываюсь: весь лист htaccess еще не составила, но этого бота первым делом засунула под запрет – вроде бы, все, как вы велели. Первые дни была красота, а потом опять нет-нет, да и случается “перегруз”. Уже не так почти непрерывно, как было, но все же происходит. Или он все же как-то прорывается ко мне, или кто-то еще у меня бродит и грузит – пока не поняла, как это самостоятельно проверить.
    Но у меня еще к вам вопрос – стыдно, что задаю его, но уж лучше покраснею немного. Тот файл htaccess, что уже был в корневой папке – пока не решилась его удалить без консультации. В общем, “наш”, т.е. составленный с вашей помощью, htaccess.txt, а тот просто htaccess. И написано в нем примерно следующее: “# BEGIN WPSuperCache RewriteEngine On RewriteBase / #If you serve pages from behind a proxy you may want to change ‘RewriteCond %{HTTPS}…” – это начало, а вообще такого добра там на всю страницу.
    В общем, убивать этот файл? А то как наубиваю все без разбора… :cry:
    И еще раз спасибо вам огромное, Степан!

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Галина, возьмите и скопируйте эти два файла “.htaccess” и “htaccess.txt” на компьютер, в случай если что-то не получиться, можно будет восстановить. Теперь, удалите эти два файла и создайте один новый “.htaccess” без расширения “txt”. Как создать файл “.htaccess” смотрите здесь.
    Вставляете вот этот стандартный код для WordPress:

    # BEGIN WordPress
    RewriteEngine On
    RewriteBase /
    RewriteRule ^robots.txt$ - [L]
    RewriteRule ^sitemap.xml$ - [L]
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    # END WordPress
    

    после этого добавляете остальной нужный код, например для страницы ошибки 404, кодировка сайта и т.д.
    Заливаете этот файл в корень сайта.

    Еще, хотел спросить, как вы видите, что ваш сайт перегружен? Он становиться не доступен в сети или пишется номер ошибки? Или приходит на почту от хостера уведомление?

    Ответить

    Галина отвечает:

    При заходе на страничку (или переходе) вместо странички вываливается оповещение с символикой хостера – мол, сайт перегружен, зайдите позже.
    Буду пробовать применить ваш новый совет. Правда, в моем блокноте не оказалось кода ASNI – возможно, потому, что комп, за которым сейчас сижу, старенький. Доберусь до нормального – начну. А этого бота, как я понимаю, так же прописать, как в первом варианте?

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Галина, мой совет, напишите хостеру про эту проблему, пусть объяснят причину появления этой страницы!
    Да, этого бота пропишите в новый файл “.htaccess”.

  19. Vlad

    Добрый день!
    Прошу помочь с проблемкой.
    В корне стоит сайт с wordpress, в одной из вложенных папок есть самостоятельный скрипт.
    Доступ к вложенной папке с этим скриптом нужно запаролить.
    Через панель управления на эту папку создаю пароль.
    При обращении к папке выдается 404 ошибка с основного сайта.
    Убираю .htaccess из корня сайта (wordpress) и пароль на папке запрашивается нормально. (т.е. парольная защита работает)
    В корневом .htaccess стандартные настройки WordPress
    Пожалуйста подскажите, как поправить правила mod_rewrite, что-бы нормально работал пароль на вложенную папку?

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Здравствуйте! Вставьте в комментарий Ваш код файла “.htaccess”, хочу глянуть на сколько он стандартный! За одно посмотрю, что не так!

    Ответить

    Vlad отвечает:

     
    AddDefaultCharset UTF-8
    Options -Indexes
    
    # 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
    

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Влад, попробуйте удалить 1 и 2 строку:

    AddDefaultCharset UTF-8
    Options -Indexes
    

    Ответить

  20. Vlad

    Удалил.
    Изменений нет.

    Ответить

  21. Игорь

    Здравствуйте :smile: я по поводу: Запретить доступ к папке wp-content и wp-includes.
    Можно просто в .htaccess прописать Options -Indexes, тем самым мы скроем папки и файлы от посторонних глаз, а если через браузер обратится к любому файлу, папке, то получим ошибку 403. У меня данный .htaccess лежит в папке wp-includes, а в wp-content .htaccess с параметром deny from all

    Ответить

  22. Михаил

    Здравствуйте! Там где мы запрещаем доступ к папке wp-content и wp-includes у Вас в 3-й строчке написано так
    Вопрос: между jpe и g должен стоять вопрос или это опечатка???
    Если должен стоять, то зачем? Спасибо если ответите!

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Здравствуйте!
    Тут jpe?g часть регулярного выражения “.(xml|css|jpe?g|png|gif|js)$” Вопросительный знак указывает на то, что буква “е” может, как содержаться в записи, так и отсутствовать. Фактически, часть jpe?g ищет файлы с расширением и jpg, и jpeg.
    А все регулярное выражение какие-то другие из того же списка: xml, css, png, jpg, jpeg gif, js

    Ответить

  23. Михаил

    Спасибо, Степан, за оперативный и подробный ответ!

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    И Вам, Михаил, спасибо за комментарий!

    Ответить

  24. Юрий

    При добавлении кода о запрете картинок получается 500 ошибка

     RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://(www\.)?ваш-сайт.com/.*$ [NC]
    RewriteRule\.(png|gif|jpg|jpeg)$ http://www.ваш-сайт.com/stopimg.gif [R,L]

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Попробуйте вот так:

    Options +FollowSymlinks
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://(www.)?ваш-сайт.com/ [nc]
    RewriteRule .*.(png|gif|jpg|jpeg)$ http://ваш-сайт.com/stopimg.gif[nc]
    

    Ответить

  25. Олеся

    я может быть задам совсем глупый вопрос, но в какое конкретно место стандартного файла .htacces нужно добавлять эти все строки?
    После перед # END WordPress? или после # END WordPress? или куда?

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Добавляете в файл .htaccess после #END WordPress.

    Ответить

    Олеся отвечает:

    спасибо! :smile:

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Пожалуйста! :smile:

    Ответить

  26. Елена

    Здравтвуйте, Степан. Разместила коды в своем .htaccess и не могу попасть на свой сайт, не пускает сервер. Ошибка 403, связанная с сервером. Я переименовала файл .htaccess, в .htaccess.old, обновила страницу и зашла в панель управления. Сохранила изменения и все настройки остались изначальными.
    Что я сделала не так?
    Вот, что у меня было:

    # BEGIN WordPress
    
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    
    
    # END WordPress
    
    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www.helenga\.ru$ [NC]
    RewriteRule ^(.*)$ http://helenga.ru/$1 [R=301,L]
    
    # защита комментария от Спам-бота
    RewriteEngine On
    RewriteCond %{REQUEST_METHOD} POST
    RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
    RewriteCond %{HTTP_REFERER} !.*helenga.ru.* [OR]
    RewriteCond %{HTTP_USER_AGENT} ^$
    RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
    
    
    order allow,deny
    deny from 2.92.20.244
    deny from 66.249.81.197
    deny from 77.37.134.37
    deny from 46.242.29.164
    deny from 82.48.44.125
    deny from 83.246.160.90
    deny from 90.154.92.29
    deny from 95.167.189.87
    deny from 91.201.244.60
    deny from 93.179.68.98
    deny from 94.228.200.21
    deny from 91.212.124.136
    deny from 128.75.10.131
    deny from 157.55.39.79
    deny from 157.55.39.238
    deny from 158.255.161.75
    deny from 207.46.13.144
    deny from 188.244.36.209
    deny from 217.10.47.109 
    allow from all
    

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Здравствуйте, Елена!
    Среди этих IP, нет вашего?

    deny from 2.92.20.244
    deny from 66.249.81.197
    deny from 77.37.134.37
    deny from 46.242.29.164
    deny from 82.48.44.125
    deny from 83.246.160.90
    deny from 90.154.92.29
    deny from 95.167.189.87
    deny from 91.201.244.60
    deny from 93.179.68.98
    deny from 94.228.200.21
    deny from 91.212.124.136
    deny from 128.75.10.131
    deny from 157.55.39.79
    deny from 157.55.39.238
    deny from 158.255.161.75
    deny from 207.46.13.144
    deny from 188.244.36.209
    deny from 217.10.47.109 
    

    Ответить

  27. Елена

    моего IP нет.

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

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

    Ответить

  28. Галина

    Степан, и снова здравствуйте! Для меня этот пост ваш – просто хрестоматия, честно! Уже десятки раз, наверное, заходила – чтобы без него делала! Но сейчас снова “наболело”: создавала в свое время, как вы учили выше в ответ на мои вопросы. Ну, что-то не успела до ума довести. Потом сменила хостинг, все нормально работало. На днях завалил один ip – вырубал сайт(с хостинла сказали, что это гугловский и его надо… заблокировать. Полезла в cPanel и в папке htaccess обнаружило вот такое начало:

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

    Удалять “без спроса” боюсь. Не подскажите, что это и можно ли его грохнуть?
    А за пост ваш и ваш блог – спасибо еще раз вам! :!:

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Здравствуйте, Галина! Это стандартный код для WordPress. Здесь удалять ничего не надо.

    Ответить

  29. Виктор

    Здравствуйте!

    Добавил в хтацесс эти строчки:

    order allow,deny
    deny from all

    order allow,deny
    deny from all
    satisfy all

    Теперь не могу зайти в cPanel. Как убрать их?

    Спасибо!

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Здравствуйте!
    Зайдите через FTP и в корне сайта найдете ваш файл “.htaccess “.
    Скопируйте и откройте файл. Удалите все то, что вам не нужно и залейте назад через FTP.

    Ответить

  30. Роман

    Благодарю за такую классную статью, подобрал себе, то что мне было нужно, только с помощью вас разобрался. :smokes: :smokes:

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Спасибо, Роман, приятно слышать такие слова!

    Ответить

  31. Екатерина

    Спасибо, что разъяснили, а то для меня это пока тёмный лес, я ведь только начинаю вести свой блог. :!:

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Пожалуйста, Екатерина! Буду рад, если Вы частенько будете заходить в гости на мой блог!

    Ответить

  32. Игор

    Скажите пожалуйста, этот код:

    AuthUserFile /dev/null
    AuthGroupFile /dev/null
    AuthName “Example Access Control”
    AuthType Basic

    order allow, deny
    deny from all
    allow from xx.xxx.xxx.xxx

    в какой htaccess вставлять, тот что в корне или wp-admin? Не понятно мне

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Здравствуйте. Вы можете поместить файл htaccess в папку wp-admin и оставить в нем код:

    order allow, deny
    deny from all
    allow from xx.xxx.xxx.xxx
    

    Это достаточно, чтобы запретить доступ к админке всем кроме вашего ip.

    Ответить

  33. Игор

    похоже, что в wp-admin

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    совершенно верно

    Ответить

  34. Сергей

    Добрый день! Я вношу изменения в файл .htaccess, а через некоторое время у меня все изменения теряются и снова первоначальный файл. Видимо, это делает сам WP. Скажите, пожалуйста, как мне запретить перезаписывать файл без моего ведома?

    Заранее спасибо.

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Здравствуйте, Сергей! Проверьте плагины, если у Вас такой, который редактирует файл “.htaccess” из админки? Если есть, попробуйте его деактивировать или запретить делать изменение в файле (если есть такая возможность плагина). Пробуйте через ФТП сделать исправление файла “.htaccess”. Все, смотрите на результат.

    Ответить

    Сергей отвечает:

    Степан, добрый день. Спасибо за ответ. У меня тогда вопрос: каким инструментом можно выяснить, редактирует ли какой-либо плагин файл .htaccess именно из админки?)
    Заранее спасибо.

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Перейдите в админке “плагины” => “установленные”. И проверьте весь список, по названию, какие плагины у Вас установлены. Выделили название плагина, в поиске Яндексе или Гугла проверили, что это за плагин и за что он отвечает.

    Ответить

    Сергей отвечает:

    Степан, благодарю Вас. Так и сделаю)

    Степан => автор блога

    Степан => автор блога отвечает:

    Пожалуйста, Сергей! Будут вопросы, пишите!

  35. Дмитрий

    Здравствуйте Степан. Очень полезная статья! Я как раз борюсь в вредоносным кодом, который прописывается в файлах темы в папке JS. Думаю закрытие всего чего можно должно помочь.
    Не большая просьба, файлов htaccess в папке сайта в разных местах несколько, не могли бы Вы подписать какой код располагать в каких месторождениях файла htaccess. Почитал всю ветку комментариев к статье, и смотрю много у кого возникает такой вопрос.

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Здравствуйте, Дмитрий!
    Если Вы хотите защитить админ – создаете в папке “wp-admin” файл “.htaccess” и вставляете туда весь код для защиты админки.
    Если вы хотите защитить такие файлы как “wp-config.php”, “Защита htaccess” или вставить “Редиректы”, все это прописываем в файле “.htaccess” который находиться в корне сайта.

    Ответить

  36. Дмитрий

    В главной папке сайта, у меня в файле htaccess прописано вот так

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

    Всё ли тут нормально? Немного не совпадает со стандартным, образцом в статье. Ни вирус у меня тут прописался случайно, Который мне уже все нервы вытрепал редиректом на порносайты в мобильной версии моего сайта, который я уже год целый выловить не могу. Только вовремя вылавливаю прописанный им вредоносный код в JS файлах, а сам вирус найти не могу, и специалисты моего хостинга тоже развели руками. Может Вы подскажете где его можно найти, или хотя бы как защититься от прописания вредоносного кода редиректа. Заранее благодарен!

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Дмитрий, здесь все нормально!
    Перенаправление идет со всех страниц или только с определенных?
    У Вас сразу появилась эта проблема после установки “темы” или прошло время? Может после Установки плагина, вы заметили изменение?
    Дайте мне ответы на эти вопросы и может я смогу чем-то помочь.

    Ответить

  37. Дмитрий

    Извините, в предыдущем комментарии, что то не правильно скопирывал код. Вот этот у меня прописан в папке сайта в htaccess

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

    Ответить

  38. Дмитрий

    Очень странно, но отправляю код в коменте, и некоторые строки пропадают. Попробую через форму Вам htaccess скинуть.

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Перед кнопкой “Отправить” в комментариях есть текст “Чтобы добавить в комментарий код HTML, PHP, CSS, JavaScript, нужно сделать так…”. Попробуйте отправить код в комментариях именно таким способом!

    Ответить

  39. Дмитрий

    Через форму не получаестя, у Вас нет поля прикрепления файла. Как можно отправить Вам Степан?

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Вставляйте код прямо в сообщение!

    Ответить

    Дмитрий отвечает:

    Наставил везде htaccess, закрыл всё что можно, вредоносный код удалил. Пока полёт нормальный.
    А перенаправляло сразу, сайт только начинает загружаться, и переброс.

    Ответить

    Дмитрий отвечает:

    Спасибо Степан за статью и за отзыв на призыв помощи. Если опять вирус проявится напишу обязательно!

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Пожалуйста, Дмитрий! Конечно пишите, буду рад помочь!

  40. Дмитрий

    Здравствуйте Степан. Не спасли мой сайт файлы htaccess (( вирус опять в JS файле темы прописал вредоносный код, и права на файл поменял на 777. Пожалуйста, помогите советом, где мне найти эту заразу? Я уже год с ней мучаюсь, никто помочь не может. И пароли везде менял, на базе данных, в FTP, в админке, на админуку дополнительную защиту поствил, можно только 3 раза набрать не правильно, потом блокирует. По вашим советам файлами htaccess все места защитил. Я уже не знаю что делать(((

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Здравствуйте, Дмитрий!
    Попробуйте установить плагин firewall2
    А пробовали другой шаблон, а этот удалить?

    Ответить

    Дмитрий отвечает:

    Степан, второй сайт у меня тоже заражёт, тоже код вылавливаю с него то и дело, а там другой шаблон стоит. Находятся эти два сайта в одной дерриктории www. Удалять этот шаблон мне оч жалко, я столько его пилил под себя. Он стоит у меня уже давно, долгое время было всё нормально. Вы подозреваете, что автор шаблона сам в нём код прописывает?
    А что с кодом в htaccess в последнем моём сообщении в этой ветке? Что за фигня там прописалась? Это нормально?

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Дмитрий, поставьте еще плагин – AntiVirus
    AntiVirus – плагин служит для проверки вашего блога на наличие вирусов и эксплойтов. Есть возможность настроить автоматическую проверку с отправкой отчета на e-mail.
    Также почитайте вот эти две статьи:
    Как проверить сайт на вирусы, найти и удалить их?
    Способы защиты сайта WordPress
    Должно помочь

    Ответить

    Дмитрий отвечает:

    Спасибо Степан за поддержку! Всё сделал как Вы посоветовали. Надеюсь зараза больше не пролезет! Онлай сервисы никакой угрозы не нашли, даже когда сайт был с вирусом, ни Яндекс ни Гугл не видели сайт как вредоносный или опасный.

  41. Дмитрий

    И вот ещё обнаружил, в htaccess дописался код начинается с <FilesMatch подскажите что он делает? Я до него идут коды с вашей статьи.

    # защита wp-content
    Order deny,allow
    Deny from all
    <Files ~ ".(xml|css|jpe?g|png|gif|js)$">
    Allow from all
    </Files>
    # защита wp-config.php
    <files wp-config.php>
    order allow,deny
    deny from all
    </files><FilesMatch "\.(?i:php)$">
      <IfModule !mod_authz_core.c>
        Order allow,deny
        Deny from all
      </IfModule>
      <IfModule mod_authz_core.c>
        Require all denied
      </IfModule>
    </FilesMatch>

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Не могу понять, какой-то запрет на файл. Но я не уверен на 100%, что я прав.

    Ответить

  42. Дмитрий

    И всё таки интересно, как зараза смогла пробраться через 3 настроенных файла htaccess. Один в главной директории сайта, второй в папке вп-контент с кодом для защиты вп-контент, и третий в папке JS темы с кодом защиты этой папки. И именно в папку JS темы и пробрался вредоносный код. Все файлы htaccess с разрешением 444. Ощущение, что у хостера на серваках зараза прописалась, им писал, пишут что жалоб от других нет, и на этом всё.

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Вирус мог быть уже в самой бесплатной теме, в плагинах. Либо написаны с плохой защитой и с ошибками.

    Ответить

    Дмитрий отвечает:

    Степан, ты смог в теме вирус найти? Я заплачу.

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Я Вам отправил на почту свой email

    Ответить

  43. kivgosha

    Здравствуйте! Вставил ваш код в хтачес и сайт пропал, выдает ошибку сервера, поменял на свой адрес сайта сделал все правильно. Что-то не правильно, так что будьте осторожны! Убрал код, все восстановилось. Код вот этот.

    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://(www\.)?ваш-сайт.com/.*$ [NC]
    RewriteRule\.(png|gif|jpg|jpeg)$ http://www.ваш-сайт.com/stopimg.gif [R,L]

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Здравствуйте! Вы так и вставляли код в таком виде как в комментарии? Или все же делали какие-то исправления?

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    И тишина!
    Ладно, для все, кто захочет вставить этот код:

    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://(www\.)?ваш-сайт.com/.*$ [NC]
    RewriteRule\.(png|gif|jpg|jpeg)$ http://www.ваш-сайт.com/stopimg.gif [R,L]
    

    замените “ваш-сайт.com” и на свой, например “bloggood.ru”

    Ответить

  44. kivgosha

    Степан, изменений в коде не делал кроме своей ссылки на сайт вместо (ваш сайт)!

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Напишите в комментариях как вы написали. Хочу проверить все ли верно.

    Ответить

  45. Сергей

    Степан, здравствуйте!
    Можете ли Вы меня проконсультировать? Если перейти по Вашему сайту на адрес http://bloggood.ru/wp-content/uploads/, то видна структура папок.
    Если перейти ко мне на сайт по аналогичному адресу http: //название_сайта/wp-content/uploads/, то у меня вылетает запрет (ошибка 403).
    При этом загруженные картинки индексируются нормально.
    Неудобство в том, что в кабинете вебмастера Яндекса у меня отсутствие доступа к папке uploads фиксируется как ошибка 403.
    Повторюсь, что изображения в этой папке uploads поисковиком индексируются нормально, то вот есть такая ошибка.
    В общем файле htaccess у меня стоит запрет PHP в папке загрузок. Отдельного файла htaccess в папке uploads у меня нет.
    Степан, подскажите, пожалуйста, как можно снять такую ошибку 403?
    Заранее спасибо.

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Здравствуйте, Сергей! Вышлите мне Ваш htaccess

    Ответить

    Сергей отвечает:

    Доброго утра, Степан! Вчера написал Вам через форму обратной связи.

    С уважением,
    Сергей

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Доброе утро!
    Я сегодня посмотрю!

    Ответить

    Сергей отвечает:

    Степан, здравствуйте! Отправил Вам файл на почту.

  46. Сергей

    Здравствуйте. Извиняюсь за глупый вопрос. htaccess стоит стандартный, но все редиректы работают. Т.е что бы ни набирал перед и после домена (www, http, index, / и т.д.), в строке браузера появляется site.ru Т.е. все уже работает и никаких дублей нет?

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Здравствуйте, Сергей! Я бы так сказал, что склейка домена произошла успешно. Если вы используете движок (WordPress, Joomla и т. д.), то это не достаточно, если сайт создавали на чистом html или php то, можно сказать, что никаких дублей у вас нет.
    Если Вас запутал, напишите, объясню подробней.
    Спасибо за комментарий!

    Ответить

  47. Simon

    Исправьте рекомендуемые кода…
    Просмотрите внимательно там почему-то слэши стоят лишние и не правильно…
    Будьте внимательны выставляя код публично,
    Ну, как бы – он должен работать как я понимаю или вы думаете иначе? :)
    \Спасибо.

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    “почему-то слэши стоят лишние” – где именно лишении? Там не один код.
    Если знаете что нибудь больше за меня про файл “htaccess”, расскажите в комментариях.
    А вот последнего предложения я вообще не понял – “Ну, как бы – он должен работать как я понимаю или вы думаете иначе?”
    Спасибо!

    Ответить

  48. Simon

    ВОТ НАПРИМЕР КАК НАДО

    # ot vorovstva kontenta foto
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://(www.)?ваш-домен.ru/.*$ [NC]
    RewriteRule .(png|gif|jpg|jpeg)$ http://www.ваш-домен.ru/hotstop.gif [R,L]
    

    hotstop.gif имя вашей картинки в корне хостинга!

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Хорошо, объясните почему не надо “\”?

    Ответить

    Simon отвечает:

    Кто бы мне объяснил? Нашел три подобных кода все отличаются а вот подробно я не программист код не знаю. Если вы знаете объясните вот три кода разных:

    # Вариает 1
    RewriteEngine On
    #Replace ?mysite\.com/ with your blog url
    RewriteCond %{HTTP_REFERER} !^http://(.+\.)?домен\.ru/ [NC]
    RewriteCond %{HTTP_REFERER} !^$
    #Replace /images/nohotlink.jpg with your “don’t hotlink” image url
    RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

    # Вариаент 2
    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^http://(www\.)?домен.ru/.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^$
    RewriteRule\.(png|gif|jpg|jpeg)$ http://www.домен.ru/hotlink.gif [R,L]

    # Вариаент 3
    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://(www.)?домен.ru/.*$ [NC]
    RewriteRule .(png|gif|jpg|jpeg)$ http://www.домен.ru/hotstop.gif [R,L]

    Вот… если можете объяснить разницу и как всё таки правильно написать этот код? И ещё, как проверить на работоспособность этот код реально?

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Ваш первый коммент меня ввел в ступор, особенно вот эти слова “Будьте внимательны выставляя код публично”.
    Я уж подумал профи пишет :)
    Знаете, бывает, что есть одна цель а к цели можно идти разными путями. Так и в программировании, нет определенной формулы. Можно различными способами дойти до одного и того же результата. У кого-то код получиться короче а у кого-то длиннее.
    Мое мнение, все эти три кода верны. Результат ведь рабочий, а это главное :arrow: .

    Ответить

  49. Simon

    Вот этот код у меня не работает вообще блокирует сайт
    # zaschita wp-content
    Order deny,allow
    Deny from all

    Allow from all

    Там выше было типа он защищает контент… получается этот код закрывает ваще доступ к файлам и сайт не работает.

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    А вот тут я вообще вас не понял. Где Вы этот код взяли. Расскажите что Вы делаете и что хотите сделать.
    Может код не весть отправили. Пробуйте код отправлять через [code]

    Ответить

  50. Simon

    Чет подъело код отправленный вам…

    # zaschita wp-content
    Order deny,allow
    Deny from all

    Allow from all

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Чтобы добавить в комментарий код HTML, PHP, CSS, JavaScript, нужно сделать так: [ code ] ваш код [ /code ]
    * без пробелов [ code ]

    Ответить

  51. Наталья

    Здравствуйте. Подскажите пожалуйста, насчет своих страниц ошибок 404, 401, 500.
    Где располагать файлы страниц ошибок?
    Если по аналогии, то 404.php у меня лежит в папке используемой темы вордпресс, но в корне сайта, в .htaccess нет никого упоминания в стиле “ErrorDocument 404 /404.html”
    Мне нужно добавить страницу 401.php И также ее нужно из папки используемой темы вордпреса подгружать.
    Строка в .htaccess “ErrorDocument 401 /401.php” пишет, что нет такой страницы.
    Подскажи пожалуйста подробнее, куда выкладывать файлы ошибок и откуда на них перенаправлять (может я вообще не то делаю?)

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Насчет страницы 404 почитайте тут: http://bloggood.ru/wordpress/kak-sozdat-prostuyu-stranicu-oshibki-404-na-wordpress.html/

    Ответить

    Наталья отвечает:

    Спасибо, Степан.
    С 404 проблем нет.
    А вот куда положить файл 401.php и 500.php? В корень?
    чтобы сработало правило в .htaccess
    “ErrorDocument 401 /401.php
    ErrorDocument 500 /500.php”
    ?

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Наталья, все в папку с темой

    Ответить

  52. Лариса

    Спасибо большое за статью! Вы не подскажите, что означает эта строка, которая 2 дня назад начала появлятся в моем файле htaccess?

    RewriteRule ^_([0-9]+)_.*_[0-9]+_[0-9]+_[0-9]+_([^\d\/]+)_.*_.*_([0-9]+)_[0-9]+_[0-9]+$ ?$2$1=$3&%{QUERY_STRING}[L]

    Сначала строка появляется одна, потом 2, и сайт уже перестает работать.

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Оно смотрит, если в адресной строке написано что-то подходящее под регулярное выражение ^_([0-9]+)_.*_[0-9]+_[0-9]+_[0-9]+_([^\d\/]+)_.*_.*_([0-9]+)_[0-9]+_[0-9]+$,
    то переадресовывает запрос на /index?$2$1=$3&%{QUERY_STRING}
    Для того, чтобы понять, что там написано (что куда переадресовывается), нужно почитать о замене по регулярному выражению (для любого ЯП – сейчас в них (рег.выр) везде (в любом ЯП) используется синтаксис Perl’a)

    Ответить

  53. Владимир Николаевич

    Степан, искренне благодарю за статью. В комментах, ответы на вопросы понятные. К меня на сайте стоит стандартный .htaccess. До прочтения Вашей статьи я как-то не заморачивался с этим файлом. Оказывается, что он может выполнять так много функций. За некоторые из них люди просят хорошие деньги, у Вас можно взять коды даром! Теперь не знаю, начинать экспериментировать с .htaccess, или оставить так как есть. Как мне представляется, у меня проблема на сайте с тем, что Яндекс вместо 500 записей, показывает такую картинку:
    Загруженные страницы 3076
    Страницы в поиске 2334
    Исключённые страницы 503
    Внешние ссылки 1341
    При проверке Вэб -мастером пишет Отсутствуют мета-теги и перечень страниц, где ссылки в на картинки. Подскажите пожалуйста, как быть? Мне трудно постигнуть науку кодов и других манипуляция для того, чтобы сайт работал нормально.

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Здравствуйте, Владимир Николаевич!
    Если у Вас такая ситуация, почитайте статьи, где рассказывают, как убрать дубли страниц для WordPress

    Ответить

  54. Вася

    Скажите, а как склеить адреса со / и без / в конце адреса?

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Не могу понял зачем вам это нужно.
    Склейка адресов с www и без www для поисковых систем а тут что-то новенькое.
    Где Вы такое вычитали, что нужно так делать?

    Ответить

  55. Татьяна М.

    Здравствуйте,Степан!У меня вот такая проблема,создала недавно сайт,он еще пустой правда.Перевела на ssl.В общих настройках вордпресс изменила путь с http на https.И все,теперь ни один браузер не пускает в админ панель. Пишет “Страница tm-01.ru не работает.Сайт tm-01.ru выполнил переадресацию слишком много раз.”Удаление куков ничего не изменило.Может быть в файле htaccess надо что то прописать?У меня он выглядит вот так:

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

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Здравствуйте, Татьяна!
    С файлом “htaccess” все нормально.
    Какие плагины стояли?
    Вы пробовали писать в тех. поддержку хостинга?

    Ответить

  56. Виктор

    Хотел запретить доступ к папке wp-content и wp-includes. Сделал как написано, возникли проблемы с редактором текста. Т.е. захожу в созданную запись а там белый текст на белом фоне и нет редактора. Пришлось их удалить, без них все ок. Почему так?

    Ответить

    Степан => автор блога

    Степан => автор блога отвечает:

    Сомневаюсь, Виктор, что Вы сделали так, как написано! У меня все работает.
    Распишете до каждой мелочи как Вы сделали.

    Ответить

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

;-) :| :x :twisted: :smokes: :smile: :shock: :sad: :rose: :roll: :razz: :pop-corne: :oops: :o :mrgreen: :lol: :idea: :grin: :gazeta: :evil: :cry: :cool: :coffe: :arrow: :???: :?: :!:

Чтобы добавить в комментарий код HTML, PHP, CSS, JavaScript, нужно сделать так: [code] ваш код [/code]

Subscribe without commenting

Метки: ,

Мои цели на 2016 год:

1). Закончить тему «Bootstrap»

2). Закончить тему «Все про PHP и MySQL»

3). Довести количество статей до 600

4). Добиться стабильной посещаемости 2500 человек/сутки

5). Закончить все статьи, которые находятся в черновиках

6). Создать портфолио и мини интернет-магазин шаблонов

7). Создать книгу

8). Добиться стабильной посещаемости 3000 человек/сутки

9). Довести количество статей до 700

10). Увеличить число подписчиков до 250

Статистика по блогу

Количество записей на блоге: 671
Количество страниц на блоге: 20
Количество рубрик на блоге: 27
Количество меток на блоге: 71
Количество комментариев на блоге: 3683