Htaccess WordPress: правильная настройка файла
Лайфхаки на WP
57.7k.
При первичной настройке блога важно разумно сделать все технические составляющие. В первую очередь исправить файл htaccess под WordPress, потому что он регулирует серверные настройки Apache. Статья написана как не нужно делать, а рекомендаций по внедрению кода минимум. Прочитайте внимательно и не делайте грубых ошибок.
Содержание
- Где лежит htaccess
- Как создать чистый htaccess
- Что нужно добавить в htaccess обязательно
- Стандартный htaccess
- 301 редирект на https
- Как должен выглядеть правильный htaccess
- Что еще можно подключить в htaccess
- Кэш браузера
- Gzip сжатие
- Для безопасности и защиты wp-config
- Вывод настройки
Где лежит htaccess
Htaccess обязательно должен находится в корневой папке сайта, вместе с каталогами типа wp-admin. У меня лежит как показано на снимке, иначе работать не будет, сервер его не найдет.
Где располагается объектКак создать чистый htaccess
По умолчанию WordPress 5 должен создать htaccess, либо хостер добавляет его в каталог ресурса. Но бывает, что отсутствует, тогда создаем документ на компьютере с названием .htaccess с помощью стандартного блокнота.
Создать в блокноте- В меню выбираем Файл > Сохранить как
- Появляется окно, в нем вписываем название и папку для сохранения
- Нажимаем на Сохранить
После можно загрузить чистый документ на сервер или редактировать локально на компьютере, а потом перенести.
Что нужно добавить в htaccess обязательно
Перед правкой нужно скачать htaccess на компьютер, чтобы была резервная копия.
На данной стадии посмотрим, что изначально должно быть прописано и добавим обязательные директивы, без которых нельзя начинать работу с сайтом на WordPress.
Стандартный htaccess
Если htaccess не было изначально, то нужно добавить стандартный код, который WordPress прописывает при установке. index\.php$ — [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 "\. cgi-script$ </ifModule>
Такими встроенными возможностями обладают большинство провайдеров, например:
- Beget
- Timeweb
- Masterhost
Для безопасности и защиты wp-config
В 99,9% проблемы нет, но перестраховаться стоит. Заходим на сайт и приписываем к адресу /wp-admin.php
, смотрим что выдает браузер.
Должна открыться пустая страница или произойти 301 переадресация на главную. Если покажется код документа, то нужно срочно его закрывать, просим помощи в поддержке, или прописываем вот такой текст.
<Files wp-config.php> order allow,deny deny from all </Files>
Посетители спрашивают, а нужно ли добавлять правила для плагинов WooCommerce, BBPress, Elementor и им подобным. Отвечу – нет, все встроено в сами плагинах. Будет полезно прочитать как создавать robots txt. В заключении дам видео инструкцию, чтобы сделать процесс более понятным.
Вывод настройки
Настройка htaccess в WordPress не сложная, потому что разработчики и хостер сделали все условия, чтобы снизить количество ошибок. В статье показал правильный вариант, в котором только стандартные директивы и перенаправление на https, остальные функции должны быть встроены и работать изначально. В любом случае сначала пишем в поддержку, и только потом делаем сами.
Пожалуйста, оцените материал:
Валентин
Давно занимаюсь и разрабатываю сайты на WordPress. Считаю что лучшего решения для ведения бизнеса не найти, поэтому считаю долгом делиться информацией с остальными.
.htaccess — стандартные правила
Блог
.htaccess — стандартные правила
Заказать сайт
Обратившись ко мне вы получите надежного и сведущего исполнителя, который быстро и качественно реализует любую задачу для Вас и Вашего бизнеса.
Работа с разделами Битрикс и компонентом catalog.section
Установка платного или бесплатного сертификатов ssl на Битрикс VM/CentOS 7
Битрикс не отправляется почта или попадает в спам
Яндекс.Маркет добавляем к тегу param пользовательский data аттрибут
Работа с датой на php в Битрикс и не только
Ошибки при обновлении Битрикс
Основные константы, функции и способы вывода в шаблонах Битрикс D7 и не только
Смотреть все
Правила .htaccess для стандартного проекта Битрикс
Options -Indexes ErrorDocument 404 /404.php <IfModule mod_headers.c> # Все html и htm файлы будут храниться в кэше браузера один день <FilesMatch "\.(html|htm)$"> Header set Cache-Control "max-age=1" </FilesMatch> # Все css, javascript и текстовые файлы будут храниться в кэше браузера одну неделю <FilesMatch "\.(js|css|txt)$"> Header set Cache-Control "max-age=2592000" </FilesMatch> # Все флэш файлы и изображения будут храниться в кэше браузера одну неделю <FilesMatch "\. (flv|swf|ico|gif|jpg|jpeg|png|webp)$"> Header set Cache-Control "max-age=2592000" </FilesMatch> # Отключаем кеширование php и других служебных файлов <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$"> Header unset Cache-Control </FilesMatch> </IfModule> <IfModule mod_deflate.c> # Выставляем заголовок Content-Encoding: gzip. AddEncoding gzip .gz # Для favicon.ico AddOutputFilterByType DEFLATE image/x-icon # Для CSS-файлов. AddOutputFilterByType DEFLATE text/css # Для JavaScript-файлов. AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/json # Для остальных типов файлов. AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/x-component AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/atom+xml AddOutputFilterByType DEFLATE font/truetype AddOutputFilterByType DEFLATE font/opentype AddOutputFilterByType DEFLATE application/vnd.(.*)$ /bitrix/urlrewrite.php [L] RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}] </IfModule> <IfModule mod_dir.c> DirectoryIndex index.php index.html </IfModule> <IfModule mod_expires.c> ExpiresActive on ExpiresDefault "access plus 1 month" # CSS ExpiresByType text/css "access plus 1 year" # Data interchange ExpiresByType application/atom+xml "access plus 1 hour" ExpiresByType application/rdf+xml "access plus 1 hour" ExpiresByType application/rss+xml "access plus 1 hour" ExpiresByType application/json "access plus 0 seconds" ExpiresByType application/ld+json "access plus 0 seconds" ExpiresByType application/schema+json "access plus 0 seconds" ExpiresByType application/vnd. geo+json "access plus 0 seconds" ExpiresByType application/xml "access plus 0 seconds" ExpiresByType text/xml "access plus 0 seconds" # Favicon (cannot be renamed!) and cursor images ExpiresByType image/vnd.microsoft.icon "access plus 1 week" ExpiresByType image/x-icon "access plus 1 week" # HTML ExpiresByType text/html "access plus 0 seconds" # JavaScript ExpiresByType application/javascript "access plus 1 year" ExpiresByType application/x-javascript "access plus 1 year" ExpiresByType text/javascript "access plus 1 year" # Manifest files ExpiresByType application/manifest+json "access plus 1 year" ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds" ExpiresByType text/cache-manifest "access plus 0 seconds" #Media files ExpiresByType audio/ogg "access plus 3 month" ExpiresByType image/bmp "access plus 3 month" ExpiresByType image/gif "access plus 3 month" ExpiresByType image/jpeg "access plus 3 month" ExpiresByType image/png "access plus 3 month" ExpiresByType image/svg+xml "access plus 3 month" ExpiresByType image/webp "access plus 3 month" ExpiresByType video/mp4 "access plus 3 month" ExpiresByType video/ogg "access plus 3 month" ExpiresByType video/webm "access plus 3 month" #Web fonts # Embedded OpenType (EOT) ExpiresByType application/vnd. ms-fontobject "access plus 3 month" ExpiresByType font/eot "access plus 3 month" # OpenType ExpiresByType font/opentype "access plus 3 month" # TrueType ExpiresByType application/x-font-ttf "access plus 3 month" # Web Open Font Format (WOFF) 1.0 ExpiresByType application/font-woff "access plus 3 month" ExpiresByType application/x-font-woff "access plus 3 month" ExpiresByType font/woff "access plus 3 month" # Web Open Font Format (WOFF) 2.0 ExpiresByType application/font-woff2 "access plus 3 month" # Other ExpiresByType text/x-cross-domain-policy "access plus 1 week" # Others ExpiresByType application/pdf "access plus 3 month" ExpiresByType application/x-shockwave-flash "access plus 3 month" </IfModule> #Отключение любого кеширования, на всякий случай #<filesMatch "\. /FOLDER_EXCLUDE/.*$
Теги:
Предыдущий материал Битрикс: Автоматическая конвертация в webP и вывод изображений в шаблоне сайта
Следующий материал Установка memcached на BitrixVM и его активация в Битрикс
К списку статей
htaccess — Документация WordPress.org
.htaccess — это распределенный файл конфигурации, с помощью которого Apache обрабатывает изменения конфигурации для каждого каталога.
WordPress использует этот файл для управления тем, как Apache обслуживает файлы из своего корневого каталога и его подкаталогов. В частности, WP изменяет этот файл, чтобы иметь возможность обрабатывать красивые постоянные ссылки.
Эту страницу можно использовать для восстановления поврежденного файла .htaccess (например, некорректно работающего плагина).
# НАЧАТЬ WordPress RewriteEngine включен RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Авторизация}] Переписать Базу / Правило перезаписи ^index\. ([_0-9- [Л] Правило перезаписи. index.php [Л] # ЗАВЕРШИТЬ Мультисайт WordPress
Опции
Любые опции, которым предшествуют + , добавляются к текущим действующим опциям, а любые опции, которым предшествуют – , удаляются из действующих опций.
Возможные значения директивы Options — любая комбинация:
Нет
Все параметры отключены.
Все
Все опции, кроме MultiViews. Это значение по умолчанию.
ExecCGI
Выполнение сценариев CGI с использованием mod_cgi разрешено.
FollowSymLinks
Сервер будет переходить по символическим ссылкам в этом каталоге.
Включения
Серверные включения, предоставляемые mod_include, разрешены.
Включает NOEXEC
Включения на стороне сервера разрешены, но команды #exec cmd и #exec cgi отключены.
Индексы
URL-адрес сопоставляется с каталогом, а не DirectoryIndex, форматированным списком каталога.
MultiViews
Контент, согласованный «MultiViews» разрешены с помощью mod_negotiation.
SymLinksIfOwnerMatch
Переходите только по символическим ссылкам, если цель принадлежит тому же идентификатору пользователя, что и ссылка.
Это отключит все опции, а затем включит только FollowSymLinks, что необходимо для mod_rewrite.
Опции Нет Параметры
DirectoryIndex
DirectoryIndex устанавливает файл, который Apache будет обслуживать, если будет запрошен каталог.
Можно указать несколько URL-адресов, и в этом случае сервер вернет первый найденный.
DirectoryIndex index.php index.html /index.php
DefaultLanguage
DefaultLanguage приведет к тому, что все файлы, с которыми еще не связан определенный языковой тег, будут использовать это.
Язык по умолчанию en
Кодировка по умолчанию
Установите кодировку символов по умолчанию, отправляемую в заголовке HTTP. См.: Установка информации о кодировке в .htaccess
AddDefaultCharset UTF-8
Установить кодировку для определенных файлов
AddType 'text/html; кодировка=UTF-8' .html
Набор для определенных файлов
AddCharset UTF-8 .html
ServerSignature
Директива ServerSignature позволяет настроить завершающую строку нижнего колонтитула для документов, созданных сервером. При необходимости добавьте строку, содержащую версию сервера и имя виртуального хоста, на страницы, созданные сервером (внутренние документы об ошибках, списки каталогов FTP, вывод mod_status и mod_info и т. д., но не документы, созданные CGI, или пользовательские документы об ошибках).
On
добавляет строку с номером версии сервера и ServerName обслуживающего виртуального хоста
Off
скрывает строку нижнего колонтитула
Email 9 0003
создает ссылку «mailto:» на ServerAdmin ссылочного документа
SetEnv SERVER_ADMIN admin@site. com Электронная почта для подписи сервера
Принудительная загрузка файлов
Нижеследующее приведет к тому, что любые запросы на файлы, оканчивающиеся на указанные расширения, не будут отображаться в браузере, а вместо этого вызовут диалоговое окно «Сохранить как», чтобы клиент мог загрузить.
Приложение AddType/октетный поток .avi .mpg .mov .pdf .xls .mp4
Сжатие HTTP
Директива AddOutputFilter сопоставляет расширение имени файла с фильтрами, которые будут обрабатывать ответы от сервера перед их отправкой клиенту. Это дополнение к любым фильтрам, определенным в другом месте, включая SetOutputFilter и AddOutputFilterByType. Это сопоставление объединяется с уже действующими, переопределяя любые сопоставления, которые уже существуют для того же расширения. 9Mozilla/4\.0[678] без gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Принудительное сжатие для определенных файлов
SetOutputFilter DEFLATE
Директива Header позволяет отправлять заголовки HTTP для каждого запроса или только для определенных файлов. Вы можете просматривать HTTP-заголовки сайтов с помощью Firebug, Chrome Dev Tools, Wireshark или онлайн-инструмента.
Набор заголовков X-Pingback "http://www.askapache.com/xmlrpc.php" Заголовок устанавливает Content-Language "en-US"
Это удалит заголовки HTTP, используя всегда будет очень стараться их удалить.
Заголовок не установлен Pragma Заголовок всегда отключен WP-Super-Cache Заголовок всегда отключается
Защита паролем при входе в систему
Это очень полезно для защиты файла wp-login.php . Вы можете использовать этот генератор htpasswd.
Базовая аутентификация
AuthType Базовая AuthName "Защищено паролем" AuthUserFile /полный/путь/к/.htpasswd Требовать действительного пользователя Удовлетворить все
Дайджест-аутентификация
AuthType Дайджест AuthName "Защищено паролем" AuthDigestDomain /wp-login.php https://www. askapache.com/wp-login.php AuthUserFile /полный/путь/к/.htpasswd Требовать действительного пользователя Удовлетворить все
Требовать определенный IP-адрес
Это способ разрешить доступ только к определенным IP-адресам.
ErrorDocument 401 по умолчанию ErrorDocument 403 по умолчанию Отклонить заказ, разрешить Запретить от всех Разрешить с локального хоста 198.101.159.98
Защита конфиденциальных файлов
Это запрещает любой веб-доступ к вашему файлу wp-config, error_logs, php.ini и htaccess/htpasswds.
Запретить заказ, разрешить Запретить от всех
Требовать SSL
Это заставит использовать SSL и потребует точное имя хоста, иначе будет перенаправлено на версию SSL. Полезно в файле /wp-admin/.htaccess
.
SSLOptions +StrictRequire SSLRequireSSL SSLRequire %{HTTP_HOST} eq "www.wordpress.com" Документ об ошибке 403 https://www.wordpress.com
- Официальное руководство по HTTP-серверу Apache: файлы . htaccess
- Краткий справочник официальной директивы Htaccess
- Руководство по Htaccess
- Google PageSpeed для разработчиков
- Глупые приемы Htaccess
- Advanced Mod_Rewrite 9023 8
- htaccess для подкаталогов
- Использование постоянных ссылок
- Изменение Права доступа к файлам
- Навыки оболочки UNIX
- API перезаписи
плагинов — Как запретить WordPress изменять разрешения .htaccess по умолчанию на 444
Я установил свой веб-сайт с помощью установщика - фантастика для быстрой установки.
Всего несколько дней назад я начал получать странную ошибку в плагине w3tc, и он попросил меня обновить через ftp, как вы можете видеть ниже:
Я обнаружил, что права доступа к файлу для htaccess были изменены на 444
Независимо от того, сколько раз я пытаюсь изменить его вручную, через некоторое время он становится 444 (около 30 секунд или если я что-то делаю в панели управления wp)
Какое-то время я могу переписать правила, а затем файл возвращается к тому, что вы видите ниже:
У меня есть виртуальный хостинг Hostgator.
Есть ли способ решить эту проблему?
Редактировать: я также пытался добавить данные ftp в свою конфигурацию wp. Не помогло
- плагины
- htaccess
- разрешения
- plugin-w3-total-cache
- ftp
5
Вероятно, ваш сайт взломан. На моем сайте было заражение Darkleech, которое внедрило вредоносный код в wp-includes/nav-menu.php
, в результате чего .htaccess сбрасывался на 444 при любой загрузке страницы.
Я бы порекомендовал вам установить плагин Sucuri и позволить ему восстановить все поврежденные файлы. Предполагая, что ваш сайт был взломан, используйте вкладку Post-Hack для сброса плагинов, паролей и ключей. Также проверьте, не был ли создан другой пользователь-администратор. Используйте их вкладку «Закалка», чтобы защитить как можно больше. Вы также можете установить Wordfence для большей безопасности.
Если вы вносите изменения, а проблема продолжает возвращаться, вероятно, у вас есть брешь на корневом уровне вашего сервера, и тогда вам придется работать с вашим хостинг-провайдером, чтобы попытаться устранить инфекцию.
0
@David, вы правы насчет файла wp-includes/nav-menu.php . Я заметил и удалил его там, но это не помогло.
После нескольких недель исследований я наткнулся на этот пост об удалении бэкдора WordPress, выполнил шаги и вуаля, проблема была решена. Я также связался со своей хостинговой компанией, и они помогли мне усилить безопасность моего WordPress.
Вот некоторые шаги из упомянутого выше поста, которым я следовал, чтобы избавиться от этого бэкдора:
- Как можно скорее отключите свой сайт и измените права доступа к папке сайта на 600 .
- Переименуйте папку веб-сайта (public_html или имя вашего домена) в другое и создайте другую папку с тем же именем, что и оригинал. Поместите в эту папку файл с именем .maintenence. это переведет ваш сайт в режим обслуживания. Вы можете использовать любой HTML-код в файле .maintenance.
- Скачать WordPress. Убедитесь, что вы загружаете соответствующую версию.