Настройка .htaccess для wordpress? — Хабр Q&A
Здравствуйте! Скажите пожалуйста, объясните… как правильно настроить .htaccess на wordpress. Нужно включить сжатие, добавляю следующий код# BEGIN GZIP COMPRESSION
<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 handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>
# END GZIP COMPRESSION
и ничего не сжимается!
Также нагуглив вот такой код идеального .htaccess, но с ним сайт вообще не загружается и выдает ошибку!
Options +FollowSymLinks -Indexes
RewriteEngine On
# Block out any script trying to base64_encode data within the URL.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block out any script that includes a <script> tag in URL.
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Return 403 Forbidden header and show the content of the root homepage
RewriteRule .* index.php [F]
#
## End - Rewrite rules to block out some common exploits.
#### @RS
# Deny access to php, xml and ini files
# within components and plugins directories
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_URI} \.php|\.ini|\.xml [NC]
RewriteCond %{REQUEST_URI} \/components\/ [OR]
RewriteCond %{REQUEST_URI} ^\/includes\/|^\/administrator\/includes\/ [OR]
RewriteCond %{REQUEST_URI} \/language\/ [OR]
RewriteCond %{REQUEST_URI} \/libraries\/ [OR]
RewriteCond %{REQUEST_URI} \/modules\/ [OR]
RewriteCond %{REQUEST_URI} \/plugins\/ [OR]
RewriteCond %{REQUEST_URI} \/templates\/ [OR]
RewriteCond %{REQUEST_URI} \/xmlrpc\/
RewriteRule ^(.*)$ index.php [R=404,L]
#### @RS
#### @RS
# Prevent most common SQL-Injections
RewriteCond %{query_string} concat.*\( [NC,OR]
RewriteCond %{query_string} union.*select.*\( [NC,OR]
RewriteCond %{query_string} union.*all.*select [NC]
RewriteRule ^(.*)$ index.php [F,L]
#### @RS
#### @RS
# Block most common hacking tools
SetEnvIf user-agent "Indy Library" stayout=1
SetEnvIf user-agent "libwww-perl" stayout=1
SetEnvIf user-agent "Wget" stayout=1
deny from env=stayout
#### @RS
## Begin - Custom redirects
#
# If you need to redirect some pages, or set a canonical non-www to
# www redirect (or vice versa), place that code here. Ensure those
# redirects use the correct RewriteRule syntax and the [R=301,L] flags.
#
## End - Custom redirects
##
# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update Your Joomla! Directory (just / for root).
##
#
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#
# If the requested path and file is not /index.php and the request
# has not already been internally rewritten to the index.php script
RewriteCond %{REQUEST_URI} !^/index\.php
# and the request is for something within the component folder,
# or for the site root, or for an extensionless URL, or the
# requested URL ends with one of the listed extensions
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]
# and the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the index.php script
RewriteRule .* index.php [L]
#
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
<ifmodule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_item_include file \.js$
mod_gzip_item_include file \.css$ </ifmodule>
<IfModule mod_expires.c>
# Enable expiration control
ExpiresActive On
# CSS and JS expiration: 1 week after request
ExpiresByType text/css "now plus 1 week"
ExpiresByType application/javascript "now plus 1 week"
ExpiresByType application/x-javascript "now plus 1 week"
# Image files expiration: 1 month after request
ExpiresByType image/bmp "now plus 1 month"
ExpiresByType image/gif "now plus 1 month"
ExpiresByType image/jpeg "now plus 1 month"
ExpiresByType image/jp2 "now plus 1 month"
ExpiresByType image/pipeg "now plus 1 month"
ExpiresByType image/png "now plus 1 month"
ExpiresByType image/svg+xml "now plus 1 month"
ExpiresByType image/tiff "now plus 1 month"
ExpiresByType image/vnd.microsoft.icon "now plus 1 month"
ExpiresByType image/x-icon "now plus 1 month"
ExpiresByType image/ico "now plus 1 month"
ExpiresByType image/icon "now plus 1 month"
ExpiresByType text/ico "now plus 1 month"
ExpiresByType application/ico "now plus 1 month"
ExpiresByType image/vnd.wap.wbmp "now plus 1 month"
ExpiresByType application/vnd.wap.wbxml "now plus 1 month"
ExpiresByType application/smil "now plus 1 month"
# Audio files expiration: 1 month after request
ExpiresByType audio/basic "now plus 1 month"
ExpiresByType audio/mid "now plus 1 month"
ExpiresByType audio/midi "now plus 1 month"
ExpiresByType audio/mpeg "now plus 1 month"
ExpiresByType audio/x-aiff "now plus 1 month"
ExpiresByType audio/x-mpegurl "now plus 1 month"
ExpiresByType audio/x-pn-realaudio "now plus 1 month"
ExpiresByType audio/x-wav "now plus 1 month"
# Movie files expiration: 1 month after request
ExpiresByType application/x-shockwave-flash "now plus 1 month"
ExpiresByType x-world/x-vrml "now plus 1 month"
ExpiresByType video/x-msvideo "now plus 1 month"
ExpiresByType video/mpeg "now plus 1 month"
ExpiresByType video/mp4 "now plus 1 month"
ExpiresByType video/quicktime "now plus 1 month"
ExpiresByType video/x-la-asf "now plus 1 month"
ExpiresByType video/x-ms-asf "now plus 1 month"
</IfModule>
########## End - Optimal expiration time
<IfModule mod_headers.c>
<FilesMatch "\.(js|css|xml|gz)$">
Header append Vary: Accept-Encoding
</FilesMatch>
</IfModule>
# 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
<Files wp-config.php>
# Запрещаем всем доступ к файлу wp-config.php
order allow,deny
deny from all
</Files>
<Files .htaccess>
order allow,deny
deny from all
</Files>
AddDefaultCharset utf-8
Возможно у кого-то есть идеальный htaccess для wordpress, буду благодарен за помощь!)
Правильный htaccess для WordPress — Как два байта переслать!
Файл .htaccess позволяет задавать дополнительные настройки для работы веб-сервера, такие как: редирект страниц, доступ к папкам и файлам, защита сайта от спама и другие. В данной статье рассматривается конфигурация файла применительно к системе управления WordPress.
Основной файл .htaccess расположен в корневой директории сайта на веб-сервере. Найти его будет не трудно, иногда файл по умолчанию назван как текстовый и имеет вид htaccess.txt
По умолчанию для системы WordPress внутреннее содержимое файла .htaccess имеет следующий вид:
# 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
с www на без www в адресе сайта.
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^www.name\.ru$ [NC] RewriteRule ^(.*)$ http://name.ru/$1 [R=301,L]
и наоборот
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^name\.ru$ [NC] RewriteRule ^(.*)$ http://www.name.ru/$1 [R=301,L]
вместо name нужно подставить конкретное имя домена, зону тоже нужно указывать свою, в данном примере это зона .ru
Кодировка сайта
AddDefaultCharset UTF-8
Защита файла .htaccess
<Files .htaccess> order allow,deny deny from all </Files>
Защита файла wp-config.php
<Files wp-config.php> order allow,deny deny from all </Files>
Запрет доступа по IP адресам
<Limit GET POST> order allow,deny deny from 192.168.0.1 deny from 192.168.0.2 allow from all </Limit>
ip-адреса, разумеется, нужно указывать конкретные 🙂
Защита от спама
Если вы используете комментарии на сайте, то можно установить дополнительную защиту, чтобы помешать спам-ботам обращаться напрямую к файлу wp-comments-post.php.
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .wp-comments-post\.php* RewriteCond %{HTTP_REFERER} !.*name.ru.* [OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule (.*) http://%{REMOTE_ADDR}/$ [R=301,L] </IfModule>
name.ru — это имя вашего домена
Перенаправление страниц ошибок
Можно подготовить свои заранее подготовленные и оформленные в нужном стиле страницы ошибок и сделать перенаправление на них в случае возникновения таких ошибок
ErrorDocument 401 /401.html ErrorDocument 403 /403.html ErrorDocument 404 /404.html ErrorDocument 500 /500.html
Дополнительные файлы .htaccess
Файл .htaccess может располагаться и во вложенных папках! В таком случае, прописанные директивы будут относится к файлам внутри этих папок. По такой схеме можно запретить доступ к конкретным файлам. Например, можно создать пустой файл .htaccess внутри папок wp-content и wp-includes. Теперь можно запретить доступ к файлам по их расширениям:
Order deny,allow Deny from all <Files ~ ".(xml|css|jpe?g|png|gif|js)$"> Allow from all </Files>
Можно запретить доступ к файлам скриптов и стилей:
<Files ~ "\.(js|css)$"> order allow,deny allow from all </Files>
Используйте необходимые настройки и защищайте свои сайты, удачи!
Как настроить файл конфигураций htaccess для CMS WordPress
WordPress — удобная и функциональная платформа для сайтов. На этой платформе удобно работать как новичкам, так и профи, поскольку движок содержит множество функций. А помимо того, что вы можете настраивать сайт при помощи большого количества различных плагинов WordPress, также можно редактировать файл htaccess на сервере. Что он даст вашему сайту и как должен выглядеть правильный конфигурационный документ htaccess для WordPress — вы узнаете в статье.
Как создать htaccess, где он находится и для чего нужен
Неважно для какого движка вы создаете конфигурационный файл — htaccess для WordPress или для прочих CMS; важно то, как вы его наполните. Файл htaccess является документом дополнительных конфигураций сервера Apache. Он содержит различные директивы, которые управляют сервером. Стандартный файл htaccess не содержит полезных функций, потому вам придется их в него добавить самостоятельно.
Обычно, пользователям приходится вручную добавлять файл конфигураций. Но htaccess для WordPress, как правило, уже есть в комплекте с директивами движка. Если вы его не обнаружили, тогда его можно создать самостоятельно при помощи любого имеющегося у вас на компьютере текстового редактора. Для этого добавляете файл с расширением .htaccess — имени у него нет.
Куда сложнее не создать htaccess для WordPress, а настроить его. Ведь именно от наполнения этого файла зависит его роль на сервере. Он может защищать ваши файлы и папки, влиять на скорость загрузки страниц, либо стать элементом для оптимизации ресурса — решать вам. Но учтите, чтобы использовать сложные опции файла, нужно предельно точно знать его синтаксис и правила написания определенных директив. Сразу вы не сможете этим овладеть, потому понадобится время на обучение и практику.
Рекомендуется тестировать ваши первые версии файла htaccess на локальном сервере, чтобы создать правильный конфигурационный файл htaccess для WordPress без каких-либо ошибок.
У файла htaccess нет особых требований по поводу расположения. Вы можете поместить этот файл в любой каталог. Но при этом он не сможет влиять на каталоги, которые находятся выше. То есть если хотите сделать главный файл настроек, то должны его поместить в корень сайт. А по надобности будете создавать дополнительные документы htaccess, и размещать их в нужных папках.
Как должен выглядеть правильный файл конфигураций htaccess
Настройка такого файла должна проходить с учетом особенностей движка Вордпресс. К примеру, в WordPress есть неприятный нюанс — ссылки категорий слишком длинные из-за того, что в них указывается каталог /category/. Если у вас на сервере есть модуль mod_rewrite, то вы с легкостью сможете удалить название этого каталога из ссылок. А короткие ссылки — это залог лучшей индексации ресурса в целом, и отдельных его страниц. Правило для удаления названия папки с категориями выглядит следующим образом: RewriteRule ^category/(.+)$ httр://www.site.ru/$1 [R=301,L].
Если пристально посмотрите на указанное выше правило, то в конце в квадратных скобках увидите R=301 — это редирект. Он нужен для того, чтобы создавать перманентные перенаправления. Вы бы могли не указывать его в правилах переадресаций, но так бы поисковые системы сочли это за накрутку трафика, и наказали бы ваш сайт фильтром. Используйте редирект 301 только для тех случаев, когда уверены, что данные ссылки использовать больше не будете. А если вам нужно организовать временное перенаправление URL, то указывайте 302 редирект.
Многие вебмастера в Вордпресс переусердствуют с добавлением различных плагинов в движок. Со временем это начинает сильно тормозить работу сайту. Поисковые системы любят быстрые веб-ресурсы и наказывают медленные. Для вашего блага лучше быть в группе «любимчиков». Потому вы обязаны добавить кэширование браузера к себе на сайт. И сделать это можно помощи того же файла htaccess. Для этого пропишите две строки с тегами <ifmodule mod_expires.c></ifmodule>. Между ними добавьте теги <filesmatch></filesmatch>. В открывающем теге <filesmatch> вам нужно будет прописать форматы файлов, которые нужно будет кэшировать, через символ «|». Затем укажите серверу, чтобы он использовал специальный модуль при помощи строки: ExpiresActive on. И последняя строка перед закрывающими тегами — это директива ExpiresDefault, которая содержит опцию «access plus» с указанием максимального периода хранения кэша браузерами пользователей.
Еще один способ ускорить загрузку страниц сайта при помощи конфигурационного файла — это активировать сжатие данных. Тогда улучшенную скорость загрузки сайта заметит не только пользователь, который приходит к вам во второй раз, но и новые посетители. При помощи директивы AddOutputFilterByType DEFLATE вам нужно будет указать форматы файлов, которые необходимо сжимать при помощи механизма GZIP. А директива BrowserMatch позволит вам отдельно настроить различные браузеры пользователей, чтобы сделать для каждого посетителя индивидуальную настройку.
Очень важно сразу, как вы запустили сайт, защитить его от хотлинков. Есть множество вебмастеров, которые с радостью поживятся картинками с вашего сайта. Они добавляют к себе на ресурс фото при помощи ссылок с вашего сайта. Таким образом, свой сервер они не нагружают, зато на ваш хостинг увеличивается число запросов. Заблокируете хотлинки — еще больше ускорите работу сайта. А сделать это можно при помощи директив модуля mod_rewrite: RewriteEngine, RewriteCond и RewriteRule.
Рекомендуется также использовать htaccess для защиты различных частей вашего ресурса. Если у вас на компьютере статический IP, то вы можете ограничить доступ к странице авторизации в административную панель при помощи фильтрации. Либо можете добавить дополнительный пароль для открытия этой страницы. Тогда взломщикам придется вдвойне сложно: им нужно будет сначала подобрать пароль для открытия wp-admin, а затем еще взломать саму админку. Разумеется, никто не станет делать двойную работу, и ваш сайт быстро покинут с такими намерениями.
Для блокировки доступа для всех, кроме вашего IP, используйте директивы Deny from (запретить для) и Allow from (разрешить для). Пропишите запрет для всех (Deny from all), а в строке Allow From укажите ваш IP. Точно по такому же принципу вы сможете создать черный список IP-адресов для спамеров. Сначала вы разрешаете доступ к сайту для всех, а потому через строку Deny from прописываете IP тех, кто пытался спамить у вас на сайте, либо тех, кому нельзя входить на ваш ресурс. Для крупных порталов такой способ навряд ли подойдет, но для небольших и стартующих сайтов вполне сгодится.
Если вам покажется, что вы уже все сделали для работоспособности и эффективности сайта, то пришло время изменить страницы с ошибками. Есть страницы, которые пользователь видит по умолчанию, если на сайте возникла ошибка. Они оформлены ужасным образом, и в качестве пояснений там либо что-то на английском, либо написано непонятным для простого пользователя языком. Потому вам лучше создать свои html-страницы. А затем в файле htaccess вы сможете прописать путь для них, используя директиву ErrorDocument. Сделайте так, чтобы эти страницы начали приносить трафик ресурсу, а не были пробоинами в вашем «веб-корабле». Можете либо удивить пользователей красивым дизайном, чтобы им захотелось взглянуть на остальной сайт, либо добавить ссылки на другие разделы, чтобы посетителям захотелось перейти в другую часть ресурса.
В htaccess есть множество других опций, но указанных достаточно, чтобы улучшить работу вашего сайта на движке Вордпресс! Изучайте синтаксис, тренируйтесь, и файл htaccess непременно станет полезным инструментом для вас и вашего веб-ресурса.
Похожие статьи
Настройка файла .htaccess WordPress | SVsites
Важнейший файл. В данном файле задается ряд важных настроек безопасности, кеширования, редиректов, сжатия файлов и много другого.
На самом деле настроек для .htaccess очень и очень много, все зависит опять же от поставленных задач.
Данные настройки являются первоначальными и подойдут для любого сайта на WordPress.
Начальная настройка файла .htaccess WordPress
AddDefaultCharset utf-8
AddType 'text/html; charset=utf-8' .html .htm .shtml
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule (.+)/feed /$1 [R=301,L]
RewriteRule (.+)/comment-page /$1 [R=301,L]
RewriteRule (.+)/trackback /$1 [R=301,L]
RewriteRule (.+)/comments /$1 [R=301,L]
RewriteRule (.+)/attachment /$1 [R=301,L]
RewriteCond %{QUERY_STRING} ^replytocom= [NC]
RewriteRule (.*) $1? [R=301,L]
RewriteCond %{QUERY_STRING} ^attachment_id= [NC]
RewriteRule (.*) $1? [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# защита wp-config.php
<Files wp-config.php>
order allow,deny
deny from all
</Files>
# защита htacces
<Files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</Files>
Настройки, помимо дефолтных, предотвращают образование дублей страниц в поисковой выдаче и закрывают стороннему доступу к файлу wp-config.php и самому .htaccess.
Дополнительные настройки .htaccess WordPress
Помимо основных настроек файла .htaccess можно добавить на усмотрение еще несколько.
Указывем основной домен
Вариант без «WWW»:
# www rewrite
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
Вариант с «WWW»:
# www rewrite
RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
301 редирект со страницы на страницу
В неукоторых случаях нужно переадресовать пользователя и поисковые системы на другую страницу. Для этого в файле .htaccess прописать этот код. Для каждой страницы с новой строки.
# редирект со страницы на страницу
Redirect 301 /old-page/ https://your-domain/new-page/
- old-page — старая страница, пишется без домена;
- https://your-domain/new-page/ — your-domain(ваш домен), new-page(новая страница).
Редирект при смене протокола с http на https
Выбирайте любой вариант редиректа, который будет работать. Чтобы проверить, естественно нужно набрать домен с протоколом HTTP, должна произойти переадресация на HTTPS протокол.
# Begin HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://yoursite.ru/$1 [R,L]
</IfModule>
# END HTTPS
Вместо yoursite.ru впишите свой домен.
# SSL: 301 redirect to https from http
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
Еще вариант редиректа с http на https
# редирект с http на https
RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Или так можно
# SSL: 301 redirect to https from http
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Смотрите также
WordPress .htaccess — полезные советы
Всем привет. Сегодняшняя статья посвящена файлу .htaccess и его настройке. Многие задают вопросы относительно этого файлика и надеюсь, эта статья будет вам в помощь. Итак, файл .htaccess – это конфигурационный файл, который позволяет вам управлять файлами и папками в действующей директории и подкатегориях.
Большинство WordPress-пользователей первый раз знакомятся с этим файлом, когда пытаются кастомизировать вид постоянных ссылок. Чтоб заполучить те симпатичные ссылки, которые мы все знаем и любим (например, http://www.site.com/sample-post/ вместо http://www.site.com/?p=123), нам нужно добавить что-то типа этого в файл .htaccess:# 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
Впрочем, эта проблема сейчас решается и прямо из админки WP.
Но если у вас вообще нет файла .htaccess, то вы можете создать его самостоятельно и загрузить на сервер. Все, что нужно сделать, это создать чистый файл, назвать его .htaccess и загрузить в корневую директорию вашей инсталляции WordPress. Не забудьте пропечатать точку в начале файла (сохраняем файл, как .htaccess, а не htaccess). Также обязательно стоит открыть файл для записи информации, чтоб WordPress смог добавить код правильных пермалинков в ваш .htaccess. WordPress.org советует выставить права 644для файла .htaccess.
Файл .htaccess используется не только для пермалинков. Наиболее известен этот файл тем, что с его помощью можно усилить защиту веб-сайта. В этой статье вы найдете сниппеты для усиления защиты сайта и некоторые другие полезные советы.
Должно быть, вы заметили, что в примере с пермалинками, приведенном выше, код начинается с # BEGIN WordPress и заканчивается с # END WordPress. WordPress может обновлять любой код, помещенный между этих тегов. Таким образом, любой сниппет, предложенный в этой статье, вы можете поместить либо в начало, либо в конец вашего файла .htaccess (например, перед # BEGIN WordPress или после # END WordPress).
Будьте внимательны!
.htaccess – файл довольно капризный: ошиблись в одном символе, и весь сайт рухнул. Так что внимательно копируйте любой код, данный в этой стать, в ваш файл .htaccess. Перед тем, как начать работу с файлом .htaccess, обязательно сделайте копию его последней рабочей версии и храните ее в надежном месте. Если вы загрузили на сервер новую версию .htaccess, обязательно обновите сайт, чтоб увидеть работает ли он. Если вместо сайта вы увидите белый экран, то верните назад сохраненную ранее копию, поместив ее поверх версии, вызвавшей ошибку.
Если не можете найти вашу копию, то загрузите чистый файл htaccess или вообще удалите его. Не испытывайте судьбу, просто всегда держите при себе свежий бэкап.
1. Защитите .htaccess
Так как .htaccess дает так много контроля над папками и файлами, важно скрыть его от чужих глаз. Приведенный ниже сниппет убережет ваш .htaccess от хакеров. Как всегда, вы можете отредактировать ваш файл по FTP.
<files ~ "^.*\.([Hh][Tt][Aa])"> order allow,deny deny from all satisfy all </files>
2. Обезопасьте WP-Config.php
Еще один важный файл – это wp-config.php, ведь он содержит информацию об авторизации для базы данных WordPress, а также другие важные настройки сохранения, так что его нужно убрать из общего доступа.
<files wp-config.php> order allow,deny deny from all </files>
3. Защитите /Wp-Content/
Директория wp-content – одна из самых важных областей вашего WordPress-сайта. Это то место, где хранятся такие жизненно важные файлы, как темы, плагины, загруженные медиа-файлы и файлы кэша, и потому туда так хотят добраться хакеры.
Вы можете закрыть данную директорию от спаммеров и хакеров, создав отдельный .htaccess и добавив туда данный код:
Order deny,allow Deny from all <Files ~ ".(xml|css|jpe?g|png|gif|js)$"> Allow from all </Files>
Вам нужно загрузить данный отдельный файл .htaccess в главную директорию wp-content, например, www.yourwebsite.com/wp-content/. Теперь сюда можно загрузить только файлы с расширениями XML, CSS, JPG, JPEG, PNG, Gif и Javascript, а все остальные типы файлов будут удалены.
4. Заблокируете файлы, не предназначенные для пользователей
Закрыть доступ к определенным файлам можно, добавив этот код в .htaccess:
# Block the include-only files. <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L] </IfModule>
5. Ограничьте доступ к админской области
Хакеры мечтают получить доступ к этой зоне, так как при его обретении с вашим сайтом можно проделать все, что угодно. Чтоб обезопасить данную область, создайте новый файл .htaccess и добавьте код, приведенный ниже.
# Limit logins and admin by IP <Limit GET POST PUT> order deny,allow deny from all allow from 12.34.56.78 </Limit>
Не забудьте сменить 12.34.56.78 на ваш собственный IP-адрес (вы можете узнать ваш IP на сайте What Is My IP?). Затем загрузите файл в папку /wp-admin/ вашего сайта, например, www.ваш сайт.com/wp-admin/.
Теперь доступ к админ-области WordPress есть только у вас. Также можно добавить дополнительные IP адреса для других админов и прочих членов команды. Для этого можно добавить дополнительные строки или перечислить их IP-адреса в главной строке, разделяя их точками.
allow from 12.34.56.78, 98.76.54.32, 19.82.73.64
6. Забаньте недоброжелателей
Если вы знаете IP-адрес недоброжелателя, то используя сниппет, приведенный ниже, вы можете забанить его навсегда.
<Limit GET POST> order allow,deny deny from 123.456.78.9 deny from 987.654.32.1 allow from all </Limit>
7. Направить посетителей на страницу обслуживания.
Такие плагины, Maintenance, хороши, когда нужно отобразить временное сообщение о том, что сайт находится в разработке, в том случае, если вы что-то там меняете или обновляете движок. Но данные плагины бесполезны в случае возникновения Белого экрана смерти WordPress. Так что, если вы желаете подготовиться к худшему, рекомендуется создать базовую HTML-страницу, названную maintenance.html и сообщающую пользователю о том, что с сайтом у вас сейчас проблемы, и он скоро вернется в онлайн. В случае Белого экрана, просто добавьте данный сниппет в ваш файл .htaccess.
RewriteEngine on RewriteCond %{REQUEST_URI} !/maintenance.html$ RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123 RewriteRule $ /maintenance.html [R=302,L]
Вам нужно будет подредактировать код под ваш сайт: изменить имя файла html на ваше название, а также его местоположение во второй и четвертой строках. Вам также нужно добавить ваш собственный IP-адрес в третьей строке для того, чтоб сохранить доступ к веб-сайту для себя и отобразить сообщение для остальных. Код использует 302 редирект для закрытия страницы от индексации.
8. Запретите просмотр папок в браузере
Если вы позволяете кому-то видеть ваши папки и файлы, то вы сильно рискуете. Для того, чтоб отключить просмотр ваших директорий, просто добавьте маленький кусочек кода в .htaccess.
# disable directory browsing Options All -Indexes
9. Включение кэширования браузера
Включенное кэширование позволит посетителям сохранять элементы с ваших веб-страниц без необходимости скачивать их снова. Такое нужно для элементов оформления, типа CSS-файлов и медиа-файлов – картинок. Такая практика не редкость, так как, когда кто-то загружает изображение на ваш сайт, картинка редко загружается по новой. Кэширование также позволяет посетителям загружать изображения, сохраненные на их компьютере, а не тянуть их с вашего сервера. Это также увеличивает скорость загрузки страницы в разы. Чтоб включить кэширование, добавьте этот код в ваш файл .htaccess.
## EXPIRES CACHING ## <IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access 1 year" ExpiresByType image/jpeg "access 1 year" ExpiresByType image/gif "access 1 year" ExpiresByType image/png "access 1 year" ExpiresByType text/css "access 1 month" ExpiresByType application/pdf "access 1 month" ExpiresByType text/x-javascript "access 1 month" ExpiresByType application/x-shockwave-flash "access 1 month" ExpiresByType image/x-icon "access 1 year" ExpiresDefault "access 2 days" </IfModule> ## EXPIRES CACHING ##
10. Редирект URL
301-е перенаправления сообщают поисковым машинам, что ссылки навсегда перенесены в другое место. Их можно использовать, когда нужно перенаправить страницу, папку или даже целый веб-сайт. Также редирект используется, когда нужно изменяется URL страницы. Такое может случиться из-за смены домена, структуры пермалинков или же слагов страниц.
Для изменения местоположения, нужно всего лишь добавить строчку с редиректом 301 вслед за старой локацией, а потом добавить новую локацию. Вот как это работает:
Redirect 301 /oldpage.html http://www.yourwebsite.com/newpage.html Redirect 301 /oldfolder/page2.html /folder3/page7.html Redirect 301 / http://www.mynewwebsite.com/
11. Отключите хотлинкинг
Хотлинкинг – это процесс вставки картинки напрямую с одного сайта на другой. Иными словами, вместо того, чтоб залить картинку на хостинг, злоумышленник просто вставляет ссылку на картинку, которая находится на вашем сайте, в результате чего ваш сайт загружается медленнее, а тарифы хостинга растут в цене. Хотлинкинга можно избежать, позволив выдергивать картинки только тем сайтам, владельцем которых вы являетесь. Добавьте код, приведенный ниже, в файл .htaccess, но убедитесь в том, что изменили URL на адреса собственных сайтов.
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourotherwebsite.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ http://i.imgur.com/g7ptdBB.png [NC,R,L]
Теперь, когда кто-то просматривает ваше изображение через другой URL, то он просто будет видеть изображение, указанное в последней строчке кода. Это изображение можно заменить на что угодно.
Замечание: отключение хотлинкинга может привести к проблемам с отображением изображений в вашем RSS-фиде.
Возможности файла .htaccess в WordPress
На сайте WordPress имеется файл, именуемый как .htaccess. Многие пользователи не предают ему особого внимания и не используют все его возможности. На самом деле файл .htaccess – это дополнительные конфигурации сервера Apache и подобных ему. Что позволяет повысить эффективность сайта, безопасность и внести другие различные расширения. В статье рассмотрим несколько полезных трюков с файлом .htaccess на WordPress.
Примечание: До внесения каких-либо изменений в файл .htaccess сделайте его резервную копию. Просто подключитесь к сайту по FTP и скопируйте файл себе на компьютер. Это в случае если допустите ошибку или что-то пойдет не так, то всегда сможете все вернуть на свои места.
Если вы не обнаружите файла .htaccess в своем корневом каталоге, то его необходимо создать. Для этого откройте блокнот на компьютере и сохраните файл с именем .htaccess. Будьте внимательны не ошибитесь с названием. Стандартное содержимое .htaccess:
# 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
Итак, начнем…
Ограничить доступ к WordPress админке по IP-адресу.
Как говорилось выше файл .htaccess можно использовать для защиты сайта. В этом случае мы защитим WordPress админку путем ограничения доступа по IP-адресу. Скопируй ниже представленный код в свой .htaccess:
AuthUserFile /dev/null AuthGroupFile /dev/null AuthName "WordPress Admin Access Control" AuthType Basic <LIMIT GET> order deny,allow deny from all # whitelist Syed's IP address allow from xx.xx.xx.xxx # whitelist David's IP address allow from xx.xx.xx.xxx # whitelist Amanda's IP address allow from xx.xx.xx.xxx # whitelist Muhammad's IP address allow from xx.xx.xx.xxx # whitelist Work IP address allow from xx.xx.xx.xxx </LIMIT>
Измените значения xx.xx.xx.xxx на свой IP-адрес если вы имеете несколько адресов, то их также добавьте в список.
Отключаем просмотр каталогов WordPress
По рекомендациям знающих людей по безопасности следует отключить просмотр каталогов. Поскольку злоумышленники, хакеры могут увидеть файловую структуру и мало ли обнаружить какую-нибудь уязвимость. Отключить можно в .htaccess добавив единую строчку:
Отключаем php в определенном каталоге WordPress
В взломанные сайты WordPress обычно помещают backdoor файлы. Бэкдор – это программа, файлы, скрипт, который устанавливается взломщиком на взломанную систему с целью повторного доступа. В переводе backdoor, черный ход. Эти файлы часто затачивают под ядро WordPress и помещают в каталоги /wp-includes/ или /wp-content/uploads/. Чтобы повысить безопасность можно отключить поддержку PHP в нужных папках.
Создайте чистый файл .htaccess и поместите в него следующий код:
<Files *.php> deny from all </Files>
После чего загрузите его в такую директорию /wp-content/uploads/ и /wp-includes/.
Защита файла config.php в WordPress
Важным файлом WordPress является также config.php в нем содержится информация о БД. Чтобы обезопасить и защитить от несанкционированного доступа нужно добавить этот код в .htaccess.
<files wp-config.php> order allow,deny deny from all </files>
Редирект 301 в WordPress
Редирек используется в случае перенаправления с одного адреса на другой. Такая необходимость возникает при смене домена или просто переадресации URL. К примеру, переадресация с приставкой «www» и наоборот. Код нужно поместить в .htaccess.
RewriteEngine on RewriteCond %{HTTP_HOST} ^www.вашдомен.сwww RewriteRule ^(.*)$ http://вашдомен.безwww/$1 [R=301,L]
Редирект при смене домена.
RewriteEngine On RewriteCond %{HTTP_HOST} word.ru RewriteRule (.*) http://новыйдомен.ру/$1 [R=301,L]
Блокируем доступ на сайт WordPress по IP
Если вы замечаете какие-то подозрительные посещения на вашем сайте и хотите заблокировать их. То просто добавьте код в.htaccess
<Limit GET POST> order allow,deny deny from xxx.xxx.xx.x allow from all </Limit>
Изменив xxx.xxx.xx.x на IP-адрес, который нужно заблокировать.
Отключаем Hotlinking в WordPress
Отключения хотлинга позволит запретить использования ваших изображений удаленно. Подробнее читайте в статье: Как улучшить скорость WordPress.
Защиты файла .htaccess от нежелательного доступа
Поскольку этот файл обладает такой властью управлением сайта, то логично защитить его от несанкционированного доступа. Нужно лишь добавить следующие строки в .htaccess:
<files ~ "^.*\.([Hh][Tt][Aa])"> order allow,deny deny from all satisfy all </files>
Думаю выше из перечисленных возможностей файла .htaccess в WordPerr можно найти что-то полезное для себя.
Источник: http://www.wpbeginner.com/wp-tutorials/9-most-useful-htaccess-tricks-for-wordpress/
Настраиваем файл .htaccess для WordPress
25 декабря 2011 года, Размещено в категории: WordPress
Добрый день, давайте поговорим про этот файл.
.htaccess — специальный файл, он лежит в корне сайта (если у вас его нету, то надо создать) и выполняет директивы для сервера Апач, то есть через него можно задать инструкции для работы с сервером. Этот файл существует только на Линкус серверах, сервыры с операционной системой Windows имеют другие настройки.
И так, давайте разберёмся с этим файлом поближе.
Обязательно прочтите перед редактированием
— Через файл .htaccess можно полностью заблокировать доступ к сайту, если вы не знаете что делаете, то лучше не трогайте его.
— Сделайте на всякий случай копию старого файла .htaccess, это вам позволит быстро всё восстановить, заменив им новый файл.
— Пользуйтесь текстовым редактором Notepad++, он намного лучше отображает код и не создаёт лишних тегов, символов в сохраняемых файлах.
Основные настройки
Самое первое, что создаёт WordPress, так это вот такой код:
# BEGIN WordPress RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress |
# BEGIN WordPress RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress
Мы задаём указания для сервера, где поясняем — где лежит наш блог. Если в корне сайта, то подходит код, который указан выше, если например сайт на WordPress-е находится в каталоге, то надо указывать вот так:
# BEGIN WordPress RewriteEngine On RewriteBase /blog/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /blog/index.php [L] # END WordPress |
# BEGIN WordPress RewriteEngine On RewriteBase /blog/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /blog/index.php [L] # END WordPress
Безопасность WordPress
С помощью файла .htaccess можно закрыть доступ ко всем файлам, чтоб ни у кого не было возможности открыть файл напрямую, набрав его адрес, в браузерной строке.
<Files ~ "^.*\.([Hh][Tt][Aa])"> order allow,deny deny from all satisfy all </Files> |
<Files ~ «^.*\.([Hh][Tt][Aa])»> order allow,deny deny from all satisfy all </Files>
Блокировка по IP
C помощью этих директив, вы сможете заблокировать пользователя по IP, если вы например не хотите, чтоб он посещал сайт. Строка deny дублируется, и блокировать можно сколько угодно ip адресов.
<Limit GET POST> order allow,deny deny from xxx.xxx.xxx.xxx deny from yyy.yyy.yyy.yyy allow from all </Limit> |
<Limit GET POST> order allow,deny deny from xxx.xxx.xxx.xxx deny from yyy.yyy.yyy.yyy allow from all </Limit>
Закрываем доступ для спамеров
Многие спам боты обращаются напрямую у файлу wp-comments-post.php, который отвечает за приём комментариев на сайте. На этом можно и выловить их, проверяя все обращения к файлу wp-comments-post.php на наличие REFERER, потому что у нормальных пользователей он обязательно будет, а вот спам боты часто его не имеют.
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .wp-comments-post\.php* RewriteCond %{HTTP_REFERER} !.*yourdomain.com.* [OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule (.*) http://%{REMOTE_ADDR}/$ [R=301,L] </IfModule> |
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .wp-comments-post\.php* RewriteCond %{HTTP_REFERER} !.*yourdomain.com.* [OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule (.*) http://%{REMOTE_ADDR}/$ [R=301,L] </IfModule>
*Многие современные программы для спама уже обходят такую фильтрацию, поэтому эти указания для сервера Apache смогут заблокировать только часть спамных комментариев.
Редиректы
Или так называемые перенаправления, они тоже делаются через файл .htaccess.
Самый простой редирект одной страницы, делается вот так:
RewriteEngine on Redirect 302 /page http://google.ru |
RewriteEngine on Redirect 302 /page http://google.ru
Перенаправление всего сайта при склейке, то есть два сайта должны быть идентичными, выполняется вот так:
Options +FollowSymLinks RewriteEngine on RewriteRule (.*) http://newdomain.ru/$1 [R=301,L] |
Options +FollowSymLinks RewriteEngine on RewriteRule (.*) http://newdomain.ru/$1 [R=301,L]
R=301 – редирект постоянный и сайт переехал навсегда. Это означает, что поисковые системы будут передавать весь ссылочный вес новому домену.
Склейка домена с www и без
Сайт должен быть доступен только по одному адресу, это либо с www, либо нет. И для этого, надо склеить эти домены, потому что фактически они считаются дублями сайта и плохо влияют на его авторитет в глазах поисковых систем. Склеить можно вот так:
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^domain\.com$ [NC] RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L] |
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^domain\.com$ [NC] RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
В этом примере, главным доменом будет www.domain.com, а domain.com будет склеено к нему. И все пользователи, которые будут запрашивать домен domain.com, перемесятся на www.domain.com. В обратной ситуации, меняем www по аналогии с примером.
Вывод
Файл .htaccess для WordPress имеет очень много настроек и тонкостей, в этой статья я привёл базовые директивы, которые должен знать каждый вебмастер. Но для специфических задач, вам надо либо экспериментировать, либо идти в google для поиска вариантов решения. Но в любом случае пишите ваши комментарии ниже, постараемся помочь.