Файл .htaccess в WordPress: что это такое и для чего он нужен
В этой статье я расскажу, что такое файл .htaccess. А также о том, как с его помощью повысить скорость и безопасность сайта, работающего на WordPress.
- Что такое файл .htaccess в WordPress?
- Как получить доступ к файлу .htaccess
- Что можно сделать с помощью файла .htaccess
- Настройка редиректов
- 301 (постоянный редирект)
- 302 (временный) редирект
- Перенаправление к не-www версии URL-адресов
- Перенаправление URL-адресов на HTTPS
- Перенаправление URL-адресов на HTTP
- Перенаправление домен на подкаталог
- Перенаправление основного домена на другой домен
- Удаление строки Query_String
- Установка языковой переменной на основе клиента
- Перенаправление фидов WordPress на Feedburner
- Оптимизация скорости работы WordPress с помощью правил .htaccess
- Повышение безопасности сайта на WordPress
- Заключение
Что такое файл .htaccess в WordPress?
Основная цель файла .htaccess – определить правила для веб-сервера Apache по работе с сайтом на WordPress. По умолчанию .htaccess в WordPress управляет отображением постоянных ссылок на сайте. Но с помощью файла .htaccess можно сделать гораздо больше.
Прежде чем мы начнем
Редактировать файлы WordPress без создания резервной копии не рекомендуется. Для этого можно использовать один из следующих вариантов:
- Автоматическое резервное копирование сайта на WordPress.
- Создание локальной копии сайта WordPress.
- Создание тестовой версии сайта.
- Создание копии текущей версии файла.htaccess - вы можете создавать резервные копии файла .htaccess перед внесением каких-либо изменений.
Как получить доступ к файлу .htaccess
Файл .htaccess располагается в корневом каталоге WordPress-сайта. Для доступа к нему можно использовать FTP-клиент, такой как FileZilla. По умолчанию этот файл является скрытым. Чтобы включить просмотр скрытых файлов в FileZilla, выполните следующие действия:
- Откройте FTP-клиент FileZilla и подключитесь к серверу.
- Перейдите в корневой каталог WordPress.
- В верхней части экрана выберите «Сервер».
- Затем пункт «Принудительно показать скрытые файлы».

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

После обновления состояния 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. Правильное его использование позволяет повысить уровень безопасности сайта и повысить скорость его работы.
Пожалуйста, опубликуйте свои мнения по текущей теме статьи. Мы крайне благодарны вам за ваши комментарии, отклики, дизлайки, подписки, лайки!
Дайте знать, что вы думаете по данной теме материала в комментариях. За комментарии, дизлайки, отклики, подписки, лайки огромное вам спасибо!