Настройка .htaccess для сайта на WordPress. Настройка 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 ^(.*)$ http://%1/$1 [R=301,L]Вариант с «WWW»:
# www rewrite RewriteCond %{HTTP_HOST} !^www\.(.*) [NC] RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]Редирект при смене протокола с http на https
Выбирайте любой вариант редиректа, который будет работать. Чтобы проверить, естественно нужно набрать домен с протоколом HTTP, должна произойти переадресация на HTTPS протокол.
RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]Вместо site.ru, вписываем свой домен.
Еще вариант редиректа с http на https
# редирект с http на https RewriteCond %{HTTP:X-HTTPS} !1 RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]Или так можно
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)\ HTTP/ [NC] RewriteCond %{HTTPS} off [NC] RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,QSA,L]Смотрите также
svsites.ru
Настройка .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 allhastnet.ru
Настройка .htaccess. Полное руководство | GB: Блог о Wordpress и веб-разработке
Сегодня я хочу рассказать о htaccess, файле, который позволяет настраивать веб-сервер Apache. Директивы, которые прописываются в этом файле напрямую влияют на выдачу, которую формирует веб-сервер. Инструмент этот достаточно мощный, использовать его нужно с умом. Статья эта написана больше полугода назад, теперь я снова к ней возвращаюсь, чтобы сделать самым подробным мануалом на эту тему. Сразу напомню, прежде чем что либо менять в htaccess — сделайте копию вашего рабочего файла в укромное место. Мало ли, резервное копирование вообще хорошая вещь, не забывайте об этом. Я разделю статью на несколько подразделов — перенаправление страниц, запрет доступа к определенным файлам, ускорение сайта и прочие штуки, которые так или иначе могут пригодиться в работе ресурса.
Для начала — пару слов, что такое htaccess? Процитирую официальный сайт веб-сервера Apache:
.htaccess файлы (или «распределенные конфигурационные файлы») позволяют задавать большое количество дополнительных параметров и разрешений для работы веб-сервера в отдельных каталогах (папках), таких как управляемый доступ к каталогам, переназначение типов файлов и т. д, без изменения главного конфигурационного файла.
То есть, мы можем управлять поведением сервера в каждой, отдельно взятой папке, что очень удобно.
Директивы htaccess. Перенаправление
Блокируем хотлинки с других сайтов
Есть нехорошие товарищи, которые могут использовать картинки с вашего ресурса для использования в своих проектах. Они используют ваши изображения на своих сайтах, другими словами, используют вашу пропускную способность в своих целях, по аналогии с перемещением изображений на поддомен. Будем с ними бороться… Заменим любую картинку, на которую ведет хотлинк с другого сайта, на какое-нибудь предупреждающее изображение или на что хватит фантазии. В коде не забывайте менять адреса на ваши URL.
RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://(.+\.)?ваш-урл\.com/ [NC] RewriteCond %{HTTP_REFERER} !^$ #Замените путь к картинке RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/noHL.jpg [L]Перенаправим RSS фиды WordPress на Feedburner
Я не думаю, что кто-то пользуется чем-то другим, отличным от Feedburner. Удобно для пользователя, удобно для владельца блога, статистика, опять же. Если вы еще не используете — крайне рекомендую. Код ниже перенаправит все ваши RSS потоки на ваш аккаунт, не забывайте только вставить нужный адрес.
RedirectMatch 301 /feed/(atom|rdf|rss|rss2)/?$ RedirectMatch 301 /comments/feed/(atom|rdf|rss|rss2)/?$ http://feedburner.com/yourfeed/В этом примере идет перенаправление двух потоков: основного RSS и обновление комментариев, если посетитель подписан на обновления.
Изменим страницы ошибок
С хостингом и сайтом случается всякое, поэтому заранее нужно быть готовым к проблемам и сделать свои страницы ошибок. А пользователи в случае проблем будут перенаправлены на соответствующую страницу. На этих страницах можно дать краткую информацию для пользователя, почему такое случилось. Контакты свои оставить, в крайнем случае.
ErrorDocument 400 /errors/badrequest.html ErrorDocument 401 /errors/authreqd.html ErrorDocument 403 /errors/forbid.html ErrorDocument 404 /errors/404.html ErrorDocument 500 /errors/serverr.html #Замените /errors/*.html на путь к вашим страницам ошибокВ этом примере идет перенаправление в случае основных ошибок. 404 я тоже добавил, хотя CMS обычно отрабатывают такие моменты, но бывали случаи.
301 и 302 редирект или перенаправление
301 редирект или, так называемое постоянное перенаправление — говорит о том, что страница поменяла адрес или URL и перенаправляет на новую страницу. Если у вас на сайте была проиндексированная ПС страница, а вы поменяли ее адрес — в обязательном порядке сделайте 301 редирект на новую страницу. При 301 редиректе старая страница не индексируется, а вместо нее «подставляется» новая.
RewriteEngine on Redirect 301 /old-page http://ваш-урл.ру/new-pageСобственно, похожий пример внимательный читатель увидит выше, в случае перенаправления RSS. Да, технология та же. Бывает так, что сайт переезжает на новый домен, нужно сохранить структуру ссылок, а их могут быть сотни и тысячи, на каждую установить перенаправление нереально. Код ниже поможет разобраться с такой ситуацией:
Options +FollowSymLinks RewriteEngine on RewriteRule (.*) [R=301,L]Есть интересная методика «скрытия» внешних ссылок путем 301 редиректа. Допустим, у вас есть «сквозная» ссылка в сайдбаре, которая ведет на ваш профиль в Google+, она внешняя, то есть ведет на внешний ресурс. Для SEO очень хорошо, когда таких ссылок как можно меньше. Можно спрятать их и сделать внутренними.
Технология производства внутренних ссылок из внешних:
- ставим ссылку на мнимую страницу, допустим gering111.com/google-plus
- настраиваем 301 редирект в htaccess с этой страницы на реальную страницу вашего профиля
- посетитель ничего не чувствует, ПС довольны
Подобным образом можно ставить любые другие условно постоянные ссылки. 302 редирект или временное перенаправление говорит ПС, что страница перемещена временно, поэтому индексировать нужно обе страницы, старую и новую.
RewriteEngine on Redirect 302 /old-page http://ваш-урл.ру/new-pageКод абсолютно такой же, как в случае с постоянным перенаправлением. 302 редирект удобно использовать, когда проводятся какие-либо долгосрочные работы на сайте и не нужно показывать посетителям «поломанные» страницы. В таком случае вам поможет этот код:
RewriteEngine on RewriteCond %{REQUEST_URI} !/inside.html$ RewriteCond %{REMOTE_ADDR} !^123.123.123.123 RewriteRule $ /inside.html [R=302,L]Склеиваем сайты с www и без него
Очень плохо, когда сайт доступен по двум адресам, ПС это очень не любят. Склеить это в один адрес поможет код ниже:
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^www.ваш-урл\.com$ [NC] RewriteRule ^(.*)$ http://ваш-урл.com/$1 [R=301,L]В этом примере — главное зеркало это адрес без www. Если необходимо сделать наоборот — поменяйте www местами, сверху уберите, внизу добавьте.
Показ страниц в зависимости от IP
SetEnvIf REMOTE_ADDR 192.168.0.1 REDIR=&quot;redir&quot; RewriteCond %{REDIR} redir RewriteRule ^/$ /about.htmlДобавлять адреса можно дублированием первой строки, в последней — меняется страница для перенаправления.
Перенаправляем на главную
Перенаправление со страниц site.com/index.php и site.com/index.html на страницу site.com/. За код спасибо Василию Красноженову.
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/ RewriteRule ^index\.html$ http://site.com [R=301,L] RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://site.com [R=301,L]Директивы htaccess. Разделяем доступы
Запрет доступа к сайту
Бывает такое, что необходимо запретить доступ посетителям с определенного IP, спамерам или еще кому нехорошему.
Order Allow,Deny Allow from all Deny from 192.168.0.1Добавлять IP в список можно просто добавляя последнюю строку и меняя там адрес на нужный. Противоположная ситуация, когда всем нужно запретить, кроме некоторых IP, тогда используем такой код:
Order Deny,Allow Deny from all Allow from 192.168.0.1Добавлять адреса аналогично предыдущему примеру.
Запрещаем просмотр нежелательным User-Agent
Каждый браузер или приложение, которое запрашивает страницу, так или иначе имеет идентификатор — User-Agent. Можно запретить просмотр нежелательным товарищам. Это могут быть как программы, сканирующие сайты, так и старые браузеры, от поддержки которых вы целиком отказались. Ситуации бывают разные.
SetEnvIfNoCase user-Agent ^FrontPage [NC,OR] SetEnvIfNoCase user-Agent ^Java.* [NC,OR] SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR] SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR] Order Allow,Deny Allow from all Deny from env=bad_botПолный список известных User-Agent вы можете найти на сайте http://www.user-agents.org/
Запрещаем доступ к определенному файлу
В примере стоит запрет на доступ к файлам wp-config и htaccess, тем самым повышается уровень общей защиты. Очень нужная директива, рекомендую добавить в свои файлы
# защищаем wpconfig.php &lt;Files wp-config.php&gt; order allow,deny deny from all &lt;/Files&gt; #защищаем htaccess &lt;Files .htaccess&gt; order allow,deny deny from all &lt;/Files&gt;Аналогично можно защитить css и js файлы, которые используются плагинами:
&lt;Files ~ &quot;\.(js|css)$&quot;&gt; order allow,deny allow from all &lt;/Files&gt;Скачивание определенных типов файлов
Современные браузеры такие умные, что иногда становится страшно. Мой Хром иногда пытается внутри себя открывать для просмотра PDF файлы, иногда вешаясь насмерть. С помощью htaccess можно принудительно сказать браузеру, что делать с тем или иным типом файлов, не оставляя этот момент на его усмотрение. В данном случае это скачивание. Дополнительные типы файлов можно добавить по аналогии.
AddType application/octet-stream .pdf AddType application/octet-stream .zip AddType application/octet-stream .aviОграничение на доступ к админке WordPress
Если у вас постоянный IP адрес, можно только ему давать доступ к админ-панели WordPress
AuthUserFile /dev/null AuthGroupFile /dev/null AuthName &quot;Example Access Control&quot; AuthType Basic &lt;LIMIT GET&gt; order allow, deny deny from all allow from Ваш IP &lt;/LIMIT&gt;Директивы htaccess. Техническая оптимизация и ускорение
Запрещаем автоматическое индексирование файлов
В каждой папке на сайте Apache создает, по умолчанию, индексные файлы, в которых перечисляется, какие файлы в папке находятся. Если вы не хотите давать дополнительную лазейку для злоумышленников — запретите индексирование.
Options -IndexesВключаем gzip сжатие
Вы знаете о том, что данные на сервере можно сжать, а клиент их распакует у себя? Код ниже как раз включает такую штуку. Нужно только убедиться, что gzip разрешен на вашем хостинге, но обычно он есть.
&lt;FilesMatch &quot;\.js.gz$&quot;&gt; ForceType text/javascript Header set Content-Encoding: gzip &lt;/FilesMatch&gt; &lt;FilesMatch &quot;\.css.gz$&quot;&gt; ForceType text/css Header set Content-Encoding: gzip &lt;/FilesMatch&gt; &lt;FilesMatch &quot;\.js$&quot;&gt; ForceType text/javascript RewriteEngine On RewriteCond %{HTTP_USER_AGENT} !&quot;.*Safari.*&quot; RewriteCond %{HTTP:Accept-Encoding} gzip RewriteCond %{REQUEST_FILENAME}.gz -f RewriteRule (.*)\.js$ $1\.js.gz [L] ForceType text/javascript &lt;/FilesMatch&gt; &lt;FilesMatch &quot;\.css$&quot;&gt; ForceType text/css RewriteEngine On RewriteCond %{HTTP_USER_AGENT} !&quot;.*Safari.*&quot; RewriteCond %{HTTP:Accept-Encoding} gzip RewriteCond %{REQUEST_FILENAME}.gz -f RewriteRule (.*)\.css$ $1\.css.gz [L] ForceType text/css &lt;/FilesMatch&gt;Код не работает для изображений, но к ним применять gzip не рекомендуется. Именно такой код установлен у меня.
Сжатие с применением mod_deflate
Ходят слухи, что с помощью этого мода сжимать данные лучше и сайт работает быстрее. Я не могу протестировать, да и не встречал в Интернете подобных тестов. Если у кого есть такая информация — буду благодарен. А код выложу, мало ли
&lt;ifmodule mod_deflate.c=&quot;&quot;&gt; &lt;filesmatch &quot;.(js|css)$&quot;=&quot;&quot;&gt; SetOutputFilter DEFLATE &lt;/filesmatch&gt; &lt;/ifmodule&gt;Включаем кэширование браузера клиента
Интересная директива, которая позволяет использовать кэширование браузера. Указанные типы файлов записываются в кэш браузера и при повторном вызове будут грузиться оттуда, что существенно ускоряет общую скорость загрузки сайта и дает меньшую нагрузку на ваш хостинг.
Header append Cache-Control &quot;private&quot; FileETag MTime Size ExpiresActive On ExpiresDefault &quot;access plus 0 minutes&quot; ExpiresByType image/ico &quot;access plus 1 years&quot; ExpiresByType text/css &quot;access plus 1 years&quot; ExpiresByType text/javascript &quot;access plus 1 years&quot; ExpiresByType image/gif &quot;access plus 1 years&quot; ExpiresByType image/jpg &quot;access plus 1 years&quot; ExpiresByType image/jpeg &quot;access plus 1 years&quot; ExpiresByType image/bmp &quot;access plus 1 years&quot; ExpiresByType image/png &quot;access plus 1 years&quot;Указываем кодировку по умолчанию
WordPress работает с кодировкой UTF8 и делает это хорошо, но чтобы гарантированно избежать проблем с кодировкой — укажите ее принудительно, хуже не будет точно.
AddDefaultCharset UTF-8Ограничиваем число подключений к сайту
Современные браузеры умеют создавать несколько одновременных подключений к серверу, отдающему сайт. Если же у вас маловато ресурсов, можно ограничить число подключений.
MaxClients &lt;количество подключений&gt;При размещении в корневом каталоге, директива работает на весь сайт, если же положить ее в папку с файлами, которые вы отдаете на скачивание — можно ограничить скачивание в несколько потоков.
Разрешаем выполнение php внутри JavaScript
Иногда необходимо выполнить некоторый код внутри скрипта. Этот код поможет включить эту функцию
AddType application/x-httpd-php .js AddHandler x-httpd-php5 .js &lt;filesmatch &quot;\.(js|php)$&quot;&gt; SetHandler application/x-httpd-php &lt;/filesmatch&gt;Вот и все, что касается htaccess и его стандартного использования. Я не стал упоминать о защите папок паролями, потому что не считаю это правильным, о «защите» от спама, путем блокировки запросов запросов без передачи Referer, потому что все современные спам-машины давно умеют это делать. Ну и прочие вещи, которые не считаю грамотно реализованными.
Напоследок хочу представить вам сервис тестирования вашего htaccess файла — http://htaccess.madewithlove.be/. Там все просто, удачного дня
gering111.com
Настройка robots.txt и .htaccess в WordPress
На данный момент WordPress является самой популярной CMS не только для ведения блога, но и для сайтов различных типов. Для успешного развития сайта на нем необходимо правильно настроить файлы robots.txt и .htaccess. Об этом и будет речь.По большей части этот материал предназначен мне «на память». Возможно он поможет еще кому-то.
Итак, файл robots.txt для WordPress может выглядеть примерно так:
User-agent: * Disallow: /wp-admin Disallow: /wp-includes Disallow: /wp-content/plugins Disallow: /wp-content/cache Disallow: /wp-content/themes Disallow: /trackback Disallow: */trackback Disallow: */*/trackback Disallow: */*/feed/*/ Disallow: */feed Disallow: /*?* Disallow: /tag User-agent: Yandex Disallow: /wp-admin Disallow: /wp-includes Disallow: /wp-content/plugins Disallow: /wp-content/cache Disallow: /wp-content/themes Disallow: /trackback Disallow: */trackback Disallow: */*/trackback Disallow: */*/feed/*/ Disallow: */feed Disallow: /*?* Disallow: /tag Host: site.ru Sitemap: http://site.ru/sitemap.xmlОдним словом — данный файл закрывает от индексации поисковиками все то, что индексировать не нужно. Плюс указывает на xml карту сайта, а директива host определяет главное зеркало сайта (с www или без www).
Склейка доменов в .htaccess WordPress
Если вам необходимо склеить домены (с www и без), то воспользуйтесь одним из нужных вам способов.
Главный домен без www (301 редирект с www на без www):
RewriteEngine on RewriteCond %{HTTP_HOST} ^www.site.ru RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]Обратный вариант — главный домен с www
RewriteEngine On RewriteCond %{HTTP_HOST} ^site.ru RewriteRule (.*) http://www.site.ru/$1 [R=301,L] Меток нет. Похожие записи Запись опубликована в рубрике WordPress. Добавьте в закладки постоянную ссылку.kumatoz.ru