Htaccess в wordpress: правильная настройка без проблем
Содержание:
- Введение
- Создание файла htaccess для WordPress
- Редирект с помощью .htaccess
- Description
- Что такое файл .htaccess?
- Создание перенаправлений с помощью плагина
- Куда добавлять изменения
- Description
- 14. Отключите хотлинк картинок
- Настройка редиректа с помощью .htaccess
- 5 последних уроков рубрики «Для сайта»
- SELinux # SELinux
- Using an FTP Client # Using an FTP Client
- Стандартный образец .htaccess для WordPress
- Настройка кэша WordPress внутри .htaccess
Введение
Когда разговор заходит о лучшей системе для блогов, 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.
- Для начала находим и устанавливаем плагин.
- После активации плагина Redirection, переходим в панель управления «Настройки» — «Redirection».
- В Source URL прописываем старый адрес страницы, в Target URL – новый, на который будет происходить перенаправление.
- В 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 в Максимальной безопасности Вордпресс.
Некоторые из этих способов могут уже использоваться на вашем сайте, например, права доступа к файлам и папкам на сервере, или в плагинах безопасности. С точки зрения оптимизации сайта лучше оставить включенные опции только в одном месте.
- Руководство по wp-config.php
- Настройки wp-config.php для безопасности Вордпресс
- Руководство по безопасности Вордпресс
- Как настроить мощную защиту сайта с файрволом на уровне сервера на основе бесплатной версии 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.
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 как вам самим это заблагорассудится.