Htaccess в wordpress: правильная настройка без проблем

Содержание:

Введение

Когда разговор заходит о лучшей системе для блогов, WordPress всегда выходит на первое место. Несмотря на то, что он чаще всего выступает в роли Системы Управления Контентом (CMS), его основной функцией остается управление блогом. Скорее всего большинство начинающих разработчиков столкнутся с ним в своей карьере, если уже этого не сделали. Одной из интересных тем для таких разработчиков может стать файл .htaccess идущий вместе с WordPress. В сегодняшнем руководстве мы постараемся раскрыть эту тему, объяснив значение в системе WordPress .htaccess файла и покажем как его создать.

Создание файла htaccess для WordPress

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

Теперь можно заняться настройкой. В стандартные настройки входит такая запись:

# BEGIN WordPress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php 
</IfModule>

# END WordPress

Кстати стандартный файл .htaccess для WordPress можно скачать здесь

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

Да да, лучше перестраховаться

<Files .htaccess>
 order allow,deny
 deny from all
 </Files>

Блокировка по IP

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

*где ххх и yyy — ip адреса злодеев

Дополнительная защита сайта от спама

Некоторые спам-боты обращаются к файлу wp-comments-post.php напрямую, а этот файл отвечает за комментарии на вашем. Но можно отловить такие запросы проверяя все обращения  на наличие REFERER, ибо у обычных посетителей он будет, а спам-боты как правило им обделены. (для справки: Referer (HTTP referer) — в протоколе HTTP один из заголовков запроса клиента. Содержит URL источника запроса. Если перейти с одной страницы на другую, referer будет содержать адрес первой страницы. Часто на HTTP-сервере устанавливается программное обеспечение, анализирующее referer и извлекающее из него различную информацию. Так, например, владелец веб-сайта получает возможность узнать, по каким поисковым запросам, как часто и на какие именно страницы попадают люди. )

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*yourdomain.com.* 
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) http://%{REMOTE_ADDR}/$ 
</IfModule>

Настроить перенаправление с www на без www —  редирект 301

Это необходимо сделать. Зачастую многие игнорируют этот параметр.

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.saaait\.ru$ 
RewriteRule ^(.*)$ http://saaait.ru/$1 

Настроить перенаправление с без www на www —  редирект 301

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^saaait\.ru$ 
RewriteRule ^(.*)$ http://www.saaait.ru/$1 

Зачем нужен 301 редирект?

Дело в том, что поисковики считают один и тот же сайт с www и без него разными сайтами. И если вы занимаетесь продвижением сайта, то ссылочный вес может утекать из за такого написания и не правильной настройки. И все внешние ссылки на ваш сайт будут делиться на две части, в зависимости от того, в каком виде размещена ссылка на ваш сайт (с www или же без него), и при отсутствии редиректа вы будете фактически лишаться части ссылок, так как они буду растекаться в итоге на 2 разных сайта.

Удаляем /category/ из адресной строки

По умолчанию категории в WordPress отображаются так: http://urokwp.ru/blog/uroki-wordpress/htaccess-dlya-wordpress
А это не очень хорошо, во-первых очень длинный получается адрес, во-вторых лишняя вложеность в структуре. Сейчас это безобразие исправим с помощью .htaccess:

RewriteRule ^category/(.+)$ httр://www.saaait.ru/$1 

Теперь вид такой: http://urokwp.ru/uroki-wordpress/htaccess-dlya-wordpress

Включаем кэширование браузера

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

FileETag MTime Size
<ifmodule mod_expires.c>
<filesmatch "\.(jpg|gif|png|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 1 year"
</filesmatch>
</ifmodule>

Сжатие данных Gzip

Сжатие данных на сайте тоже позволить увеличить скорость загрузки вашего сайта

<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 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>

Редирект с помощью .htaccess

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

Redirect 301 /subscribe http://example.org/path/to/subscribe

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

RedirectMatch ^/foo/(.*)$ http://example.org/bar/$1

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

rewrite ^/foo/(.*)$ http://example.org/bar/$1 permanent;

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

Description

Redirection is the most popular redirect manager for WordPress. With it you can easily manage 301 redirections, keep track of 404 errors, and generally tidy up any loose ends your site may have. This can help reduce errors and improve your site ranking.

Redirection is designed to be used on sites with a few redirects to sites with thousands of redirects.

It has been a WordPress plugin for over 10 years and has been recommended countless times. And it’s free!

Full documentation can be found at https://redirection.me

Redirection is compatible with PHP from 5.6 and upwards (including 7.4).

Redirect manager

Create and manage redirects quickly and easily without needing Apache or Nginx knowledge. If your WordPress supports permalinks then you can use Redirection to redirect any URL.

There is full support for regular expressions so you can create redirect patterns to match any number of URLs. You can match query parameters and even pass them through to the target URL.

The plugin can also be configured to monitor when post or page permalinks are changed and automatically create a redirect to the new URL.

Conditional redirects

In addition to straightforward URL matching you can redirect based on other conditions:

  • Login status – redirect only if the user is logged in or logged out
  • WordPress capability – redirect if the user is able to perform a certain capability
  • Browser – redirect if the user is using a certain browser
  • Referrer – redirect if the user visited the link from another page
  • Cookies – redirect if a particular cookie is set
  • HTTP headers – redirect based on a HTTP header
  • Custom filter – redirect based on your own WordPress filter
  • IP address – redirect if the client IP address matches
  • Server – redirect another domain if also hosted on this server
  • Page type – redirect if the current page is a 404

Full logging

A configurable logging option allows to view all redirects occurring on your site, including information about the visitor, the browser used, and the referrer. A ‘hit’ count is maintained for each redirect so you can see if a URL is being used.

Logs can be exported for external viewing, and can be searched and filtered for more detailed investigation.

Display geographic information about an IP address, as well as a full user agent information, to try and understand who the visitor is.

You are able to disable or reduce IP collection to meet the legal requirements of your geographic region.

Add HTTP headers

HTTP headers can be adder to redirects or your entire site that help reduce the impact of redirects or help increase security. You can also add your own custom headers.

Track 404 errors

Redirection will keep track of all 404 errors that occur on your site, allowing you to track down and fix problems.

Errors can be grouped to show where you should focus your attention, and can be redirected in bulk.

By default Redirection will manage all redirects using WordPress. However you can configure it so redirects are automatically saved to a .htaccess file and handled by Apache itself.

If you use Nginx then you can export redirects to an Nginx rewrite rules file.

Fine-grained permissions

Fine-grained permissions are available so you can customise the plugin for different users. This makes it particularly suitable for client sites where you may want to prevent certain actions, and remove functionality.

Import & Export

The plugin has a fully-featured import and export system and you can:

  • Import and export to Apache .htaccess
  • Export to Nginx rewrite rules
  • Copy redirects between sites using JSON
  • Import and export to CSV for viewing in a spreadsheet
  • Use WP CLI to automate import and export

You can also import from the following plugins:

  • Simple 301 Redirects
  • SEO Redirection
  • Safe Redirect Manager
  • Rank Math
  • WordPress old slug redirects
  • Quick Post/Pages redirects

Wait, it’s free?

Yes, it’s really free. There’s no premium version and no need to pay money to get access to features. This is a dedicated redirect management plugin.

Please submit translations to:

Что такое файл .htaccess?

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

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

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

Создание перенаправлений с помощью плагина

Разберем, как прописать 301 редиректы в WordPress с помощью плагина Redirection.

  1. Для начала находим и устанавливаем плагин.
  2. После активации плагина Redirection, переходим в панель управления «Настройки» — «Redirection».
  3. В Source URL прописываем старый адрес страницы, в Target URL – новый, на который будет происходить перенаправление.
  4. В Regular expression нужно поставить галочку и нажимаем Add Redirection.

Редирект 301 для данной страницы настроен.

Также тут существует возможность создать временный редирект 307. Его можно использовать, если вы временно изменяете url страницы, например, на время технических работ.

Выбирайте наиболее удобный для вас способ создания и настройки 301 редиректов в Вордпресс и делитесь своим опытом.

P.S. Смотрим новые акрофотки с Марсового поля:

Куда добавлять изменения

Строки, начинающиеся с тега #, являются комментариями и не являются правилами для исполнения .htaccess.

Добавляйте свои комментарии к вашим правилам.

Когда вы добавляете свои правила, добавляйте их выше или ниже стандартных правил Вордпресс.

Не добавляйте и ничего не редактируйте между строками   и . Для мультисайт установок таких комментариев нет, но не добавляйте и не редактируйте ничего в коде для мультисайт установок.

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

Добавляйте свои правила выше или ниже стандартных правил Вордпресс по-одному, пишите к ним комментарии, сохраняйте и проверяйте изменения на сайте.

Если у вас Nginx сервер, здесь вы найдете htaccess — nginx конвертер.

Description

Htaccess plugin is a simple and useful tool which helps to control the access to your WordPress website. Allow or deny access based on a hostname, IP address, IP range, and others. Disable hotlinking and access to xmlrpc.php.

Easily secure your WordPress website!

Free Features

  • Set the order fields:
    • Allow, Deny
    • Deny, Allow
  • Set the argument info to the directive form:
    • Allow
    • Deny
  • Customize .htaccess file
  • Create a backup with the ability to restore .htaccess file
  • Compatible with latest WordPress version
  • Incredibly simple settings for fast setup without modifying code
  • Detailed step-by-step documentation and videos
  • Multilingual and RTL ready

If you have a feature suggestion or idea you’d like to see in the plugin, we’d love to hear about it! Suggest a Feature

Help & Support

Visit our Help Center if you have any questions, our friendly Support Team is happy to help — https://support.bestwebsoft.com/

Translation

  • Polish (pl_PL) (thanks to Damian Dąbrowski)
  • Russian (ru_RU)
  • Ukrainian (uk)

Some of these translations are not complete. We are constantly adding new features which should be translated. If you would like to create your own language pack or update the existing one, you can send the text of PO and MO files to BestWebSoft and we’ll add it to the plugin. You can download the latest version of the program for work with PO and MO files Poedit.

14. Отключите хотлинк картинок

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

Чтобы отключить хотлинк картинок, используйте это код:

Замените на ваш адрес.

Заключение

Здесь находится он-лайн генератор правил для файла .htaccess.

Еще больше крутых снипетов для .htaccess в Максимальной безопасности Вордпресс.

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

  1. Руководство по wp-config.php
  2. Настройки wp-config.php для безопасности Вордпресс
  3. Руководство по безопасности Вордпресс
  4. Как настроить мощную защиту сайта с файрволом на уровне сервера на основе бесплатной версии Sucuri Security

Настройка редиректа с помощью .htaccess

Для внесения изменений в код для данных целей существует ряд директив:

Redirect 301 или RedirectPermanent – перенаправляет конкретные страницы, т.е. в данном случае нужно прописывать правило для каждой страницы отдельно. Например, команда

Redirect 301 /oldpage.html https://site.ru/newpage.html  перенаправляет со старой страницы на новую

RedirectMatch – задает редирект с возможностью использовать регулярные выражения. Например, можно задать новые расширения урлов:

RedirectMatch /(. *)\.php$ https://site.ru$1.html

RewriteRule – используют чаще других, задает правила перенаправления.

Разберем смысл некоторых спецсимволов:

  • . – любой символ;
  • * — 0 и больше символов;
  • $ — конец строки;
  • ^ — начало строки;
  • () – переменная.

И теперь перейдем к рассмотрению примеров 301 редиректов через htaccess.

301 редирект с одного домена на другой

Итак, если нам нужно поставить 301 редирект со старого домена на новый домен, прописываем следующее в .htaccess старого сайта:

1
2
3
4
5
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.old-site\.ru$ 
RewriteRule ^(.*)$ https://new-site.ru/$1 
RewriteCond %{HTTP_HOST} ^old-site\.ru$ 
RewriteRule ^(.*)$ https://new-site.ru/$1 

При этом в robots.txt старого ресурса нужно прописать:

1
2
3
User-agent: Yandex
Disallow:
Host: new-site.ru

301 редирект в .htaccess с index.php на главную

1
2
3
RewriteEngine On
RewriteCond %{THE_REQUEST} ^{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ https://www.site.ru/ 

Удаляем слэш в конце урла

1
2
3
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ 
RewriteRule ^(.*)(/)$ $1 

Если вы не знаете, как прописать код для вашего конкретного случая, можно воспользоваться генераторами 301 редиректов. Например, webconfs.com/htaccess-redirect-generator.php.

5 последних уроков рубрики «Для сайта»

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

  • Material Design — это набирающий обороты тренд от Google. В данной подборке собраны бесплатные темы для WordPress, выполненные в этом популярном стиле.

  • Эффекты на то и существуют чтобы впечатлять наших посетителей. В этой подборке собрано несколько десятков ресурсов, чьи создатели очень постарались впечатлить своих посетителей.

  • 45+ бесплатных материалов для веб дизайнеров за август 2016

    Под конец месяца предлагаем ознакомиться с набором бесплатных материалов для веб дизайнеров за прошедший месяц.

SELinux # SELinux

Security Enhanced linux is a kernel security module that provides mechanisms by which processes can be sandboxed into particular contexts. This is of particular use to limit the actions that web pages can perform on other parts of the operating system. Actions that are denied by the security policy are often hard to distinguish from regular file permission errors.

selinux is typically installed on Redhat family distributions (e.g., CentOS, Fedora, Scientific, Amazon and others).

How to determine if selinux is the problem?

If you are on a debian based distribution, you are probably fine.

Run the following command (on rpm based systems);

and to check whether it is the cause of denials of permissions:

One issue that selinux causes is blocking the wp-admin tools from writing out the `.htaccess` file that is required for url rewriting. There are several commands for inspecting this behaviour

and

You can temporarily disable selinux to determine if it is the cause of the problems;

Using an FTP Client # Using an FTP Client

FTP programs (“clients”) allow you to set permissions for files and directories on your remote host. This function is often called  or  in the program menu.

In WordPress install, two files that you will probably want to alter are the index page, and the css which controls the layout. Here’s how you change index.php – the process is the same for any file.

In the screenshot below, look at the last column – that shows the permissions. It looks a bit confusing, but for now just note the sequence of letters. 

Initial permissions

Right-click ‘index.php’ and select ‘File Permissions’A popup screen will appear.

Altering file permissions

Don’t worry about the check boxes. Just delete the ‘Numeric value:’ and enter the number you need – in this case it’s 666. Then click OK. 

Permissions have been altered.

You can now see that the file permissions have been changed.

Unhide the hidden files

By default, most FTP Clients, including FileZilla, keep hidden files, those files beginning with a period (.), from being displayed. But, at some point, you may need to see your hidden files so that you can change the permissions on that file. For example, you may need to make your  file, the file that controls permalinks, writeable.

To display hidden files in FileZilla, in it is necessary to select ‘View’ from the top menu, then select ‘Show hidden files’. The screen display of files will refresh and any previously hidden file should come into view.

To get FileZilla to always show hidden files – under Edit, Settings, Remote File List, check the Always show hidden files box.

In the latest version of Filezilla, the ‘Show hidden files’ option was moved to the ‘Server’ tab. Select ‘Force show hidden files.’

Стандартный образец .htaccess для WordPress

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

Если не умеете делать резервные копии, то прочитайте эту статью… А я продолжаю!

Как поступить, когда .htaccess отсутствует? Делаем следующее… На рабочем столе, создадим обычный txt-файл и переименуем его в .htaccess! После чего, откройте его с помощью все того же текстового редактора «блокнот», хотя лучше применить «Notepad++»… И запишите туда следующие записи:

Теперь копируем все это дело и сохраняем… Перекидываем обратно в корневую директорию ресурса на хостинге.

Убираем дубли WordPress с помощью .htaccess

Лично я использую .htaccess для перенаправления посетителей или поисковых ботов с одного адреса на другой (редирект). Это в первую очередь необходимо для борьбы с дублированием контента… Если не знаете про что идет речь, то почитайте статью моего партнера — тут, в поиске наберите «дубли», там несколько статей!

Используем .htaccess для борьбы с дублями:

Примеры функций .htaccess для WordPress

Внимание! Данные коды подойдут не для всех из-за особенностей Вашего хостинг-провайдера!

Создадим перенаправление (редирект) на другой домен:

Перенаправление с www.доменс.ru на основной домен сайта доменс.ru

Блокировка доступа к ресурсу для всех:

Блокировка конкретных юзеров к ресурсу по IP:

А вот так, наоборот, открываем доступ к ресурсу для определенных IP

Кэшируем данные в браузере — Сам Google советует применять кэширование информации, чтобы ускорить ресурс. Смысл данной настройки в том, что браузер единожды получает определенные виды данных и далее забирает их из кэша, а не подгружает их заново. Благодаря этому ресурсу добавляется заветная скорость загрузки.

Если первый вариант не сработал, попробуйте вот этот:

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

GZIP-сжатия для: HTML, CSS, JS — ускоряем загрузку блога:

Теперь сделаем кеширование файлов:

Хочу еще раз предупредить о том, что .htaccess для WordPress не игрушка! Вы все делаете на свой страх и риск! Если не уверены, лучше нанять спеца!

До следующих уроков!

PS: Кстати, создал канал на Telegram (https://telegram.me/savme_blog) и приглашаю Вас !

Настройка кэша WordPress внутри .htaccess

Если вы хотите ускорить свой сайт путем кэширования яваскриптов, CSS и картинок, то вы можете запросто настроить это через .htaccess, включив mod_expires.c

# Expires - 2678400s = 31 days
<ifmodule mod_expires.c>
	ExpiresActive On
	ExpiresDefault "access plus 1 seconds"
	ExpiresByType text/html "access plus 7200 seconds"
	ExpiresByType image/gif "access plus 2678400 seconds"
	ExpiresByType image/jpeg "access plus 2678400 seconds"
	ExpiresByType image/png "access plus 2678400 seconds"
	ExpiresByType text/css "access plus 518400 seconds"
	ExpiresByType text/javascript "access plus 2678400 seconds"
	ExpiresByType application/x-javascript "access plus 2678400 seconds"
</ifmodule>

В моем примере я использую кэш на протяжении 31 дня. Вы можете поменять эту настройку на ту, которая нужна именно вам. А вот код для headers:

# Cache Headers
<ifmodule mod_headers.c>
	# Cache specified files for 31 days
	<filesmatch "\.(ico|flv|jpg|jpeg|png|gif|css|swf)$">
		Header set Cache-Control "max-age=2678400, public"
	</filesmatch>
	# Cache HTML files for a couple hours
	<filesmatch "\.(html|htm)$">
		Header set Cache-Control "max-age=7200, private, must-revalidate"
	</filesmatch>
	# Cache PDFs for a day
	<filesmatch "\.(pdf)$">
		Header set Cache-Control "max-age=86400, public"
	</filesmatch>
	# Cache Javascripts for 31 days
	<filesmatch "\.(js)$">
		Header set Cache-Control "max-age=2678400, private"
	</filesmatch>
</ifmodule>

Вы можете настроить параметр max-age как вам самим это заблагорассудится.

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

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