Цей пост буде корисний тим, хто додає/змінює стандартні правила .htaccess, що використовує  WordPress .

За замовчуванням,  WordPress автоматично може змінювати вміст файлу  .htaccess в корені вашого сайту, якщо йому це потрібно. Це може відбуватися, наприклад, якщо ви встановили якийсь плагін, що додає нові види посилань на сайті, чи змінили налаштування “постійних посилань” в адмінці.

Стандартний  код в цьому файлі для коректної роботи вордпрес виглядає так:


            
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
Code language: HTML, XML (xml)

WordPress, за потреби щось змінити, орієнтується на вказані на початку та наприкінці коментарі “# BEGIN WordPress” та “# END WordPress“, та модифікує лише те, що знаходиться між ними.

Суть запропонованого метода полягає в тому, що ми пропишемо двічі цей “стандартний” код, але в одному випадку із вказаними коментарями та “хаком”, щоб цей код не працював, а другий зі зміненими коментарями. Описано трохи заплутано, тому краще просто погляньте далі, і все стане на свої місця:

# Рішення від https://m0n.co/08 <IfModule mod_ignore_wordpress.c> # 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 </IfModule> # CUSTOM WORDPRESS <IfModule mod_rewrite.c> RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Якесь ваше правило 1 # Якесь ваше правило 2 # ........................ RewriteRule . /index.php [L] </IfModule>
Code language: PHP (php)

Пояснення до коду досить просте…

Перша половина коду “загорнута” в умову IfModule mod_ignore_wordpress.c , тобто ця половина коду буде працювати лише тоді, коли умова виконується. Суть умови – “якщо на вебсервері увімкнено модуль mod_ignore_wordpress.c“.

Оскільки назва модуля mod_ignore_wordpress.c вигадана, ця умова ніколи не буде виконуватись, і код всередині умови також.

Оскільки цей код містить коментарі “# BEGIN WordPress” та “# END WordPress” – то вордпрес усі зміни буде вносити між цими коментарями, але впливу на роботу сайту це не матиме жодного, оскільки код всередині умови, яка не виконується.

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

Проте за актуалізацією другої половини необхідно слідкувати вручну, але таке вже життя 🙂 , якщо щось кастомне дописуєш.

Author

Дмитро Кондрюк в веб-індустрії з 2003 року. В 2009р. заснував проект Український WordPress (що у подальшому став офіційним сайтом команди локалізації WordPress в Україні). З 2010 року засновник і технічний директор проекту Український хостинг для WordPress (WPHost.me) - повноцінного хостинг-сервісу, максимально оптимізованого на використання CMS WordPress.

Коментувати