Что такое файл .htaccess и как его использовать в WordPress?

Опубликовано: 2020-10-27

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

Что такое файл .htaccess?

Начнем с того, что именно представляет собой файл .htaccess. «htaccess» означает «доступ к гипертексту». Это имя описывает, для чего использовался файл, когда он был впервые разработан. Короче говоря, он использовался для контроля доступа пользователей к определенным файлам и каталогам. Что-то изменилось с тех пор, как .htaccess впервые появился на сцене, и теперь он используется в WordPress различными способами, которые мы рассмотрим подробно.

.htaccess — это основной файл конфигурации WordPress, который используется для переопределения определенных настроек веб-сервера Apache (Apache — это программное обеспечение, обычно используемое на веб-серверах) или для реализации различных других функций, влияющих на работу вашего веб-сайта. Он включается во все установки WordPress сразу после включения постоянных ссылок и обычно находится в корневом каталоге установки. Вы можете просмотреть или отредактировать его, обратившись к установочным файлам через FTP-клиент, такой как FileZilla или WinSCP.

Примечание. Убедитесь, что настройки вашего FTP-клиента изменены таким образом, чтобы отображались скрытые файлы.

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

 # 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

Если вы еще не в курсе, «#» в начале строки — это комментарий. Строки комментариев # BEGIN WordPress и # END WordPress используются для того, чтобы контент оставался организованным, даже когда дополнительные правила применяются позже плагинами или вами. Любые будущие дополнения к файлу .htaccess следует размещать за пределами этих строк.

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

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

Что вы можете делать с файлом .htaccess

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

Перенаправление между «www» и «без www»

Обычно файл .htaccess используется для установки постоянного перенаправления с вашего «голого домена» (версия без www) на его версию с www или наоборот.

Прежде чем продолжить, убедитесь, что оба домена настроены в вашем DNS для разрешения на правильный IP-адрес сервера.

Кроме того, в области администрирования WordPress проверьте, установлен ли «голый» домен в качестве основного.

URL сайта настроек

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

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

Чтобы выполнить прямо противоположное (если www установлен как основной) и перенаправить с домена «без www» на «www», вам нужно будет вставить этот код:

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

Если вы не знакомы с регулярными выражениями, используемыми в коде, и хотите больше узнать о синтаксисе, не торопитесь и прочитайте больше о REGEX. HT Access Cheat Sheet — еще один очень полезный инструмент.

301 Редирект (постоянный редирект)

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

Вот фрагмент кода, который при размещении в файле .htaccess делает свое дело:

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

В приведенном выше примере мы перенаправили пользователей с веб-сайта mycompanyname.com на example.com. Конечно, вы захотите заменить эти разделы своими собственными URL-адресами.

Это также будет применяться ко всем путям в домене. Это означает, что, например, mycompanyname.com/new.html будет перенаправлять на example.com/new.html.

302 Перенаправление (временное перенаправление)

Когда контент временно перемещается в другое место, используется перенаправление 302. Синтаксис такой же, как в 301. Например:

 Redirect 302 /old.html http//www.mycompanyname.com/new.html

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

Принудительно к HTTPS

Защита вашего сайта с помощью SSL-сертификата очень важна в наши дни. Веб-сайты, которые этого не делают, теперь будут отображать предупреждение в строке браузера, которое может подорвать доверие к вашему веб-сайту. Кроме того, Google фактически наказывает веб-сайты, которые не доставляют контент через HTTPS, и поэтому ваш поисковый рейтинг может пострадать.

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

 RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

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

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

 Deny from 94.66.58.135

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

Предотвратить хотлинкинг изображений

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

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

Не забудьте заменить «mycompanyname.com» на URL вашего сайта!

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

 RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mycompanyname.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC]

Конечно, вы можете включить любые другие веб-сайты, которые хотите добавить в белый список. Наконец, последняя строка в коде ( RewriteRule .(jpg|jpeg|png|gif)$ - [F] ) указывает, какие типы мультимедиа блокируются.

Защитите файлы плагинов и тем

PHP-файлы плагинов и тем иногда могут быть целью хакеров, которые пытаются внедрить в них вредоносный код. Вы можете использовать свой файл .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]

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

Настоятельно рекомендуется, чтобы некоторые основные файлы WordPress были недоступны для пользователей без прав администратора. Это то, о чем позаботится большинство хостинг-провайдеров, но это не всегда так. Если вы хотите предотвратить доступ к конфиденциальным файлам WordPress, вы можете использовать следующий код в файле .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>

Не позволяйте плохим ботам сканировать ваш сайт

Боты — это в основном автоматизированные веб-скрипты, которые могут сканировать миллионы веб-сайтов в день. Google использует ботов для сканирования веб-сайтов и использует данные этих сканирований для обновления своих обширных поисковых баз данных. Надеюсь, бот Google совершенно безвреден! Однако есть и другие боты, которым вы, возможно, не захотите сканировать свой сайт. Некоторые из этих «плохих» ботов могут ничего не делать, кроме как потреблять ненужную пропускную способность сервера, в то время как другие могут активно искать уязвимые места на вашем веб-сайте. Ваш файл .htaccess можно использовать для блокировки этих «плохих» ботов.

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

 #Block bad bods requests 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] SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR] SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR] SetEnvIfNoCase user-Agent ^Zeus [NC]

После сохранения изменений все боты из списка, которые сейчас посещают ваш сайт, получат страницу 403 Forbidden.

Защитить wp-config.php

Обычно рекомендуется ограничивать доступ к файлу wp-config.php, поскольку он содержит учетные данные для доступа к базе данных.

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

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

Отключить выполнение PHP

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

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

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

Отключить доступ XML-RPC

Это распространенная проблема, с которой часто сталкиваются группы поддержки хостинговых компаний, где установка WordPress получает тысячи запросов «POST /xmlrpc.php HTTP/1.1», которые часто связаны с атакой с одного или нескольких IP-адресов. Одним из решений этой проблемы является отключение XML-RPC.

Чтобы отключить XML-RPC для вашего веб-сайта, добавьте следующие строки кода в файл oyur .htaccess:

 # Block WordPress xmlrpc.php requests <Files xmlrpc.php> order deny,allow deny from all </Files> # END protect xmlrpc.php

Стоит отметить, что xmlrpc.php необходим, если вы обновляете свой контент с помощью мобильных приложений или удаленных подключений. Поэтому, если вы планируете отключить его навсегда, убедитесь, что он не нужен для вашей работы.

Принудительная загрузка файлов

Пользователя веб-сайта может очень раздражать то, что когда вы хотите загрузить файл с веб-сайта (например, PDF), файл вместо этого открывается в окне браузера. Если на вашем веб-сайте есть файлы, которые предоставляются вашим пользователям в качестве загружаемых элементов, вы можете отредактировать файл .htaccess и добавить строку кода, которая может принудительно загружать определенные типы файлов, а не отображать их непосредственно в браузере. Вы увидите этот код ниже вместе с некоторыми примерами типов файлов, которые вы хотите, чтобы пользователи могли напрямую загружать.

 AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4

Отправить настраиваемые заголовки HTTP

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

 Header add my-custom-header "my custom header value"

Приведенный выше пример говорит Apache добавлять заголовок с именем «my-custom-header» для каждого запроса к серверу. Если мы внедрим это обновление, а затем проверим вкладку нашей сети в инструментах нашего браузера, мы сможем подтвердить его ответ, как показано ниже.

мой пользовательский заголовок

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

Вывод

Надеюсь, эта статья дала вам некоторое представление о том, чего можно добиться с помощью файла .htaccess. Конечно, многие из этих вещей можно выполнить с помощью плагина, но всегда полезно понять, что именно происходит «под капотом», особенно если плагин не работает так, как вы ожидаете. Освоение того, как редактировать файл .htaccess, а не полагаться на плагин, также помогает повысить ваш уровень знаний WordPress… и это всегда хорошо!