WordPress .htaccess — полезные советы
Всем привет. Сегодняшняя статья посвящена файлу .htaccess и его настройке. Многие задают вопросы относительно этого файлика и надеюсь, эта статья будет вам в помощь. Итак, файл .htaccess – это конфигурационный файл, который позволяет вам управлять файлами и папками в действующей директории и подкатегориях.
[toc]Большинство WordPress-пользователей первый раз знакомятся с этим файлом, когда пытаются кастомизировать вид постоянных ссылок. Чтоб заполучить те симпатичные ссылки, которые мы все знаем и любим (например, http://www.site.com/sample-post/ вместо http://www.site.com/?p=123), нам нужно добавить что-то типа этого в файл .htaccess:
# 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
Впрочем, эта проблема сейчас решается и прямо из админки WP.
Но если у вас вообще нет файла .htaccess, то вы можете создать его самостоятельно и загрузить на сервер. Все, что нужно сделать, это создать чистый файл, назвать его .htaccess и загрузить в корневую директорию вашей инсталляции WordPress. Не забудьте пропечатать точку в начале файла (сохраняем файл, как .htaccess, а не htaccess). Также обязательно стоит открыть файл для записи информации, чтоб WordPress смог добавить код правильных пермалинков в ваш .htaccess. WordPress.org советует выставить права 644для файла .htaccess.
Файл .htaccess используется не только для пермалинков. Наиболее известен этот файл тем, что с его помощью можно усилить защиту веб-сайта. В этой статье вы найдете сниппеты для усиления защиты сайта и некоторые другие полезные советы.
Должно быть, вы заметили, что в примере с пермалинками, приведенном выше, код начинается с # BEGIN WordPress и заканчивается с # END WordPress. WordPress может обновлять любой код, помещенный между этих тегов. Таким образом, любой сниппет, предложенный в этой статье, вы можете поместить либо в начало, либо в конец вашего файла .htaccess (например, перед # BEGIN WordPress или после # END WordPress).
Будьте внимательны!
.htaccess – файл довольно капризный: ошиблись в одном символе, и весь сайт рухнул. Так что внимательно копируйте любой код, данный в этой стать, в ваш файл .htaccess. Перед тем, как начать работу с файлом .htaccess, обязательно сделайте копию его последней рабочей версии и храните ее в надежном месте. Если вы загрузили на сервер новую версию .htaccess, обязательно обновите сайт, чтоб увидеть работает ли он. Если вместо сайта вы увидите белый экран, то верните назад сохраненную ранее копию, поместив ее поверх версии, вызвавшей ошибку.
Если не можете найти вашу копию, то загрузите чистый файл htaccess или вообще удалите его. Не испытывайте судьбу, просто всегда держите при себе свежий бэкап.
1. Защитите .htaccess
Так как .htaccess дает так много контроля над папками и файлами, важно скрыть его от чужих глаз. Приведенный ниже сниппет убережет ваш .htaccess от хакеров. Как всегда, вы можете отредактировать ваш файл по FTP.
<files ~ "^.*\.([Hh][Tt][Aa])"> order allow,deny deny from all satisfy all </files>
2. Обезопасьте WP-Config.php
Еще один важный файл – это wp-config.php, ведь он содержит информацию об авторизации для базы данных WordPress, а также другие важные настройки сохранения, так что его нужно убрать из общего доступа.
<files wp-config.php> order allow,deny deny from all </files>
3. Защитите /Wp-Content/
Директория wp-content – одна из самых важных областей вашего WordPress-сайта. Это то место, где хранятся такие жизненно важные файлы, как темы, плагины, загруженные медиа-файлы и файлы кэша, и потому туда так хотят добраться хакеры.
Вы можете закрыть данную директорию от спаммеров и хакеров, создав отдельный .htaccess и добавив туда данный код:
Order deny,allow Deny from all <Files ~ ".(xml|css|jpe?g|png|gif|js)$"> Allow from all </Files>
Вам нужно загрузить данный отдельный файл .htaccess в главную директорию wp-content, например, www.yourwebsite.com/wp-content/. Теперь сюда можно загрузить только файлы с расширениями XML, CSS, JPG, JPEG, PNG, Gif и Javascript, а все остальные типы файлов будут удалены.
4. Заблокируете файлы, не предназначенные для пользователей
Закрыть доступ к определенным файлам можно, добавив этот код в .htaccess:
# Block the include-only files. <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L] </IfModule>
5. Ограничьте доступ к админской области
Хакеры мечтают получить доступ к этой зоне, так как при его обретении с вашим сайтом можно проделать все, что угодно. Чтоб обезопасить данную область, создайте новый файл .htaccess и добавьте код, приведенный ниже.
# Limit logins and admin by IP <Limit GET POST PUT> order deny,allow deny from all allow from 12.34.56.78 </Limit>
Не забудьте сменить 12.34.56.78 на ваш собственный IP-адрес (вы можете узнать ваш IP на сайте What Is My IP?). Затем загрузите файл в папку /wp-admin/ вашего сайта, например, www.ваш сайт.com/wp-admin/.
Теперь доступ к админ-области WordPress есть только у вас. Также можно добавить дополнительные IP адреса для других админов и прочих членов команды. Для этого можно добавить дополнительные строки или перечислить их IP-адреса в главной строке, разделяя их точками.
allow from 12.34.56.78, 98.76.54.32, 19.82.73.64
6. Забаньте недоброжелателей
Если вы знаете IP-адрес недоброжелателя, то используя сниппет, приведенный ниже, вы можете забанить его навсегда.
<Limit GET POST> order allow,deny deny from 123.456.78.9 deny from 987.654.32.1 allow from all </Limit>
7. Направить посетителей на страницу обслуживания.
Такие плагины, Maintenance, хороши, когда нужно отобразить временное сообщение о том, что сайт находится в разработке, в том случае, если вы что-то там меняете или обновляете движок. Но данные плагины бесполезны в случае возникновения Белого экрана смерти WordPress. Так что, если вы желаете подготовиться к худшему, рекомендуется создать базовую HTML-страницу, названную maintenance.html и сообщающую пользователю о том, что с сайтом у вас сейчас проблемы, и он скоро вернется в онлайн. В случае Белого экрана, просто добавьте данный сниппет в ваш файл .htaccess.
RewriteEngine on RewriteCond %{REQUEST_URI} !/maintenance.html$ RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123 RewriteRule $ /maintenance.html [R=302,L]
Вам нужно будет подредактировать код под ваш сайт: изменить имя файла html на ваше название, а также его местоположение во второй и четвертой строках. Вам также нужно добавить ваш собственный IP-адрес в третьей строке для того, чтоб сохранить доступ к веб-сайту для себя и отобразить сообщение для остальных. Код использует 302 редирект для закрытия страницы от индексации.
8. Запретите просмотр папок в браузере
Если вы позволяете кому-то видеть ваши папки и файлы, то вы сильно рискуете. Для того, чтоб отключить просмотр ваших директорий, просто добавьте маленький кусочек кода в .htaccess.
# disable directory browsing Options All -Indexes
9. Включение кэширования браузера
Включенное кэширование позволит посетителям сохранять элементы с ваших веб-страниц без необходимости скачивать их снова. Такое нужно для элементов оформления, типа CSS-файлов и медиа-файлов – картинок. Такая практика не редкость, так как, когда кто-то загружает изображение на ваш сайт, картинка редко загружается по новой. Кэширование также позволяет посетителям загружать изображения, сохраненные на их компьютере, а не тянуть их с вашего сервера. Это также увеличивает скорость загрузки страницы в разы. Чтоб включить кэширование, добавьте этот код в ваш файл .htaccess.
## EXPIRES CACHING ## <IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access 1 year" ExpiresByType image/jpeg "access 1 year" ExpiresByType image/gif "access 1 year" ExpiresByType image/png "access 1 year" ExpiresByType text/css "access 1 month" ExpiresByType application/pdf "access 1 month" ExpiresByType text/x-javascript "access 1 month" ExpiresByType application/x-shockwave-flash "access 1 month" ExpiresByType image/x-icon "access 1 year" ExpiresDefault "access 2 days" </IfModule> ## EXPIRES CACHING ##
10. Редирект URL
301-е перенаправления сообщают поисковым машинам, что ссылки навсегда перенесены в другое место. Их можно использовать, когда нужно перенаправить страницу, папку или даже целый веб-сайт. Также редирект используется, когда нужно изменяется URL страницы. Такое может случиться из-за смены домена, структуры пермалинков или же слагов страниц.
Для изменения местоположения, нужно всего лишь добавить строчку с редиректом 301 вслед за старой локацией, а потом добавить новую локацию. Вот как это работает:
Redirect 301 /oldpage.html http://www.yourwebsite.com/newpage.html Redirect 301 /oldfolder/page2.html /folder3/page7.html Redirect 301 / http://www.mynewwebsite.com/
11. Отключите хотлинкинг
Хотлинкинг – это процесс вставки картинки напрямую с одного сайта на другой. Иными словами, вместо того, чтоб залить картинку на хостинг, злоумышленник просто вставляет ссылку на картинку, которая находится на вашем сайте, в результате чего ваш сайт загружается медленнее, а тарифы хостинга растут в цене. Хотлинкинга можно избежать, позволив выдергивать картинки только тем сайтам, владельцем которых вы являетесь. Добавьте код, приведенный ниже, в файл .htaccess, но убедитесь в том, что изменили URL на адреса собственных сайтов.
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourotherwebsite.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ http://i.imgur.com/g7ptdBB.png [NC,R,L]
Теперь, когда кто-то просматривает ваше изображение через другой URL, то он просто будет видеть изображение, указанное в последней строчке кода. Это изображение можно заменить на что угодно.
Замечание: отключение хотлинкинга может привести к проблемам с отображением изображений в вашем RSS-фиде.
Пункт 8 про запрет просмотра файлов и папок в браузере приводит к белому экрану и надписи «500 server error»
Посмотрите, пожалуйста, не нарушен ли синтаксис в этом пункте…