Файл .htaccess в WordPress: что это такое и для чего он нужен

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

Содержание

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

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

Прежде чем мы начнем

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

  • Автоматическое резервное копирование сайта на WordPress.
  • Создание локальной копии сайта WordPress.
  • Создание тестовой версии сайта.
  • Создание копии текущей версии файла.htaccess - вы можете создавать резервные копии файла .htaccess перед внесением каких-либо изменений.

Как получить доступ к файлу .htaccess

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

  1. Откройте FTP-клиент FileZilla и подключитесь к серверу.
  2. Перейдите в корневой каталог WordPress.
  3. В верхней части экрана выберите «Сервер».
  4. Затем пункт «Принудительно показать скрытые файлы».
Как получить доступ к файлу .htaccess

Если вы все еще не видите .htaccess, это означает, что на сайте нет этого файла. Чтобы создать его, в панель администрирования WordPress  в  «Настройки»> «Постоянные ссылки» и нажмите кнопку «Сохранить изменения».

Как получить доступ к файлу .htaccess - 2

После обновления состояния FTP-клиента, вы увидите файл .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

Теперь пришло время разобраться с тем, какие правила можно определить в файле .htaccess для WordPress. Я разобью эти правила на три основные категории:

  • Правила редиректов.
  • Для повышения скорости работы WordPress.
  • Обеспечение безопасности сайта.

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

Рассмотрим наиболее распространенные правила редиректов:

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

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

Redirect 301 /oldpage.html http://www.yourwebsite.com/newpage.html

302 (временный) редирект

Если нужно временно перенаправить пользователей на другую страницу, используйте 302 редирект:

Redirect 302 /oldpagфe.html http://www.yourwebsite.com/newpage.html

Перенаправление к  www версии URL-адресов

Если нужно, чтобы URL-адреса сайта всегда начинались с www, используйте следующий код:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^example.com [NC]

RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301,NC]

Перенаправление к  не-www версии URL-адресов

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www.example.com [NC]

RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

Перенаправление URL-адресов на HTTPS

Чтобы перенаправить пользователей и поисковых роботов на HTTPS-версию сайта используйте следующий код:

RewriteEngine On

RewriteCond %{HTTP:X-Forwarded-Proto} !https

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Перенаправление URL-адресов на HTTP

Для принудительной установки не HTTPS-соединений на сайте используйте следующий код:

RewriteEngine On

RewriteCond %{HTTP:X-Forwarded-Proto} ^https$

RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI}</IfModule>

Перенаправление домен на подкаталог

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

RewriteCond %{HTTP_HOST} ^example.com$

RewriteCond %{REQUEST_URI} !^/sub-directory-name/

RewriteRule (.*) /subdir/$1

Перенаправление основного домена на другой домен

Чтобы перенаправить несколько доменных имен (например, abc.com, abc.net, abc.org) на один домен, используйте следующее правило:

Redirect 301 / http://www.abc.com/

Добавьте приведенное выше правило для доменов abc.net и abc.org, чтобы перенаправить их на abc.com.

Удаление строки Query_String

URL-адреса сайта отображают тот же контент при доступе с добавлением запроса. Например, веб-страница myblog.com также доступна по адресу myblog.com/?my=query. Это может привести к дублированию контента при сканировании сайта поисковыми роботами.

Чтобы решить данную проблему, удалите из URL-адреса строки запроса с помощью следующего кода:

RewriteCond %{THE_REQUEST} ^[A-Z]+ /.* HTTP

RewriteCond %{QUERY_STRING} !^$

RewriteRule .* https://www.mywebsite.com%{REQUEST_URI}? [R=301,L]

Установка языковой переменной на основе клиента

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

RewriteCond %{HTTP:Accept-Language} ^.*(de|es|fr|it|ja|ru|en).*$ [NC]

RewriteRule ^(.*)$ - [env=prefer-language:%1]

Перенаправление фидов WordPress на Feedburner

WordPress по умолчанию генерирует RSS-каналы для записей. Чтобы использовать сторонний генератор RSS-каналов (например, Feedburner) добавьте следующий код:

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_URI} ^/feed.gif$

RewriteRule .* - [L]

RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator) [NC]

RewriteRule ^feed/?.*$ http://feeds.feedburner.com/apache/htaccess [L,R=302]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]

Оптимизация скорости работы WordPress с помощью правил .htaccess

Файл .htaccess содержит правила кэширования. С их помощью можно оптимизировать скорость работы WordPress-сайта.

Установка заголовков Expires для кеша браузера

Многие браузеры временно кэшируют CSS, JavaScript, HTML и некоторые мультимедийные файлы, такие как иконки часто посещаемых сайтов. Если эти элементы на сайте меняются не часто, можно увеличить срок действия этих ресурсов:

<IfModule mod_expires.c>

ExpiresActive on

ExpiresDefault                                    "access plus 1 month"

# CSS

ExpiresByType text/css                            "access plus 1 year"

# Data interchange

ExpiresByType application/json                    "access plus 0 seconds"

ExpiresByType application/xml                     "access plus 0 seconds"

ExpiresByType text/xml                            "access plus 0 seconds"

# Favicon (cannot be renamed!)

ExpiresByType image/x-icon                        "access plus 1 week"

# HTML components (HTCs)

ExpiresByType text/x-component                    "access plus 1 month"

# HTML

ExpiresByType text/html                           "access plus 0 seconds"

# JavaScript

ExpiresByType application/javascript              "access plus 1 year"

# Manifest files

ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"

ExpiresByType text/cache-manifest                 "access plus 0 seconds"

# Media

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"

# Web feeds

ExpiresByType application/atom+xml                "access plus 1 hour"

ExpiresByType application/rss+xml                 "access plus 1 hour"

# Web fonts

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"

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

Чтобы самостоятельно активировать GZIP-сжатие на WordPress-сайте, добавьте приведенное ниже правило в файл .htaccess.

<IfModule mod_deflate.c>

# Compress HTML, CSS, JavaScript, Text, XML and fonts

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

# Remove browser bugs (only needed for really old browsers)

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>

Увеличение максимального размера загружаемого файла

По умолчанию размер загружаемого файла в WordPress составляет от 10 до 25 МБ. Чтобы загружать более объемные файлы, используйте приведенный ниже код:

php_value upload_max_filesize 64M

php_value post_max_size 64M

php_value max_execution_time 300

php_value max_input_time 300

Повышение безопасности сайта на WordPress

Правила .htaccess позволяют ограничить доступ пользователей к определенным URL-адресам, файлам и сделать многое другое.

Защита файла .htaccess

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

<files ~ "^.*.([Hh][Tt][Aa])">

order allow,deny

deny from all

satisfy all

</files>

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

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

# Limit logins and admin by IP

<Limit GET POST PUT>

order deny,allow

deny from all

allow from xx.xx.xx.xx

</Limit>

Примечаниеxx.xx.xx.xx - только с этого IP-адреса пользователь сможет войти в панель администрирования WordPress.

Защита паролем одного файла

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

<Files login.php>

AuthName "Prompt"

AuthType Basic

AuthUserFile /web/mywebsite.com/.htpasswd

Require valid-user

</Files>

Защита важных файлов

Чтобы защитить файлы php.ini и wp-config.php, используйте приведенные ниже правила для ограничения доступа:

<FilesMatch "^.*(error_log|wp-config.php|php.ini|.[hH][tT][aApP].*)$">

Order deny,allow

Deny from all

</FilesMatch>

Защита папки /wp-content

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

Order deny,allow

Deny from all

<Files ~ ".(xml|css|jpe?g|png|gif|js)$">

Allow from all

</Files>

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

<Limit GET POST>

order allow,deny

deny from 123.456.78.9

allow from all

</Limit>

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

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

<files your-file-name.txt>

order allow,deny

deny from all

</files>

Блокировка хотлинкинга файлов, изображений и кражи ресурсов пропускного канала

Чтобы предотвратить хотлинкинг, используйте приведенное ниже правило .htaccess.

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP_REFERER} !^$

RewriteCond %{HTTP_REFERER} !^http://(www.)?mywebsite.com/.*$ [NC]

RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]

Заключение

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

Пожалуйста, опубликуйте свои мнения по текущей теме статьи. Мы крайне благодарны вам за ваши комментарии, отклики, дизлайки, подписки, лайки!

Дайте знать, что вы думаете по данной теме материала в комментариях. За комментарии, дизлайки, отклики, подписки, лайки огромное вам спасибо!

Вадим Дворниковавтор-переводчик статьи «WordPress .htaccess File: What It Is and What You Can Do With It!»