Делаем правильный .htaccess для WordPress. Подробное руководство по настройке редиректов, защиты и оптимизации WP

Делаем правильный .htaccess для WordPress. Подробное руководство по настройке редиректов, защиты и оптимизации WP 1 Шаблоны и чек-листы
Из статьи вы узнаете обо всех возможностях, которые можно реализовать с помощью этого файла, а также о том как это правильно сделать.
Содержание статьи
  1. Что такое .htaccess
  2. Стандартный .htaccess для WordPress
  3. Как редактировать файл .htaccess
  4. Настройка редиректов в .htaccess
  5. Как сделать 301 редирект в .htaccess
  6. Как сделать 302 редирект в .htaccess
  7. Принудительная загрузка сайта с www
  8. Принудительная загрузка сайта без www
  9. Принудительная загрузка сайта по протоколу HTTPS
  10. Принудительная загрузка сайта по протоколу HTTP
  11. Редирект домена на директорию
  12. Редирект с одного сайта на другой
  13. Настройка безопасности WordPress-сайта в .htaccess
  14. Защита .htaccess
  15. Ограничение доступа к Консоли WordPress
  16. Защита файла wp-config.php
  17. Защита директории /wp-content/
  18. Защита системных файлов
  19. Запрет выполнения PHP
  20. Ограничение доступа к файлам
  21. Защита от внедрения скриптов
  22. Блокировка IP-адреса
  23. Запрет доступа к определенным файлам сайта
  24. Отключение просмотра директорий
  25. Настройка производительности WordPress-сайта в .htaccess
  26. Включение кэширования
  27. Включение gzip-сжатия
  28. Контроль и установка ограничений на хотлинкинг изображений

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

Обратите внимание! Прежде чем вносить какие-либо изменения в .htaccess, сделайте его резервную копию. Даже, казалось бы, такая незначительная опечатка, как пропущенная кавычка, сделанная при редактировании этого файла, может стать причиной того, что сайт перестанет загружаться.

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

В большинстве случаев при установке WordPress на хостинг .htaccess создается в корневой директории сайта. Однако иногда этого не происходит и тогда нужно создать этот файл самостоятельно. Для этого выполните следующие действия:

  1. Подключитесь к хостингу по FTP, используя FileZilla или другой FTP-клиент, и перейдите в корневую директорию сайта.
  2. Кликните правой кнопкой мыши по правому окошку с файлами сайта и выберите «Создать новый файл».
  3. Введите .htaccess и нажмите OK.

Обратите внимание! Убедитесь, что ввели имя .htaccess (с точкой), а не htaccess (без точки).

Другой способ создания файла .htaccess — через Консоль WordPress. Выберите в главном меню Настройки > Постоянные ссылки и, ничего не меняя на странице, нажмите кнопку «Сохранить изменения».

Стандартный .htaccess для WordPress выглядит следующим образом:

# BEGIN WordPress

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

# END WordPress

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

Как редактировать файл .htaccess

Чтобы внести изменения в .htaccess, подключитесь к хостингу по FTP, используя FileZilla или другой FTP-клиент, перейдите в корневую директорию сайта, нажмите правой кнопкой мыши на файле .htaccess и выберите «Просмотр/Правка». После редактирования файла сохраните его и подтвердите загрузку файла на сервер, нажав кнопку «Да» в появившемся в FileZilla окошке «Файл изменен».

 

Настройка редиректов в .htaccess

Ранее говорилось о том, что .htaccess позволяет устанавливать правила управления перенаправлениями (редиректами). Далее мы рассмотрим самые часто используемые из них.

Как сделать 301 редирект в .htaccess

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

301 редирект передает ссылочной вес страницы.

Чтобы сделать 301 редирект со страницы staraya-stranitsa.html на novaya-stranitsa.html добавьте в .htaccess следующий код:

Redirect 301 /staraya-stranitsa.html https://example.com/novaya-stranitsa.html

Как сделать 302 редирект в .htaccess

В отличие от 301 редиректа, 302 сообщает поисковикам о том, что веб-адрес был перемещен в другое место временно. Временное перенаправление применяется в таких случаях:

  • если нужно временно перенаправить трафик с одного сайта на другой;
  • если нужно показать посетителям сайта другую информацию без изменения старой страницы;
  • если на сайте выполняются технические работы;

Еще один способ применения 302 редиректа, который нередко используют хостинговые компании — скрытие от посетителей страниц сайта, которые содержат запрещенный контент.

302 редирект не передает ссылочный вес страницы.

Чтобы выполнить временное перенаправление со страницы staraya-stranitsa.html на novaya-stranitsa.html добавьте в .htaccess следующий код:

Redirect 302 /staraya-stranitsa.html https://example.com/novaya-stranitsa.html

Принудительная загрузка сайта с www

Чтобы сайт загружался по адресу www.example.com даже если пользователь вводит в браузере example.com, добавьте в .htaccess следующий код:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301,NC]

Принудительная загрузка сайта без www

Чтобы сайт загружался по адресу example.com даже если пользователь вводит в браузере www.example.com, добавьте в .htaccess следующий код:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]

Принудительная загрузка сайта по протоколу HTTPS

Чтобы сайт загружался по защищенному протоколу передачи данных HTTPS (https://example.com/) даже если пользователь хочет загрузить его по протоколу HTTP (http://example.com/), добавьте в .htaccess следующий код:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Принудительная загрузка сайта по протоколу HTTP

Чтобы сайт загружался по протоколу передачи данных HTTP (http://example.com/) даже если пользователь хочет загрузить его по защищенному протоколу HTTPS (https://example.com/), добавьте в .htaccess следующий код:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} ^https$
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI}
</IfModule>

Редирект домена на директорию

Чтобы при заходе на сайт https://example.com/ выполнялось перенаправление в директорию сайта https://example.com/directory/ добавьте в .htaccess следующий код:

RewriteCond %{HTTP_HOST} ^example.com$
RewriteCond %{REQUEST_URI} !^/directory/
RewriteRule (.*) /subdir/$1

Редирект с одного сайта на другой

Чтобы выполнить перенаправление с одного сайт на другой (https://example-1.com/), добавьте в .htaccess сайта, с которого должен выполняться редирект, следующий код:

Redirect 301 / https://example-1.com/

Настройка безопасности WordPress-сайта в .htaccess

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

Защита .htaccess

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

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

Ограничение доступа к Консоли WordPress

Ни один владелец или администратор WordPress-сайта не хотел бы, чтобы кто-то получил доступ к панели управления онлайн-ресурсом. Чтобы разрешить доступ к Консоли только пользователям с определенным IP-адресом, создайте новый .htaccess-файл в директории /wp-admin/ и добавьте в него следующий код:

<Limit GET POST PUT>
order deny,allow
deny from all
allow from xx.xx.xx.xx
</Limit>

После добавления этого кода в .htaccess, не забудьте заменить xx.xx.xx.xx на ваш IP-адрес. Узнать его можно по адресу https://www.myip.com/.

Теперь при попытке получить доступ к админке вашего WordPress-сайта пользователи, IP-адрес которых не указан в .htaccess, будут видеть сообщение Forbidden. You don’t have permission to access /wp-admin/ on this server.

Обратите внимание! Если нужно разрешить доступ к админке WordPress нескольким пользователям, укажите их IP-адреса в файле .htaccess через пробел. Например, allow from 123.456.789.101 112.131.141.151. 617.181.920.212

Защита файла wp-config.php

wp-config.php — файл WordPress, в котором хранятся такие важные данные как, например, логин и пароль к базе данных. Чтобы защитить его от несанкционированного доступа, добавьте в .htaccess следующий код:

<files wp-config.php>
order allow,deny
deny from all
</files>

Защита директории /wp-content/

В директории /wp-content/ на WordPress хранятся файлы тем, плагинов, медиафайлы и кэшированные файлы. Этот каталог — любимая цель хакеров и спамеров. Для защиты /wp-content/ создайте в этой директории новый файл .htaccess и добавьте в него следующий код:

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

Это скроет от посетителей все файлы в каталоге /wp-content/, кроме XML, CSS, JPEG, JPG, GIF и JS.

Защита системных файлов

Некоторые директории WordPress-сайта никогда не должны быть доступны обычным посетителям. Например, /wp-includes/ и /wp-admin/includes/. Чтобы защитить их от несанкционированного доступа, добавьте в основной .htaccess-файл следующий код:

<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>

Запрет выполнения PHP

Ограничение выполнения PHP для всех или определенных директорий WordPress — действие, которое сделает сайт более защищенным от взломов. Чтобы реализовать это, создайте в каталоге, PHP-скрипты из которого не должны запускаться, новый файл .htaccess и добавьте в него следующий код:

<Files *.php>
deny from all
</Files>

Некоторые директории WordPress (например, /wp-includes/ и /wp-content/uploads/) по умолчанию доступны для записи. Другими словами, пользователи могут загружать медиафайлы и другие типы файлов в эти каталоги. Поэтому рекомендую обязательно отключить выполнение PHP в данных директориях.

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

Одна из настроек безопасности, которую можно реализовать с помощью файла .htaccess — запрет прямого доступа к редактирования PHP-файлов плагинов и тем WordPress. Для этого добавьте в .htaccess следующий код:

RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/
RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L]
RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/
RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]

Защита от внедрения скриптов

Внедрение скриптов (Script Injection) — это распространенная техника, которую используют хакеры. Она заключается в добавлении вредоносного кода в код файлов WordPress с целью получения данных пользователей или контроля над сайтом. Чтобы защитить онлайн-ресурс от внедрения скриптов, добавьте в .htaccess следующий код:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]

Блокировка IP-адреса

Если кто-то постоянно спамит на вашем сайте или пытается взломать его, можно закрыть от этого посетителя доступ к сайту, заблокировав его IP-адрес. Для этого добавьте в .htaccess следующий код:

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

После добавления этого кода в .htaccess, не забудьте заменить xx.xx.xx.xx на IP-адрес пользователя, которому нужно закрыть доступ к сайту.

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

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

<files filename.pdf>
order allow,deny
deny from all
</files>

Не забудьте заменить filename.pdf на имя файла, доступ к которому нужно закрыть.

Отключение просмотра директорий

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

Options All -Indexes

Настройка производительности WordPress-сайта в .htaccess

В файле .htaccess в WordPress также можно указывать правила, повышающие производительности сайта.

Включение кэширования

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

<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType image/x-icon "access plus 1 week"
ExpiresByType text/x-component "access plus 1 month"
ExpiresByType text/html "access plus 0 seconds"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
ExpiresByType text/cache-manifest "access plus 0 seconds"
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
ExpiresByType application/atom+xml "access plus 1 hour"
ExpiresByType application/rss+xml "access plus 1 hour"
ExpiresByType application/font-woff2 "access plus 1 month"
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
</IfModule>

Включение gzip-сжатия

Для его включения добавьте в .htaccess следующий код:

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>

Контроль и установка ограничений на хотлинкинг изображений

Хотлинкинг изображений — это размещение на сайте изображений, которые хранятся не на сервере этого сайта. Реализуется этот прием вставкой следующего кода в код веб-страницы:

<img src="https://example.com/image.jpg">

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

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

Не забудьте заменить example.com на доменное имя вашего сайта.

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


Источник: zompweb.com

Кай Кворкер
Оцените автора
( Пока оценок нет )
Заработок на Kwork.ru: секреты и хитрости заработка
Добавить комментарий