Апрель 2020 — IT Helper

18 апреля 2020

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

Что нужно добавить в htaccess обязательно

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

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

Стандартный htaccess

Если 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

301 редирект на https

Если к ресурсу прикреплен SSL сертификат, то необходимо занести после #BEGIN WordPress конфигурацию 301 редиректа.

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

Как должен выглядеть правильный htaccess

В итоге правильный код htaccess должен выглядеть так:


# BEGIN WordPress
RewriteEngine On 
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php&#36; - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Он проверен на множестве сайтов и работает безотказно. Никаких дублей, дыр в безопасности и остальных ошибок не наблюдали.

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

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

Что еще можно подключить в htaccess

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

  • Кэш браузера
  • Gzip сжатие
  • Защита wp-config, нет ли доступа его просмотреть

Кэш браузера

Для начала проверим активен ли кэш браузера на сайте, переходим на сервис webpagetest, вводим в поле url главной страницы и находим start scan.

Определяем ошибки в серверной оптимизации
Проверка функций блога

Ждем процесса проверки и смотрим на результаты. Ищем строчку Leverage browser caching и определяем кэшируются ли документы. В моем случае да, исключение – метрика, аналитика и vk, на них повлиять нельзя.

Определение наличия кэша браузера
Есть ли кеш браузера

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

<ifModule mod_headers.c>
<FilesMatch "\.(html|htm)$">Header set Cache-Control "max-age=43100</FilesMatch>
<FilesMatch "\.(js|css|txt)$">Header set Cache-Control "max-age=604700</FilesMatch>
<FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png)$">Header set Cache-Control "max-age=2591000"</FilesMatch>
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">Header unset Cache-Control</FilesMatch>
</IfModule>

Gzip сжатие

Gzip сжатие потеряло актуальность при появлении AMP и Турбо страниц, но пользоваться ими нужно. Проверяем тем же сервисом webpagetest, только ищем строчку «Use gzip compression for transferring compressable responses».

Есть ли сжатие gzip на сервере WordPress
Наличие gzip сжатия

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

<ifModule mod_gzip.c>
  mod_gzip_on Yes
  mod_gzip_dechunk Yes
  mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
  mod_gzip_item_include mime ^application/x-javascript.*
  mod_gzip_item_include mime ^text/.*
  mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
  mod_gzip_item_exclude mime ^image/.* 
  mod_gzip_item_include handler ^cgi-script$
</ifModule>

Такими встроенными возможностями обладают большинство провайдеров, например:

  • Beget
  • Timeweb
  • Masterhost

Для безопасности и защиты wp-config

В 99,9% проблемы нет, но перестраховаться стоит. Заходим на сайт и приписываем к адресу /wp-admin.php, смотрим что выдает браузер.

Показан ли wp-config
Отображение wp-config

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

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

18 апреля 2020

Для максимальной SEO оптимизации сайта на WordPress нужно создать robots.txt.

Где лежит файл robots в WordPress

На любом из ресурсов robots.txt должен лежать в корневой папке. В случае с вордпресс, там где находится папка wp-admin и ей подобные. К сожалению, стандартная сборка WordPress не предусматривает наличие такого объекта.

Читать далее →

12 апреля 2020

Решил добавить в свою тему включаемый блок с полями.

Идея в следующем:

Есть обычные посты. Иногда требуется внизу поста добавить данные мероприятия с иконками (адрес, дата, время).

Итак, приступим!

Читать далее →
Теги: WordPress, ACF

9 апреля 2020

Итак, приступим к изменению логина при входе в админ (wp-login.php).

1) создайте картинку с размерами 326х67 пикселей. Это может быть название или адрес вашего блога. Эту картинку нужно положить в папку images вашей темы.

2) откройте файл functions.php (админ WordPress =>Внешний вид => Редактор =>functions.php) и вставьте следующий код между тегами "<?php ?>".

Читать далее →