Правильный htaccess wordpress – Как организовать правильные редиректы в WordPress (https, без www, вход в админку)? — Хабр Q&A

Содержание

Возможности файла .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

Первым делом, после установки WordPress, нужно не только настроить ЧПУ — человеко понятные ссылки, но и позаботиться о безопасности. Частично поможет в этом замечательный файл htaccess WordPress.

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

Где находится файл htaccess WordPress ?

Здесь все очень просто. Открыть и отредактировать файл htaccess WordPress можно двумя способами — напрямую, через файловый менеджер вашего хостинга, либо через FTP клиент, такой как, Total Commander, либо ему подобные.

Для начала зайдите в файловый менеджер в админке хостинга и откройте корневую папку сайта. На разных хостингах она называется по разному.
В TimeWeb — название сайта (по умолчанию wordpress) — publik.html
В Hostland — название сайта — www
Все, это и есть корневая папка вашего сайта. О том как прописать и не заблудиться в папках на хостинге, читайте в этой статье — Как прописать путь к папке, файлу на хостинге.
В корневой папке и находится файл .htaccess WordPress

Защищаем данные файла wp-config.php путем дополнений файла .htaccess WordPress

Итак, открываем файл 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>

Эти настройки htaccess одинаковые по дефолту для всех сайтов на WordPress.
Нам нужно вставить после этих строчек небольшой отрывок кода. Но сначала объясню вкратце, зачем это нужно.
Внося правки, мы первым делом защищаем важный файл wp-config.php от просмотра. Хотя итак, если вы вобьете в браузерную строку название-сайта/wp-config.php, у вас он не откроется, но дополнительная защита никому еще не вредила.

В файле wp-config.php хранятся пароль и логин от базы данных сайта.

Большинство владельцев сайтов на WP закрывают доступ к паролям таким образом, внося коррективы в файл htaccess WordPress, просто добавив строчки:

# защита wp-config.php
<files wp-config.php>
order allow,deny
deny from all
</files>

Тут и комментировать нечего, просто ставится запрет на просмотр файла wp-config.php

Защищаем данные самого файла htaccess WordPress

Ну и аналогичным образом нужно закрыть и сам файл htaccess WordPress:

# защита htacces
<Files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</Files>

В итоге должно получиться все вместе вот так:

# 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>
# защита 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>

Можете просто скопировать и заменить у себя. Но защита сайта этими кодами в htaccess WordPress не ограничивается, нужно будет выбрать и поставить один или несколько плагинов, внести при желании дополнительные настройки в этот же файл.

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

— Задавайте вопросы в комментариях, да и просто делитесь своим мнением.


Лучший способ отблагодарить автора

Похожие по Тегам статьи


Настройка файла .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]

Смотрите также

Настройка .htaccess для сайта на WordPress

У кого уже ломали сайт на WordPress, знают, что хакеры, как правило, изменяют файлы .htaccess и перенаправляют весь трафик от Google или Yandex на другой URL-адрес. Обычно инфицированный php закачивают в папку wp-content / uploads. Если вы используете VPS для вашего сайта, если это возможно, отключите .htaccess в конфигурации Apache и используйте «Дополнительные директивы Apache». Местоположение этой функции можно найти в панели управления вашего хостинга.

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

  • Отключить .htaccess с помощью “AllowOverride None”, это увеличит безопасность и производительность вашего сайта.
  • Всегда делайте бэкап вашего .htaccess перед внесением в него серьезных изменений.
  • .htaccess не единственное звено в безопасности WordPress, всегда используйте последнюю версию WordPress и только проверенные плагины.
  • Перед размещением вашего сайта на какой-либо хостинг всегда обращайте на функции безопасности, которые вам предлагают.
Отключение выполнения PHP скриптов в папке Uploads

Обычно хакеры копируют зараженные файлы или скрипты в директорию wp-content/uploads. В этой папке нет смысла хранить и тем более выполнять .php файлы. Создайте файл .htaccess в папке /wp-content/uploads/ и скопируйте код. Этот код отключит выполнение PHP внутри папки.

# Kill PHP Execution
<Files *.php>
deny from all
</Files>
Защита wp-config.php

Для защиты файла wp-config.php от не авторизованных пользователей, скопируйте код и вставьте в .htaccess файл в корне сайта.

<files wp-config.php>
order allow,deny
deny from all
</files>
Защита .htaccess от не авторизованных пользователей

Для защиты файла .htaccess от несанкционированного доступа, скопируйте и вставьте код в .htaccess .

<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>
Отключение просмотра каталогов в WordPress

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

Options -Indexes
Блокировка выполнения межсайтовых скриптов (XSS)

Следующий фрагмент кода защищает ваш сайт от некоторых распространенных XSS атак , а именно от инъекций и скриптов. Если вы не используете XSS, рекомендуется отключить его.

# Blocks some XSS attacks
<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} (\|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F,L]
</IfModule>
Ограничение доступа в WP Includes

Папка /wp-includes/ содержит ядро WordPress. Для ограничения доступа к папке скопируйте и вставьте код в файл .htaccess.

# Blocks all wp-includes folders and 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>
Ограничение прямого доступа к PHP файлам плагинов и тем

Как упоминалось ранее, нет причин для того, чтобы кто-либо еще имел доступ к файлам плагина или темы, отключение прямых вызовов — хорошая политика безопасности.

# Restricts access to PHP files from plugin and theme directories
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/
RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L]
RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/
RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]
Доступ с определенных IP

Если вы администрируете сайт только с одного компьютера, имеет смысл ограничить доступ к административной части WordPress по IP. Для этого вам нужно добавить небольшой фрагмент кода в файл .htaccess в каталог wp-admin. Этот метод не рекомендуется, если у вас нет статического IP-адреса.

order deny,allow
allow from [insert your IP address]
deny from all

12 самых полезных хитростей с .htaccess для WordPress

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

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

WordPress использует файл .htaccess для создания SEO дружественной структуры URL. Тем не менее, этот файл может сделать намного больше.

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

Файл .htaccess на WordPress сайтеФайл .htaccess на WordPress сайте

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

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

1. Защитите свою админку в WordPress

Вы можете использовать .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
# белый лист IP адресов AndreyEx
allow from xx.xx.xx.xxx
# белый лист IP адресов Дом
allow from xx.xx.xx.xxx
</LIMIT>

 

Не забудьте заменить значения хх на собственный IP-адрес. Если вы используете более одного IP-адреса для доступа к Интернету, убедитесь, что вы добавляете их.

 

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

2. Защита паролем папки администратора WordPress

Если доступ к WordPress сайту из нескольких мест, включая Интернет в общественных местах, то ограничение доступа к определенным IP-адресам не может работать для вас.

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

Во- первых, вам нужно создать файл .htpasswds. Вы можете легко создать с помощью этого онлайн – генератора.

Загрузить этот файл .htpasswds за пределами общедоступного каталога или папки /public_html/. Хороший путь будет выглядеть так:

/home/user/.htpasswds/public_html/wp-admin/passwd/

Затем создайте файл .htaccess и загрузить его в каталог /wp-admin/ и затем добавьте следующий код:

AuthName "Admins Only"
AuthUserFile /home/yourdirectory/.htpasswds/public_html/wp-admin/passwd
AuthGroupFile /dev/null
AuthType basic
require user putyourusernamehere
<Files admin-ajax.php>
Order allow,deny
Allow from all
Satisfy any 
</Files>

 

Важно:

Не забудьте заменить путь  к файлу AuthUserFile на путь файла .htpasswds и добавить имя пользователя.

Подробные инструкции можно найти в руководстве о том, как защитить паролем папку администратора в WordPress.

3. Отключить просмотр каталога

Отключить просмотр каталогаОтключить просмотр каталога

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

Чтобы отключить просмотр каталогов на вашем сайте, вам необходимо добавить следующую строку в файл .htaccess.

4. Отключить выполнение PHP в некоторых каталогах WordPress

Иногда хакеры могут взломать WordPress сайт и установить бэкдор. Эти бэкдоры файлы часто замаскированы как основные WordPress файлы и помещаются в папку /wp-include/ или /wp-includes/ или /wp-content/uploads/.

Более простой способ улучшить безопасность вашего WordPress является отключение выполнения PHP для некоторых WordPress каталогов.

Вам нужно будет создать пустой файл .htaccess на вашем компьютере, а затем вставить следующий код внутри него.

<Files *.php>
deny from all
</Files>

 

Сохраните файл, а затем загрузить его в каталоги /wp-content/uploads/ и /wp-includes/. Для получения дополнительной информации посетите наш учебник о том, как отключить выполнение PHP в определенных каталогах в WordPress.

5. Защита вашего конфигурационного файла wp-config.php в WordPress

Вероятно, самый важный файл в корневом каталоге вашего сайта WordPress является файл wp-config.php. Он содержит информацию о вашей базе данных WordPress и как подключиться к ней.

Чтобы защитить файл wp-config.php от самовольного доступа, просто добавьте этот код в ваш файл .htaccess:

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

 

6. Установка 301 редирект через файл .htaccess

Использование 301 редиректа это самый SEO дружественный способ рассказать пользователям о том, что содержание переехало в новое место. Если вы хотите правильно управлять 301 редиректом в постах и на основе постов, то проверьте наше руководство о том, как настроить переадресацию в WordPress.

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

Redirect 301 /oldurl/ http://www.example.ru/newurl
Redirect 301 /category/television/ http://www.example.ru/category/tv/

 

7. Запрет подозрительных IP-адресов

Вы видите необычно высокие запросы на ваш сайт с определенного IP-адреса? Вы можете легко блокировать эти запросы путем блокирования IP-адреса в файле .htaccess.

Добавьте следующий код в файл .htaccess:

<Limit GET POST>
order allow,deny
deny from xxx.xxx.xx.x
allow from all
</Limit>

 

Не забудьте заменить хх на IP-адрес, который вы хотите заблокировать.

8. Отключить хотлинк на изображение в WordPress с помощью .htaccess

Другие веб-сайты делают непосредственно хотлинкинг изображения с вашего сайта, что может сделать ваш WordPress сайт медленным и превысить лимит пропускной способности. Это не является большой проблемой для большинства небольших сайтов. Однако, если вы используете популярный веб-сайт или веб-сайт с большим количеством фотографий, то это может стать серьезной проблемой.

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

#disable hotlinking of images with forbidden or custom image option
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?andreyex.ru [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.ru [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ – [NC,F,L] 

 

Этот код позволяет только изображения, которое будет отображаться, если запрос происходящие из andreyex.ru или Google.ru. Не забудьте заменить andreyex.ru на собственное доменное имя.

Другие способы защитить ваши изображения можно найти в руководстве по способам предотвращения кражи изображений в WordPress.

9. Защита .htaccess от несанкционированного доступа

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

<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>

 

10. Увеличение загрузки файлов Размер в WordPress

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

Одним из методов, который работал для многих пользователей, добавление следующего кода в файл .htaccess:

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.

11. Запретить доступ к XML-RPC-файл с помощью .htaccess

Каждая установка WordPress поставляется с файлом под названием xmlrpc.php. Этот файл позволяет сторонним приложениям подключаться к WordPress сайту. Большинство экспертов в области безопасности WordPress советуют, что если вы не используете какие-либо сторонние приложения, то вы должны отключить эту функцию.

Есть несколько способов сделать это, один из них, добавив следующий код в файл .htaccess:

# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

 

12. Блокировать сканы автора в WordPress

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

Вы можете блокировать такие сканы, добавив следующий код в ваш файл .htaccess:

# BEGIN block author scans
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} (author=\d+) [NC]
RewriteRule .* - [F]
# END block author scans 

 

Мы надеемся, что эта статья помогла вам узнать самые полезные приемы в файле .htaccess для WordPress.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Попытка номер раз создать почти идеальный htaccess / Habr

    - Google выше ранжирует сайты, которые загружаются быстрее.
    - Если на eBay или Amazone увеличить время загрузки страниц на 9% они теряют 1% прибыли.
    - Сделать свой сайт быстрее, чтобы сэкономить на клиентском трафике и на числе обращений к серверу.

.htaccess — наш герой


Профессионалы знают, что такое htaccess.
Тем кто собираются уйти с народ.ру на php-хостинг только предстоит узнать, что это такое.
Те кто только что установил свои первые jooml'у или wordpress срочно должны узнать о нашем герое — htaccess

Зачем нам .htaccess ?


Представьте, что вы купили себе хостинг и кажется, почти обрели счастье. Но однажды (а может быть дважды, а может и трижды) ваш сайт перестает отвечать на запросы. Начинает медленно грузиться и вообще вести себя странно. А виртуальный хостинг это такая хитрая штука, что помимо вашего сайта на этом сервере находится ещё два десятка других сайтов. Все они разные по мощности, организованности и трафику. И когда ваш сосед по случайности, а может и умыслу запускает на своем хостинге сложные или избыточные в алгоритмах скрипты, это отзывается и на вас.

Или другой пример. Скажем ваш ресурс начинает набирать популярность, но переезжать на выделенный сервер ещё рано, а мощностей VPS уже не хватает. Вас очень может выручить htaccess.

А ещё htaccess может решить некоторые вопросы с безопасностью вашего сайта.

А ещё…


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

1. Первой строкой задаем основные опции:

Options All -ExecCGI -Indexes -Includes +FollowSymLinks

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

Опция -ExecCGI запрещает запуск CGI скриптов. Лучше разрешить только для конкретных папок. Повысит безопасность.
Опция -Indexes запрещает показывать содержимое каталогов, если в них нет индексного файла. На виртуальном хостинге обычно включена по умолчанию. Изменив минус на плюс +Indexes можете наоборот разрешить просмотр содержимого каталога (или каталогов).
Опция -Includes запрещает SSI. Если не знаете, что это — запрещайте (Можно поЯндексировать(!) по запросу Server Side Include если хотите узнать об этом побольше). Можно использовать опцию IncludesNOEXEC, которая разрешит использовать SSI без запуска скриптов.
Опция +FollowSymLinks позволяет использовать символические ссылки на файлы или каталоги, не находящиеся в пределах корня вашего сайта.

ПримечаниеВы можете использовать htaccess с разными настройками для разных каталогов. В корне сайта вы можете объявить -Indexes, а в избранных каталогах создать ещё один файл .htaccess и в нем объявить +Indexes. Помните, что действие опций htaccess распространяет сверху вниз по дереву каталогов до самой глубокой вложенности, пока не будут отменены другим htaccess.

Необязательно полностью перечислять все опции в дочерних .htaccess если они не изменяются. Достаточно указать (переназначить) только те опции и директивы, которые изменяются. Остальные опции также унаследуются от родителя.


ПримерСкажем, у вас есть вот такой путь /site/folder_one/subfolder/other/
В файле /site/.htaccess вы указываете:
Options  -Indexes
Allow from all

В файле /site/folder_one/.htaccess указываете:
Deny from all

В файле /site/folder_one/subfolder/.htaccess указываете:
Options  +Indexes
Allow from all

Получиться вот что:
В папке site будут показываться файлы любого содержания, если только к ним напрямую обратиться. Или индексный файл, если не явного обращения к одному из файлов. В случае отсутствия индексного файла получена 403 ошибка.
К папке folder_one доступ закрыт. Даже если знать имя файла и набрать его в адресной строке в ответ сервер вернет ошибку 403.
Папка subfolder разрешена для обращений по прямому адресу или же в случае отсутствия индексного файла покажет содержимое каталога. Эти же права распространяться и на папку other.
Если убрать файл ,htaccess из папки folder_one, то она унаследует права от родительской site.

2. Немного SEO (куда же без него)
<IfModule mod_rewrite.c>
	RewriteEngine on
	RewriteBase /
	RewriteCond %{HTTP_HOST} ^black-web
	RewriteRule (.*) http://www.black-web.ru/$1 [R=301,L]
	RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
	RewriteRule ^index\.php$ http://www.black-web.ru/ [R=301,L]
</IfModule>

Обязательно не забыть про условие . Не окажись у хостера данного модуля и ваш сайт станет выдавать 500-ую ошибку. Данный конкретный модуль входить в сборку Апача по-умолчанию. Ну а вдруг… Хостеры и их админы бывают всякие.

В данной части пользы больше для SEO. Модуль rewrite как следует из его названия занимается перенаправлениями (привет Кэпу).

В этой части файла мы указали две склейки: мы склеили ваш_сайт и www.ваш_сайт Даже если пользователь наберет ваш сайт без WWW его перебросить 301 редериктом на www.ваш_сайт.
А также мы избавились /index.php в строке запроса. Если пользователь наберет www.ваш_сайт/index.php его перебросит (снова 301 редериктом) на www.ваш_сайт.
Теперь поисковики не будут путаться между www и не будут дублировать главную страницу в результатах индексирования вашего сайта. Гуглим СЕО склейки домена, если не понимаете зачем это нужно.

3. Кто в папке главный?

Если у вас папке есть файлы index.html и index.php (не знаю, зачем и кому такое было нужно, но не раз видел такое) то как указать серверу кто их них более индексный?

DirectoryIndex index.php

А ещё можно там указать скажем roosso.php и тогда набрав в строке запроса адрес сайт.бла/бла/бла/ вы увидете не index, а roosso

4. Ещё настройки…

<IfModule mod_setenvif.c>
	SetEnv TZ Europe/Moscow
</IfModule>
ServerSignature Off
AddDefaultCharset UTF-8

Первая строчка устанавливает часовой пояс. Например в Apache 2.22.22 был баг связанный с этой опцией. Функции времени в php не работали, пока не установишь часовой пояс.

Вторая строка это подпись сервера. Вы их не раз видели на всяких системных страницах типа 500ой ошибки или 403ей. Обычно там какая-нибудь техническая информация и почта вебмастера. Я предпочитаю даже в таких мелочах скрывать данные о софте на сервере. Коллеги параноики меня поддержат.

Угадайте, что делает третья строка?

5. Когда нет доступа к php.ini

С помощью .htaccess мы также можем управлять рядом настроек PHP. На виртуальном хостинге, как правило, нет возможности изменять настройки php.ini. Чаще всего этого и не требуется. Но все же есть ряд опций контроль над которыми может нам быть полезен. Например, увеличить лимит на загрузку файлов, или лимит передачи данным методом POST.

<ifModule mod_php.c>
  php_value	upload_max_filesize	32M
  php_value	post_max_size		10M
  php_value	default_charset utf-8
  php_value	max_execution_time 200
</ifModule>

Первая строчка разрешить загружать файлы размером до 32 Мегабайт. По умолчанию в php обычно это значение 8 или 16 мегабайт.
Второй строкой разрешаем постинг объемом до 10 мегабайт. По умолчанию это значение обычно 2 Мегабайта.
Третья строка устанавливает кодировку по используемую вашими скриптами. По своей сути она дублирует строку: «AddDefaultCharset UTF-8». Но я чаще прибегаю к установке кодировки именно через php.
Четвертой строкой изменяем лимит времени выделенный на выполнение скрипта. По умолчанию он обычно равен 30 секундам. Но иногда для выполнения каких нибудь сложных обработок требуется больше времени.

6. Типы файлов. Ловкость рук и ни какого мошенничества.

В моей практике случалось пару раз, что после какого либо обновления провайдером софта, слетали типы файлов. Хотя такое редко. За 10 лет, всего два случая. Но иногда мне нужно было заставить html работать как php. А иногда требуется научить апач различать типы файлов, которые ему неизвестно. (Как оказалось Апачу вообще мало что известно из редких типов файлов.) В такой ситуации нас спасет следующий код:

AddHandler application/x-httpd-php .html
AddHandler cgi-script .pl .py .jsp .asp .htm .shtml .sh .cgi
AddType application/x-javascript .js
AddType text/css .css
AddType text/xml .xml
AddType application/octet-stream .doc .mov .avi .pdf .xls 
# ForceType application/x-httpd-php

Первая строчка позволит нашим php файлам иметь расширение html, но выполняться как php. Полезно бывает во многих случаях. А в старые добрые когда поисковики индексировали ЧПУ лучше, такая строчка всегда приходила на выручку.
Мы можем переназначить, добавить или подменить любые типы файлов под удобные нам разрешения.

Интересный трюкКстати, вы можете легко написать к примеру вот такую строку:
AddHandler application/x-httpd-php .i

Потом переименовать все ваши файлы, изменив расширение на .i (не забыв конечно про ссылки) и адреса файлов у вас на сайте будут не сайт.мой/index.php?uri а сайт.мой/index.i?uri

Например я пишу

AddHandler application/x-httpd-php .roosso

и создаю в корне своего сайта файл alex.roosso внутри обычный php код. Это вроде как страница обо мне любимом. И в адресной строке она будет выглядеть как www.black-web.ru/alex.roosso (ссылка рабочая, можете посмотреть что это так).
Второй строкой указано, какие расширения файлов должны выполняться как cgi скрипты.

Третья, четвертая и пятая строки, на всякий случай уточняют мим-тип файлов с разрешением css, js, xml. Не путайте с присвоением заголовка в ответе сервера на запрос, как это сделано в первых двух строках.

Шестая строчка это участка, нужна если на вашем сайте есть скачиваемый для пользователей контент. Если добавить эту строку, то при обращении к данным файлам им будет предлагаться скачать их на компьютер, а не как это сейчас в современным браузерах куча плагинов, которые даже word открывают в браузере.

Седьмую строку я закомментировал. Это строчка в принудительно-добровольном порядке, будет все файлы с вашего сервера запустить как php. Её лучше использовать лишь в отдельных папках, при необходимости.

7. Знают взрослые и дети, что архивы меньше весят…

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

У Апача есть два модуля сжатия. Оба не являются модулями по умолчанию, поэтому необязательно могут присутствовать у вашего провайдера. Но как показала практика у 99% провайдеров один из них стоит. Наиболее распространен mod_deflate. Чтобы его с помощью сжимать весь контент на вашем сайте добавьте в .htaccess следующие строки:

<ifModule mod_deflate.c>
	AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
</ifModule>

Как видите мы должны перечислить mime type файлов, которые следует подвергать сжатию. Сюда можно добавить и видео и картинки, но толку это даст мало. Потому что jpeg или gif уже сами по себе являются сжатыми форматами. Также как avi или flv. Вы фактически нечего не выиграете указав их.

Второй менее популярный модуль это mod_gzip, Чтобы включить сжатие с его помощью добавьте вот такие строчки:

<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		^text\.*
	mod_gzip_item_include mime		^application/x-javascript.*
	mod_gzip_item_exclude mime		^image\.*
	mod_gzip_item_exclude rspheader	^Content-Encoding:.*gzip.*
</IfModule>

Данный модуль умеет работать с масками, что несомненно большой плюс. Да и синтаксис у него куда более гибкий чем у предыдущего. Но используют его реже. А по сжатию я даже не берусь судить, который из модулей лучше. Я сильной разницы не заметил при тестах.

8. А ещё быстрее можно?

Можно. Если применить кеширование страниц. У кеширования есть и плюсы и минусы, поэтому подходить к этому вопросу надо подготовившись. Для динамически обновляющегося сайт каждый 2-3 минуты, например популярного форума, нужно учесть, что пользователь должен видеть актуальную информацию. Но у любого сайт есть контент, который более или менее статичен. Например те же картинки, или файлы стилей. Поэтому нам потребуется по разному использовать кеширование различного содержимого на сайте. В html разметки мы всегда можем использовать meta теги. И через php мы может устанавливать заголовки ответа сервера. Остается вопрос, как быть с css, js, image и т.д. и т.п.

Помочь нам в этом могут два модуля: mod_headers и mod_expires которые могут установить заголовки в ответ сервера и подсказать вашему браузеру, что и как нужно кешировать. Один из модулей обычно стоит у провайдера, но как и в случае с любым модулем, который не входит в стандартную сборку Апача, 100% гарантии никто вам не даст. Поэтому снова во избежание 500й ошибки указывает условия для каждого из модулей.

<ifModule mod_headers.c>
	#кэшировать html и htm файлы на один день
	<FilesMatch "\.(html|htm)$">
		Header set Cache-Control "max-age=43200"
	</FilesMatch>
	#кэшировать css, javascript и текстовые файлы на одну неделю
	<FilesMatch "\.(js|css|txt)$">
		Header set Cache-Control "max-age=604800"
	</FilesMatch>
	#кэшировать флэш и изображения на месяц
	<FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png)$">
		Header set Cache-Control "max-age=2592000"
	</FilesMatch>
	#отключить кэширование
	<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
		Header unset Cache-Control
	</FilesMatch>
</IfModule>

Вот такой синтаксис у mod_headers. Думаю по комментариям ясно что к чему.
В данной секции я отключил кеширование php файлов. Хотя по моему мнению небольшой временной интервал кеширования им не повредит. 5-30 секунд, это интервал времени, за который мало что меняется. А многие пользователи любят пользоваться клавишей back (вернуться назад). Чтобы не загружать им страницу второй раз, а подхватить её из кеша, разумный интервал кеширования все же уместен.

Во второй секции где идут условия для mod_expires я именно так и делаю — для php ставлю небольшой интервал кеширования.

<ifModule mod_expires.c>
	ExpiresActive On
	#по умолчанию кеш в 5 секунд
	ExpiresDefault "access plus 5 seconds"
	#кэшировать флэш и изображения на месяц
	ExpiresByType image/x-icon "access plus 2592000 seconds"
	ExpiresByType image/jpeg "access plus 2592000 seconds"
	ExpiresByType image/png "access plus 2592000 seconds"
	ExpiresByType image/gif "access plus 2592000 seconds"
	ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
	#кэшировать css, javascript и текстовые файлы на одну неделю
	ExpiresByType text/css "access plus 604800 seconds"
	ExpiresByType text/javascript "access plus 604800 seconds"
	ExpiresByType application/javascript "access plus 604800 seconds"
	ExpiresByType application/x-javascript "access plus 604800 seconds"
	#кэшировать html и htm файлы на один день
	ExpiresByType text/html "access plus 43200 seconds"
	#кэшировать xml файлы на десять минут
	ExpiresByType application/xhtml+xml "access plus 600 seconds"
</ifModule>

9. Правила вежливого тона…

В процессе модернизации своего сайта, мы часто оставляем хвосты ввиде ссылок, которые ведут на страницы, которые мы удалили. Иногда такие ссылки идут с других сайтов или из поисковых систем. Чтобы не терять пользователей вежливым тоном считается иметь собственные страницы для различного типа ошибок. Включая даже ошибки сервера. Например стандартное сообщение о 500й ошибки очень скучное и мрачное, и вряд ли вызовет у пользователя желание посетить вашу страницу ещё раз. Но в htaccess есть приемы, которые могут сделать даже эту страницу приветливей.

# Bad Rquest
ErrorDocument 400 /400.html
# Authorization Required
ErrorDocument 401 /401.html
# Forbidden
ErrorDocument 403 /403.html
# Not found
ErrorDocument 404 /404.html
# Method Not Allowed
ErrorDocument 405 /405.html
# Request Timed Out
ErrorDocument 408 /408.html
# Request URI Too Long
ErrorDocument 414 /414.html
# Internal Server Error
ErrorDocument 500 /500.html
# Not Implemented
ErrorDocument 501 /501.html
# Bad Gateway 
ErrorDocument 502 /502.html
# Service Unavailable 
ErrorDocument 503 /503.html
# Gateway Timeout
ErrorDocument 504 /504.html

Для 400-х ошибок можно использовать и динамические страницы на php. А вот для 500 лучше сделать на html и js. Это часть ошибок обычно связана с ошибками сервера (в большинстве случаев) и php или cgi как правило в такой ситуации не работают.

Если вам лень делать столько страниц устанавливайте страницей ошибок главную страницу своего сайта или карту сайта.

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

10. Подведем итог

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

В результате всех манипуляций у нас должен был получить файл следующего содержания:

Options All -ExecCGI -Indexes -Includes +FollowSymLinks

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    RewriteCond %{HTTP_HOST} ^black-web
    RewriteRule (.*) http://www.black-web.ru/$1 [R=301,L]
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
    RewriteRule ^index\.php$ http://www.black-web.ru/ [R=301,L]
</IfModule>

DirectoryIndex index.php

<IfModule mod_setenvif.c>
	SetEnv TZ Europe/Moscow
</IfModule>
ServerSignature Off
#AddDefaultCharset UTF-8
<ifModule mod_php.c>
	php_value	upload_max_filesize	32M
	php_value	post_max_size		10M
	php_value	default_charset utf-8
	php_value	max_execution_time 200
</ifModule>
AddHandler application/x-httpd-php .html
AddHandler cgi-script .pl .py .jsp .asp .htm .shtml .sh .cgi
AddType application/x-javascript .js
AddType text/css .css
AddType text/xml .xml
AddType application/octet-stream .doc .mov .avi .pdf .xls 
# ForceType application/x-httpd-php

<ifModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
</ifModule>

<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		^text\.*
    mod_gzip_item_include mime		^application/x-javascript.*
    mod_gzip_item_exclude mime		^image\.*
    mod_gzip_item_exclude rspheader	^Content-Encoding:.*gzip.*
</IfModule>

<ifModule mod_headers.c>
    #кэшировать html и htm файлы на один день
    <FilesMatch "\.(html|htm)$">
        Header set Cache-Control "max-age=43200"
    </FilesMatch>
    #кэшировать css, javascript и текстовые файлы на одну неделю
    <FilesMatch "\.(js|css|txt)$">
        Header set Cache-Control "max-age=604800"
    </FilesMatch>
    #кэшировать флэш и изображения на месяц
    <FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png)$">
        Header set Cache-Control "max-age=2592000"
    </FilesMatch>
    #отключить кэширование
    <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
        Header unset Cache-Control
    </FilesMatch>
</IfModule>

<ifModule mod_expires.c>
    ExpiresActive On
    #по умолчанию кеш в 5 секунд
    ExpiresDefault "access plus 5 seconds"
    #кэшировать флэш и изображения на месяц
    ExpiresByType image/x-icon "access plus 2592000 seconds"
    ExpiresByType image/jpeg "access plus 2592000 seconds"
    ExpiresByType image/png "access plus 2592000 seconds"
    ExpiresByType image/gif "access plus 2592000 seconds"
    ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
    #кэшировать css, javascript и текстовые файлы на одну неделю
    ExpiresByType text/css "access plus 604800 seconds"
    ExpiresByType text/javascript "access plus 604800 seconds"
    ExpiresByType application/javascript "access plus 604800 seconds"
    ExpiresByType application/x-javascript "access plus 604800 seconds"
    #кэшировать html и htm файлы на один день
    ExpiresByType text/html "access plus 43200 seconds"
    #кэшировать xml файлы на десять минут
    ExpiresByType application/xhtml+xml "access plus 600 seconds"
</ifModule>

# Bad Rquest
ErrorDocument 400 /400.html
# Authorization Required
ErrorDocument 401 /401.html
# Forbidden
ErrorDocument 403 /403.html
# Not found
ErrorDocument 404 /404.html
# Method Not Allowed
ErrorDocument 405 /405.html
# Request Timed Out
ErrorDocument 408 /408.html
# Request URI Too Long
ErrorDocument 414 /414.html
# Internal Server Error
ErrorDocument 500 /500.html
# Not Implemented
ErrorDocument 501 /501.html
# Bad Gateway 
ErrorDocument 502 /502.html
# Service Unavailable 
ErrorDocument 503 /503.html
# Gateway Timeout
ErrorDocument 504 /504.html

11. Послесловие.

Я старался не спешить в написании статьи и на это ушли почти сутки. Но все же где то я мог допустить ошибки в орфографии или пунктуации. Прошу не казнить, а миловать. А лучше писать в личку, чтобы я поправил ошибки.

И напоследок для любителей экспериментов несколько строк .htaccess. Сужу по своему опыту — на практике знания усваиваются лучше чем в теории.

Разные интересные примеры
# SECURE ____________________
<IfModule mod_ssl.c>
	SSLOptions +StrictRequire
	SSLRequireSSL
	SSLRequire %{HTTP_HOST} eq "black-web.ru"
</IfModule>
<IfModule mod_rewrite.c>
	RewriteCond %{HTTPS} !on
	RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</IfModule>

# HOTLINKING ________________
<IfModule mod_rewrite.c>
	RewriteCond %{HTTP_REFERER} !^$
	RewriteCond %{HTTP_REFERER} !^http://([ -a-z0-9]  \.)?black-web\.ru [NC]
	RewriteRule \.(gif|jpe?g|png)$ - [F,NC,L]
</IfModule>

# REDIRICT __________________
Redirect 301 /index.html /index.php
<IfModule mod_rewrite.c>
	RewriteRule ^news/([^/\.]+)/?$ news.php?news=$1 [L]
	RewriteRule ^(.*\.((js)|(css)))$ plugin/GzipFile.php?file=$1
	RewriteRule \.css$ plugin/GzipFile.php?file=$1
	RewriteRule \.js$ plugin/GzipFile.php?file=$1
</IfModule>
RedirectMatch 301 /blog(.*) http://www.black-web.ru/$1

P.S.

… Для тех у кого всё получилось, идём на www.webpagetest.org мерять красоту до и после.
Andrey_Zentavr
Кому надо берите полностью готовый .htaccess здесь
Данный файл показал самую высокую производительность на тестах.
Также там куча всего закомментировано о чем я не упомянул в статье и что может пригодиться в тех или иных случаях.

Как настроить файл конфигураций 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 непременно станет полезным инструментом для вас и вашего веб-ресурса.

Похожие статьи

Отправить ответ

avatar
  Подписаться  
Уведомление о