Htaccess стандартный: Оригинальный файл .htaccess для CMS WordPress

Htaccess WordPress: правильная настройка файла

Лайфхаки на WP

57.7k.

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

Содержание

  1. Где лежит htaccess
  2. Как создать чистый htaccess
  3. Что нужно добавить в htaccess обязательно
  4. Стандартный htaccess
  5. 301 редирект на https
  6. Как должен выглядеть правильный htaccess
  7. Что еще можно подключить в htaccess
  8. Кэш браузера
  9. Gzip сжатие
  10. Для безопасности и защиты wp-config
  11. Вывод настройки

Где лежит htaccess

Htaccess обязательно должен находится в корневой папке сайта, вместе с каталогами типа wp-admin. У меня лежит как показано на снимке, иначе работать не будет, сервер его не найдет.

Где располагается объект

Как создать чистый htaccess

По умолчанию WordPress 5 должен создать htaccess, либо хостер добавляет его в каталог ресурса. Но бывает, что отсутствует, тогда создаем документ на компьютере с названием .htaccess с помощью стандартного блокнота.

Создать в блокноте
  1. В меню выбираем Файл > Сохранить как
  2. Появляется окно, в нем вписываем название и папку для сохранения
  3. Нажимаем на Сохранить

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

Что нужно добавить в 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, смотрим что выдает браузер.

Отображение wp-config

Должна открыться пустая страница или произойти 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.

Вот некоторые шаги из упомянутого выше поста, которым я следовал, чтобы избавиться от этого бэкдора:

  1. Как можно скорее отключите свой сайт и измените права доступа к папке сайта на 600
  2. .
  3. Переименуйте папку веб-сайта (public_html или имя вашего домена) в другое и создайте другую папку с тем же именем, что и оригинал. Поместите в эту папку файл с именем .maintenence. это переведет ваш сайт в режим обслуживания. Вы можете использовать любой HTML-код в файле .maintenance.
  4. Скачать WordPress. Убедитесь, что вы загружаете соответствующую версию.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *