15 директив, или Настройка .htaccess — ускорение, защита, редиректы

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

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

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

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

Но прежде всего, что это за зверь такой — .htaccess?

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

Кстати, этот файл работает только на серверах с Apache, но подавляющее большинство хостеров на обычном виртуальном хостинге устанавливает именно это ПО. Так что инструкция почти универсальна. Все это теория, и теория не очень понятная. Но если я процитирую википедию, например, то будет еще хуже, поверьте :). Потому сразу к практике, и все станет ясно.

настройка .htaccess

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

Защита блога

Тонкой настройкой .htaccess можно подменить функционал некоторых плагинов-защитников. Смотрите сами:

Запрет доступа к сайту

Запрет доступа к сайту с определенных IP:

Order Allow,Deny
Allow from all
Deny from 192.168.0.1

А следующая директива, напротив, открывает доступ к сайту только с указанных IP:

Order Deny,Allow
Deny from all
Allow from 192.168.0.1

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

User-Agent — это любой браузер или же программа, скрипт, которые могут просматривать ваш сайт. По многим причинам вы можете захотеть запретить каким-то из них доступ к вашему сайту.Полный список всех 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

Запрет доступа к важным файлам извне

В целях безопасности настоятельно рекомендуется закрывать доступ к файлам .htaccess и wp-config.php. Следующий код как раз это и делает.

# защищаем wpconfig.php
<Files wp-config.php>
order allow,deny
deny from all
</Files>
#защищаем htaccess
<Files .htaccess>
order allow,deny
deny from all
</Files>

 Ограничение доступа к админке

Если вы обладатель статического IP, то имеет смысл разрешить доступ к админке только с вашего IP-адреса.

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Example Access Control"
AuthType Basic
<LIMIT GET>
order allow, deny
deny from all
allow from Ваш IP
</LIMIT>

Ни в коем случае не делайте этого , если ваш IP динамический — не попадете в консоль блога, пока не удалите по FTP вышеприведенный код из .htaccess.

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

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

Перенаправление RSS-лент на FeedBurner

Сколько бы слухов не ходило о том, что скоро FeedBurner накроется медным тазом прекратит свое существование, однако он по-прежнему живее всех живых. А потому можно создать редирект, который будет направлять все ваши ленты через этот сервис.

RedirectMatch 301 /feed/(atom|rdf|rss|rss2)/?$ http://feedburner.com/yourfeed/
RedirectMatch 301 /comments/feed/(atom|rdf|rss|rss2)/?$ http://feedburner.com/yourfeed/

В этом коде не забудьте изменить адреса на свои из фидбернера.

Перенаправление при ошибках

По умолчанию WordPress создает перенаправление только при ошибке 404. Однако можно создать свои страницы ошибок и для других вариантов:

ErrorDocument 400 /errors/badrequest.html
ErrorDocument 401 /errors/authreqd.html
ErrorDocument 403 /errors/forbid.html
ErrorDocument 500 /errors/serverr.html

Укажите свои адреса страниц, на которые будете перенаправлять пользователей вместо /errors/*.html.

Редирект 301 и 302

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

RewriteEngine on
Redirect 301 /old-page http://ваш-урл.ру/new-page

301 редирект имеет массу полезных применений. Так, например, его использует плагин для превращения всех внешних ссылок во внутренние.

Есть еще одно полезное применение этого редиректа. Всем известно, что древовидные комменты WordPress генерируют массу дублей c параметром «replytocom» в урле. Конечно, их можно закрыть в robots.txt. Но проблема в том, что все записи в robots.txt являются только рекомендациями, и ПС не обязаны им следовать. Вот Google и не следует, добавляя все такие страницы в дополнительный индекс. И тут нам на помощь и приходит 301 редирект.

С его помощью мы перенаправим все страницы дублей на страницу самой записи, к которой они относятся:

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

Теперь необходимо открыть в роботсе страницы этих дублей, если они ранее были закрыты и обязательно проверить работоспособность редиректа. К примеру, у меня сейчас вот эта ссылка — web-koshka.ru/bazovy-e-znaniya/piwik.html?replytocom=3947 редиректит на саму запись, можете убедиться.

Правда, Google очень и очень медленно переиндексирует старые страницы, поэтому процесс выпада таких дублей с replytocom будет небыстрым…

302 редирект сообщает о том, что страница была перемещена временно, а потому нужно индексировать и старую, и новую.

RewriteEngine on
Redirect 302 /old-page http://ваш-урл.ру/new-page

 Склейка зеркал

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

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

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

Здесь главным зеркалом указывается адрес без «www». Нужно наоборот — просто внесите небольшие изменения в код.

Убираем дубли главной страницы

Зачастую главная страница сайта (особенно это касается Joomla) может быть доступна по нескольким адресам: сайт.ру, сайт.ру/index.html, сайт.ру/index.php, возможны и другие варианты. Два указанных мной закрываются следующим кодом, а остальные дубли можно закрыть по аналогии.

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://сайт.ру [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://сайт.ру [R=301,L]

 Защита от хотлинков

Очень неприятно бывает, когда у вас копируют вашу собственную уникальную картинку и размещают ее на своем сайте. Неприятно вдвойне, когда ее не копируют, а просто ставят на нее ссылку и подгружают себе с вашего сервера, тем самым разгружая свой сайт и создавая дополнительную нагрузку на ваш. Таким умникам можно отдавать не ту картинку, на которую они нацелились, а какое-нибудь специально созданное изображение с предупреждением:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?ваш-урл\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
#Замените путь к картинке
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/noHL.jpg [L]

В последней строке укажите путь к картинке, которую хотите отдавать.

Оптимизация и ускорение блога

Последняя группа директив предназначена как раз ускорения блога и его технической оптимизации.

GZIP сжатие

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

<FilesMatch "\.js.gz$">
ForceType text/javascript
Header set Content-Encoding: gzip
</FilesMatch>
<FilesMatch "\.css.gz$">
ForceType text/css
Header set Content-Encoding: gzip
</FilesMatch>
<FilesMatch "\.js$">
ForceType text/javascript
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !".*Safari.*"
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule (.*)\.js$ $1\.js.gz [L]
ForceType text/javascript
</FilesMatch>
<FilesMatch "\.css$">
ForceType text/css
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !".*Safari.*"
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule (.*)\.css$ $1\.css.gz [L]
ForceType text/css
</FilesMatch>

Перед тем, как использовать этот код, нужно убедиться в том, что gzip сжатие поддерживается хостингом. Обычно поддерживается, но лучше спросить :).

Кеширование в браузере

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

Header append Cache-Control "private"
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"

 

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

Всем удачного дня, дамы и господа, и до скорой приятной встречи :).

89 коммент.
  1. Лариса, спасибо, очень полезная статья. Познакомился я недавно с этим htaccess. 🙂 Вот из статьи хотя бы узнал для чего он вообще нужен.
    А изображения у меня так воровали. 🙂
    Плагин кеширования это не то?

    • Нет, Василий, плагин кеширует на сервере, а эта функция работает на уровне браузера. Саша Майер хорошо тут ниже ответил на этот счет, не буду повторяться.

      • Мимо

        Я бы сначала объяснил, что такое Order, Allow и Deny. И почему записываются именно в этом порядке, а не в другом. Логика самой записи должна быть. Не все могут самостоятельно разобраться в этом. ИМХО.

        • Возможно, Вы правы. Но это скорее тема отдельной статьи. А здесь я просто хотела дать читателям готовые коды-рецепты, которые действительно работают. Не все могут разобраться, но откровенно говоря, это же и не всем нужно.

  2. Я тока последнюю ерунду использовал — кэширование. Только оно слетает периодически. Запишу в этот файлик, поработает, а потом он снова чистый. Как так?

    • Александр, это не есть хорошо 🙂 Вероятно какой-то плагин работает с этим файлом, и перезаписывает его на пустой. Как вариант, выставить минимальные права на .htaccess, чтобы было возможным только его чтение, а запись в него запрещена. Особенно это хорошо, если правила в .htaccess прописываются самостоятельно, а не с помощью плагинов. Например, всем известный Better WP Security как раз работает через .htaccess, внося в него свои собственные правила.

    • Да, Саш, это кто-то у тебя диверсантит) У меня было такое — вообще блог самостоятельно вырубался после того, как этот файлик кто-то почистит. Только смена прав спасла.

      • Интересно, что его не чистит полностью. Исчезают как раз эти строчки про кэширование в браузере. Все остальное (у меня это еще GZIP сжатие) остается.
        Поработает пусть еще раз так. Если слетит, буду спрашивать как менять права

  3. Так! Статью сохранил в енота, надо будет заняться на досуге. Вот только… Скажи, Ларис, а как должен выглядеть нормально настроенный файл .htaccess, но без излишнего, типа закрытия по айпишнику или редиректов? Ну так, самое основное — кеширование (кстати, а чем это кеширование от кеширования плагином отличается?), защита, сжатие… Что еще?

    • Артем, позволю себе ответить за Ларису 🙂
      Универсального .htaccess можно сказать не бывает. Тут все индивидуально и под собственные нужды. Ну, разве что, запрет доступа к wp-config.php, .htaccess и т.п. должно быть прописано у каждого.

      По кэшированию. Плагины кэшируют данные на стороне сервера, и отдают пользователю статическое содержимое (грубо говоря, голый html). В то время как кэширование в браузере — это дополнительное ускорение. Ну, т.е. если я зашел к Ларисе на блог (и кэширование в браузере у меня включено), то при следующем заходе, различные файлы, как-то — картинки, скрипты, уже не будут загружаться с сервера. Они будут подгружаться из локального кэша. Кэширование в браузерах включено у абсолютного большинства пользователей. Некоторые отключают его вручную (или, например, в режимах «Инкогнито» кэш тоже не используется). Как-то так.

      • Саша, после тебя, как обычно, добавить нечего 🙂

      • Спасибо, Саш. По файлу понял, буду думать, а вот по кешированию: получается, что для ускорения блога надо делать и такое кеширование и плагин ставить? Конфликтов не будет?

        • Ну да, Артем, и плагин, и браузерное кеширование. Не будет конфликтов, сама этим вопросом озадачивалась, когда решила его включить.

          • А прирост в скорости загрузки ощущается или так?

        • Хороший ты вопрос задал… Прирост-то по-любому есть, но насколько он ощутимый…

          • Я для себя вывел следующее. Пусть это в большей степени чисто субъективные выводы, но как по мне, они имеют под собой вполне реальные обоснования (хотя я не могу это основательно аргументировать, поэтому ИМХО =)). Обоснования, в том числе, и в плане наблюдений (а не показателей «супер-пупер» сервисов).

            1. Кэширование на стороне сервера + кэщирование в браузере — эти методы однозначно стоит комбинировать, даже чисто по объективной логике вещей. Это даст прирост скорости загрузки (точнее отображения) на стороне пользователя (посетителя) сайта. Сомневаться в обратном просто априори глупо.
            Другой вопрос в том, стоит ли принудительно прописывать браузерный кэш, если абсолютное большинство пользователей и их браузеров, это делает по дефолту? Здесь я в небольшом замешательстве, если честно. Хотелось бы услышать мнение коллег-блогеров, в т.ч. и мнение Ларисы, в первую очередь 😉
            2) Некоторые сервисы по мониторингу загрузки (в т.ч. и Google’s Page Speed, и похожий сервис на моем хостинге) прямо кричат мне, что следует заюзать кжширование в браузере (для блогинфо.биз я его так и не активировал). При всем при этом, скорость загрузки сайта и его страниц практически во всех сервисах показывается, как «медленная» или «очень медленная». Но на деле я наблюдаю совершенно другую картину — сайт летает: с любого IP-адреса, безо всякого кэширования на стороне клиента (аналог режима «иногнито») и т.п. Даже через Tor, где скорость соединения итак не высока, сайт открывается моментально. Отсюда мой личный вывод (точнее вопрос) — кому верить? Собственным глазам, или сервисам мониторинга загрузки? Нет, я понимаю, конечно, что мы — пользователи — видим загрузившуюся страницу почти моментально, но по факту она может еще некоторое кол-во времени догружаться (скрипты там всякие, и т.п.). Но я в этом плане смотрю не на «фэйс» загруженной страницы, а на прогресс-бар в браузере. И все проходит действительно моментально. Я вот наблюдал блогинфо.биз и еще один свой сайт. По Алексе оба сайта показывают примерно одинаковое значение ~ 3.048 Sec. По сути это очень много. Но субъективные ощущения показывают совершенно разные выводы. Блогинфо — летает (в т.ч. и в админке), а второй сайт — грузится дольше, в админке порой даже очень долгие зависания, вплоть до отбоя по тайм-ауту (редко, но бывало). На том, втором сайте, стоит кэширование плагином + кэширование специальным кэширующим сервером (Varnish). На блогинфо — только плагин.
            Со своей стороны (сторона клиента) экспериментировал по разному: и с кэшем в браузере, и без кэширования, и с отключением всех скриптов, и без отключения, и с российского IP, и с иностранных (VPN, прокси, Tor). Все эксперименты показали одно: блогинфо.биз однозначно работает шустрее, чем второй сайт. При всем при том, что тот же тулбар Алекса показывает идентичные результаты у обоих сайтов.

            Пока из этого всего я могу сделать однозначный вывод — не стоит на веру полагаться на всяческие «page speed» сервисы.

            ps. пользуясь гостепреимством нашей любимой кошечки Ларисы, хочу попросить всех присутствующих, по возможности, «погонять» мой блог. И отписаться (можно в обратную связь) о том, как грузится блог, есть ли зависания. Может где-то что-то глючит и проч. Для более целостной картины.

            Собственно, нам — коллегам-блогерам — такую тенденцию вообще нужно брать себе на вооружение. И сообщать дружественным ресурсам о каких-то выявленных проблемах. Не знаю, может это утопия, но всем от такого взаимодействия был бы только плюс =) Ведь сервисы — это сервисы, это боты. А важнее то, как реальные люди воспринимают ресурс.

            Главное — не бояться обидеть автора и хозяина блога каким-то замечанием. Вот, например, у Ларисы в начале статьи есть «запара» — «как огня боятся боятся редактирования». Лариса ведь не огорчится на меня, что я ей об этом сказал? =))

          • После замечания Александра даже не знаю, делать ли кеширование в .htaccess?

          • Александр, скорость загрузки сайта хорошая. Но у меня быстрый интернет.

          • Саша, блогинфо реально быстро работает. У меня обычная скорость инета 20-25 кб/с (сочувствуйте 🙂 ), но всегда открывается практически моментально.
            Не знаю, как насчет дефолтного кеширования, Саш, но у меня после его принудительного включения визуально блог стал шустрее. Да и почему бы не включить, в любом случае не навредишь же.
            Не, я не огорчусь — забаню просто в следующий раз))) Все грожу-грожу, скоро реализую :D. А если серьезно, то спасибо — действительно последние дни запариваюсь ужасно, вроде и читаю, но ляпы проскальзывают…

      • Саша, к нижеследущему комменту.
        Пока твой сайт у меня открывался, я успела досчитать до 11, причем медленно.
        Мы, конечно, можем не верить сервисам, но ПС-то на них ориентируется. 🙂 В частности Гугловский Пейджспид для Гугла по-любому авторитет:)

        • Вот даже и не знаю почему так. Я специально как только не тестировал свой сайт, всегда очень быстро грузится. Ну, может почти всегда, бывают еще моменты, когда интернет-канал перегружен, а если еще и сам канал не быстрый, тогда это ощутимо повлияет. Вот и Лариса говорит, что сайт быстро грузится. Хотя в разных сервисах скорость показывается очень низко.

          Ларис, в последнее время у тебя сайт заметно ощутимей ускорился =) Даже не замечаю никаких «подтупливаний» или чего-то подобного.

          • Значительно ускорился, говоришь? Ты будешь смеяться, но у меня долгое время неправильно был установлен код браузерного кеширования… То есть я-то думала, что оно у меня есть, а на самом деле не было — во время восстановления блога в последний раз чего-то там намудрила в .htaccess.
            Зато теперь уверенно могу сказать, что включение кеширования в браузере + gzip-сжатие очень здорово ускоряют блог, результат налицо.

          • Лариса, а можно про gzip поподробнее.
            Я проверял свой сайт в SEOqwake, там было написано, что у меня gzip не используется. Проверил у тебя — все нормально, включено. А как это включается?

          • Лариса, реально ускорился. Раньше, помнишь, я тебе говорил, что долговато грузится. Сейчас намного шустрее. Ну, а насчет «долгое время», я к тебе и не заходил долгое время. Вернее заходил, но чисто в режиме read only =)

          • Да я и сама заметила. Значит, все-таки включение браузерного кеширования — это не номинальное ускорение, а вполне ощутимое.

  4. Александр Викторович

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

  5. Спасибо за доходчивое объяснение. Получилось бы из этого ещё и доходчивое понимание, если научиться фразы директив интерпретировать на человеческий язык. Вот, например, в тексте моего файла .htaccess :
    # BEGIN WordPress

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

    # END WordPress
    Мне непонятно абсолютно всё. Такой уж я недоразвитый. Где почитать о подобных директивах?

    • Сергей, конкретно у Вас прописано только ЧПУ и устранение дублей с index.php при помощи редиректа. А почитать вижу уже нашли где, спасибо за ссылку)

  6. Кстати, Вторая и предпоследняя строки файла при записи комментария исчезли.

  7. Попробую привести полностью
    # BEGIN WordPress

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

    # END WordPress

  8. Может так получится ( без тегов «»
    # 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

  9. Не сдержал слова. Но в тему. Ссылка на статьи по .htaccess.
    https://sprinthost.ru/support/howto/htaccess.html

  10. Долго думал что это за replytocom, а потом дошло, что у меня древовидные комменты плагином сделаны, и у него ответ на коммент яваскриптом прописан)

    Спасибо за подборочку, кое-что себе добавил)

    Кстати, похоже те проблемы что были с сайтом все таки вызвал именно better wp security своими изменениями в htaccess, как сказали в техподдержке там прописалось правило о запрете доступа к файлам сайта. Правда непонятно почему когда я удалил все правила с этого файла страницы по прежнему не грузились…

    • Сергей, может локальный кэш не сбросил просто? Поэтому ошибки отдавались не по факту от сервера, а тупо из кэша браузера?

      «правило о запрете доступа к файлам сайта.»

      Это конкретно Гигахост сказали? Мне тоже самое говорили, правда проблема в другом была. Вкратце — в один момент рухнул сайт (он был на варнише), на аккаунте висит еще один сайт (без варниша). Второй сайт так, тестовый. В общем, написал в саппорт, ждал ответа, но решил не дожидаться, а в экспериментальных целях отключить варниш. А-записи сменились достаточно быстро, и сайт сразу же поднялся. После, когда уже общались с саппортом, мне говорили, мол трабл в некоторых правилах в htaccess, мол надо снять ограничения denny from all. Но эти ограничения стояли только на служебные файлы, на которых они и должны стоять. И кроме того, я, ничего не менял локально, сменил только А-запись (убрав прокси-варниш) — и сайт ведь поднялся. В общем, так мы и не доразобрались до конца, в чем была проблема. Но это точно не из-за правил дени фром олл (запрет на доступ к файлам), потому как:
      а) доступ был запрещен только к служебным файлам, причем всем, независимо от IP-адреса
      б) правил я не менял, а сменил только А-записи на Гигахостовские без Варниша.
      в) грешу на конфликт с Варнишем, что меня очень огорчает 🙁 Хорошая эта штука, Варниш

      • Да, забыл сказать =) Тот, второй сайт без варниша все это время прекрасно работал. Поэтому я, собственно, и стал глядеть «в сторону» варниша.

        • У меня варнишь не включен, и все равно падает сайт
          Короче мне сказали что в логе ошибки было следующее:
          Permission
          denied: /home/www/ruskweb.ru/.htaccess pcfg_openfile: unable to check htaccess
          file, ensure it is readable, referer: http://ruskweb.ru/wp-login.php

          Я так понимаю параноиу bwps закрыл каким то образом доступ ко всем файлам)

          Насчет кеша браузера может быть.. хотя страницу я по моему неоднократно обновлял.

          • Видимо да, каким-то образом был закрыт доступ к хтассесс. Похожее было у одной моей знакомой, и тоже BWS установлен. Вообще, я смотрю, часто стала проблема с самопроизвольным изменением хтассесс появляться…

        • А я сразу с Варнишем не подружилась, помнишь, жаловалась тебе как-то?

          • Ага, помню. Но я вот его сейчас отключил пока. BWS действительно конфликтует с Гигахостовскими серверными настройками. Особенно, как мне кажется, после обновления самого плагина, или после обновления каких-то его настроек сайт может слететь временно. В чем конкретно «подвох» понять сложно очень. Знаний на это не хватает. Надо гуглить BWS-овский саппорт. Может там буржуи с таким тоже сталкиваются =))

    • Мне плагин better wp security тоже не дает расслабится. Иногда он закрывает доступ к админ-панели. Хорошо, что добрые люди (Лариса, спасибо :)) подсказали, что нужно делать. Отключаю плагин, заменяю файл на стандартный, потом опять включаю плагин. Все работает как прежде.

      • У меня было дело, пароль неправильно ввел несколько раз, пришлось ждать пол часа =)

        • У меня не было доступа совсем не из-за пароля. Плагин моментально сбрасывал страницу для ввода пароля, так что даже ввести его было невозможно.

          • Так а в чем причина была? Рассказывайте с Ларисой всем нам =) Интересно же, и полезно. Или причина не выяснена, а только решение есть?

          • Не знаем мы, Саша(( Как последствия исправить, понятно, а вот как причину устранить… Видимо, действительно, где-то конфликт BWS с чем-то еще. Но где и с чем?

          • Александр, причина не понятна. Я вначале думал, что это происходит из-за изменения IP адреса, но когда посмотрел в админ-панель, то увидел, что в это время, адрес на моих комментариях не менялся.
            В другой раз это произошло, когда я по необходимости очистил в браузере куки. Думаю, что это происходит из-за маскировки файлов wp-admin и т.д.

          • У меня, кстати, маскировка админки тоже слетала как-то. Но блог при этом работал, просто при входе в админку по «замаскированному» адресу выдавалась ошибка 404.

            Однако, все это не очень хорошая тенденция, то что у многих периодически появляются проблемы с BWP

          • Сайт работал, не было доступа к админ-панели. Она открывалась на секунду и сразу слетала на страницу с ошибкой 404.
            Решает проблему удаление папки с плагином и замена файла htaccess на стандартный. После загрузки папки с плагином опять на сайт, плагин добавляет свои записи в файл htaccess и продолжает работать как будто ничего и не было.

          • Ага, Василий, я про эту же ситуацию и говорю. На самом деле решить ее можно проще, не удаляя ни плагин, ни htaccess. Нужно просто зайти по стандартному адресу вп-логин.пхп, залогиниться, и обновить настройки BWP на вкладке Hide.

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

          • Александр, а я заходил в wp-login.php, но он все равно сбрасывал на страницу 404. На одну секунду откроет страницу для ввода логина и пароля и сразу перебрасывает.

          • Ну, тогда даже и не знаю. У меня при всех схожих симптомах на вп-логин заходить всегда удавалось.
            Может быть у тебя еще браузерный кэш роль сыграл? В общем, темный лес с этим =))

  11. Лариса, нигде не могу найти информацию, как можно кэшировать граватары. Пейджспид ругается, что их кэш всего 5 минут. Плагины для кэширования граватаров не помогают… Может, их тоже в хтассессе добваить?

    • Надя, долго искала, как это сделать — не нашла. Плагины кеширования не помогают, потому что они на уровне сервере кешируют, а page speed хочет браузерное кеширование. Это где-то в настройках на граватар.ком, видимо, эти пять минут указаны, потому что вообще-то граватары — это jpeg-файлы, для них прописано кеширование в приведенном коде, но видимо, те правила приоритетнее…

      • Да, видимо тут на той стороне проблема и нам она не подвластна… Жаль 🙁

  12. Но если я прИИИцитирую википедию,

  13. Дмитрий

    Слушай, защита от хотлинка — очень полезная штука.
    Заметил пару статей, где ссылка на мои фото.
    Надо запилить картинку «Украдено у IdeaFox.Ru» :))))
    Тогда такой вопрос, а в Яндекс.Картинках не будет светиться это предупреждение?

    • Дим, по идее да, и в Яндексе должна появиться твоя угрожающая картинка… Хотя не слушай меня, я точно не знаю, как оно сработает…

  14. Лариса, нравится мне, как Вы пишете: по делу, да с юморком. Порой читаю Вас только из-за изящной подачи материала, а не из-за самого материала;)
    Успехов Вам!

  15. Интересная инфа. Из всего перечисленного у меня в .htaccess только www зазеркален на без www, ну и 301-х редиректов строчек на пятьдесят. После того, как сделал сайт двуязычным, началась форменная свистопляска. Пока разобрался, как объяснить поисковикам, где русская часть, а где английская, они понавключали в индекс кашу вперемешку. Еще и выскакивала то и дело ошибка 303 See Other, лечилась перезагрузкой страницы )). Починил все вводом суффикса ru и полусотней 301-х редиректов. Я, как вы знаете, на Джумле, это ее глюки с мультиязычностью повылазили. В ней, кстати, есть компонент «Перенаправление», но надежнее показалось обойтись без вмешательства движка и прописать редиректы ручками. Получилось.

    Это я к тому, что не стал бы связываться с плагинами, влазящими в .htaccess. Любой сбой может порушить файл, как в случае Александра по версии другого Александра. «Диверсантит» кто-то, точно, Лариса, хорошо сказано!

    В общем, по моему опыту, самое мощное, что дает владение файлом .htaccess — это redirect 301. Я в свое время через них переносил сайт на другое доменное имя без потерь в индексе — правда, поисковики долго склеивали зеркала: Гугл за месяц справился, а Яндекс мурыжил 4 месяца, чтоб он был здоров. Недавно зазеркалил отдельный сайт на свой основной в качестве раздела, так Гугл через две недели всего перенес индекс. Видимо, набил я руку.

    А вот из остальных опций, что описала Лариса, заинтересовала защита от хотлинков. Надо будет поковырять. С дублями бороться у нас на Джумле с включенным SEF почти нереально — попробовал было, но забил на это, вроде на выдаче не сказывается и санкций не наблюдается. Кеширование в браузере через файл управления поведением сервера — это для меня что-то запредельное. Gzip сжатие и разжатие облегчает трафик, но нагружает сервер и клиента — иди знай, что хуже.

    Но инфа таки полезная. А что мне особенно приятно, Лариса — универсальная, не сугубо WP-шная. Ну так я и влез опять в ваше уютное комьюнити со своим мнением )))

    • По-моему, ты вполне законный член «нашего уютного комьюнити», так что не скромничай) А инфа действительно универсальная.
      Все хочу тебя попытать на тему мультиязычной Джумлы… Как-то в теории пыталась разобраться, но до практики лапки не дошли.

      • Да какой из меня член — так, канадский джумловод среди российских вордпрессофилов )))

        А на тему мультиязычности есть много чем поделиться, и такая статья в плане есть, но все что-то перебивает другое. Эх, вот с тобой бы объедититься — мы бы продвинулись махом. Давай, а? С меня железо, толстый канал и программерский опыт, а с тебя — энтузиазм, толковость и молодая работоспособность. Будем называться «Кошка-людоед». Такого вебмастера точно еще не было ))))

        • Слушай, кошка-людоед — это как-то уж очень зверски… Боюсь, мы с тобой с таким названием куда-то не туда можем продвинуться, куда хотелось бы…

  16. Да, кстати еще о редиректах. Хотел спросить: ты с некоторых пор исходящие ссылки спрятала под редирект вида http://web-koshka.ru/goto. Я не так давно тоже хотел что-то подобное сделать, но вычитал в сети, что ссылки такие — зло, поисковики их не любят, считая подобное неуменьшение веса страницы искусственным, и вообще за это банят. Лариса и остальные ребята, просветите, как с этим обстоит сейчас дело.

    • Олег, не знаю… Я спрятала из тех соображений, что у меня очень много исходящих ссылок показывало в разных сео-сервисах. Они же и закрытые ссылки считают, начали мне какой-то заспамленностью угрожать))) А все потому, что комментариев много, вот и получается на страницу много ссылок. Я решила пока таким способом попробовать бороться. Тем более что много зарубежных хорошо посещаемых блогов использует такую систему скрытия ссылок.

    • Ogri, я не думаю, что такие ссылки вредны. Во-первых, они, как правило, обрамлены в noindex и имеют nofollow. Во-вторых, очень много всевозможный сайтов и форумов (даже не частных блогов) используют похожую переадресацию, и ничего, никаких санкций. В-третьих, какая в целом разница будет «закрытая» ссылка с переадрессацией или без? Про то, что ПС рассматривают такие ссылки, как внутренний переход, а не внешний, мне кажется это тоже какой-то очередной СЕО-миф. HTTP-заголовки, URLы и IP-адреса еще никто не отменял, и ПС не дураки, чтобы не видить по какой ссылке человек перешел, по внутренней или ушел на др.сайт.

  17. Василий, предпоследний код из перечисленных в статье) Прямо вот его целиком в .htaccess вставляй.

  18. Я еще код кеширования хотел туда вставить. А там же еще код WP Better Security находится, поэтому я не знаю в какое место файла нужно вставлять эти коды.

    • А прямо перед последней строчкой, где End WordPress, и вставляй по очереди. Главное, не после нее, как я в последний раз по спешке сделала.

      • Лариса, а эти коды вставлять с пробелом между остальным кодом и между собой, или все вставлять без пробелов, сплошным текстом?

        • Каждый код с новой строки, можно разделить пустой строкой, чтобы легче потом читать было.

          • Вроде бы получилось. Первый раз почему-то сайт слетал.
            Лариса, а к htaccess тоже нужно закрывать доступ? У меня в к htaccess доступ к wpconfig.php закрыт.
            У тебя там есть две строчки по русски написано. Их не нужно вставлять?

        • Какие русские строчки, где?
          Я закрыла доступ к .htaccess изменением прав досупа к файлу по ftp, если ты об этом.

          • В статье есть код
            # защищаем wpconfig.php

            order allow,deny
            deny from all

            #защищаем htaccess

            order allow,deny
            deny from all

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

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

          • У Василия здесь код не полностью походу прописался. В таком виде вообще ничего работать не будет. Или наоборот, вообще все запретит. Это, наверное, WP в камментах обрезал?

  19. Все, сделал. Лариса, спасибо. 🙂
    Попутно еще заметил одну особенность плагина WPBS. Если я сохраняю файл htaccess модифицированный плагином на компьютер, для того, чтобы в него добавить код, а потом опять загружаю на сайт, то работает только главная страница. Все остальные показывают код 404.
    После загрузки на сайт, исправленного кода, без присутствия в нем кода плагина, все начинает работать нормально. А уже на сайте, потом, плагин добавляет свой код в этот файл.

  20. Лариса, а gzip сжатие на хостинге и gzip сжатие в файле, это одно и тоже? Может тех.поддержку попросить, чтобы еще на хостинге включили, если это разные вещи.

    • Василий, в принципе, это одно и то же, насколько знаю.

  21. Начал думать над защитой от хотлинков. Знаю, что порядочное число изображений скопировано таким образом. Недавно еще одно увидел, а за Ли.Ру я вообще промолчу.
    Нашел еще один код. Там добавляются фиды, чтобы и там были доступны изображения. Возник вопрос — а при копировании мной для своих анонсов изображений в социальные сети, эти изображения тоже не будут доступны?

    • Честно говоря, я не знаю, Василий, но думаю, что в соцсетях все же будет отображаться. Нужно пробовать…

      • Вот еще одна тема появилась для размышления. 🙂
        Значит, что если даже я сам оставляю, где-то на сервисах анонсы своих статей, а изображения добавляю туда по ссылке со своего сайта, то я сам себе делаю хотлинк?
        В некоторых местах есть выбор — загрузить с компьютера или добавить по ссылке. А в некоторых, изображение можно добавить только по ссылке. Этот способ более быстрый и удобный.
        Выходит, что изображения со своего сайта добавлять желательно только с компьютера.

        • Василий, если есть возможность загружать с компа, то следует делать именно так. Зачем лишние нагрузки на сайт со сторонних серверов?

          • А я этого не знал, пока не стал разбираться этим хотлингом.

  22. Timur

    Подскажите пожалуйста, а кто знает как сделать так, чтобы при нажатии на кнопку View image в гугле шел редирект на сайт где находится картинка

  23. Алексей

    А как объединить все эти директивы в одну запись?

    • Алексей, ну просто написать их одну за другой по очереди, и все…

  24. Все пишут одно и тоже на сайтах. А куда вставлять эти коды??? Между коментариев # BEGIN WordPress и # END WordPress…?? или и ???

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

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