Навігація

Останні статті

Редагування головної сторінки OpenCart
29.09.2025 3955 5 3 хв.

Редагування головної сторінки OpenCart налаштування тексту заголовків H1 та Title, виведен..

Як видалити Powered by OpenCart
03.09.2025 5817 3 3 хв.

Видаліть Powered by OpenCart та налаштуйте футер: редагування шаблону, використання редакт..

Як видалити модулі в OpenCart
28.08.2025 2567 3 2 хв.

Покрокова інструкція з видалення модулів в OpenCart 3 через адмінку, вручну та з бази дани..

Який хостинг вибрати для OpenCart
25.08.2025 1816 3 3 хв.

Дізнайтеся, який хостинг вибрати для OpenCart інтернет-магазину. Вимоги, критерії вибору, ..

Налаштування правильного файлу htaccess у OpenCart

15.12.2025 33613 8 3 хв.
Налаштування правильного файлу htaccess у OpenCart

Файл .htaccess має важливе значення в роботі всього інтернет-магазину, розглянемо його докладно, що ж він включає за замовчуванням. Тим більше, що "з коробки" він містить багато зайвого. Заодно пройдемося по основним директивам цього файлу. Файл має багато коментарів, я розписуватиму тільки працюючі рядки.

З коробки .htaccess в OpenCart має велику кількість марного коду. В першу чергу пройдемося по головним директивам та налаштуванням файлу. Стандартний .htaccess для opencart містить велику кількість пояснень , я буду розписувати тільки працюючі рядки.

Options +FollowSymlinks

Дозволяє віддавати файли, які фізично перебувають за межами root директорії, але які є ярлики (symbolic link). Потрібна робота mod_rewrite

Options –Indexes

Заборона видачі лістингу порожнього каталогу. У каталозі, в якому відсутній файл, що показується за замовчуванням (наприклад, index.html), не відображатиметься вміст зі списком файлів. Відвідувач отримає помилку HTTP 403 — access forbidden .

<FilesMatch "(?i)((\.tpl|.twig|\.ini|\.log|(?<!robots)\.txt))">
 Require all denied
</FilesMatch>

Заборона прямого доступу до файлів із зазначеними розширеннями, крім robots.txt. Тут же закоментовано повідомлення:

"Для apache 2.2 і старіше замініть "Require all denied" цими двома рядками:" # Order deny,allow # Deny from all Якщо у apache вас 2.4+ - залишаємо як є.

Можна замінити альтернативним типом запису.

<FilesMatch "\.(tpl|ini|log|txt)">
 Order deny,allow
 Deny from all
</FilesMatch>
<Files robots.txt>
 Allow from all
</Files>

Блок mod_rewrite

RewriteEngine On

Увімкнення модуля mod_rewrite для модифікації SEO URL.

RewriteBase /

Область перетворення. І тут весь магазин. Можна обмежити директорією, якщо ваш сайт інстальовано в директорії, наприклад: RewriteBase /shop

RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]

Під час звернення до XML карти сайту на URL site.com/sitemap.xml перенаправляє на site.com/index.php?route=extension/feed/google_sitemap

Тобто, на динамічну карту сайту, яка генерується стандартним модулем OpenCart.

RewriteRule ^googlebase.xml$ index.php?route=extension/feed/google_base [L]

Передбачалося, що за посиланням site.com/googlebase.xml буде переадресація на site.com/index.php?route=extension/feed/google_base, тобто викликатиметься контролер з файлу catalog\controller\extension\feed\google_base.php Даний контролер мав працювати з базою даних Google, яка вже не є актуальною. Це правило можна видалити з .htaccess

RewriteRule ^system/download/(.*) index.php?route=error/not_found [L]RewriteRule ^system/storage/(.*) index.php?route=error/not_found [L]

При спробі отримати вміст папки system/download за посиланням site.com/system/download/… або site.com/system/download/… переадресовувати на site.com/index.php?route=error/not_found де викликається метод index контролера catalog \controller\errorot_found.php виводить повідомлення «сторінку не знайдено». У OpenCart 2.3 (може й у попередніх версіях) папки download в system немає, тому це правило можна видалити з .htaccess. До того ж, у папці system є свій файл .htaccess, що обмежує доступ до її вмісту.

Якщо попередні регулярні вирази з директив RewriteRule не підійшли, виконання йде далі.

RewriteCond %{REQUEST_FILENAME} !-f

Якщо файл, вказаний у запиті, не існує, тоді перевірка продовжується і може виконатися рядок з директивою RewriteRule. Якщо index.php є, то перевірка не пройшла, директива RewriteRule не виконається, а файл index.php в результаті і завантажиться з усіма get-параметрами (якщо є).

RewriteCond %{REQUEST_FILENAME} !-d

Якщо запитуваний каталог (папка) не існує

RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)

Якщо запитується не файл із одним із зазначених розширень

RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

Тоді будь-який запит переадресовується на site.com/index.php?_route_[після параметра _route_ підставляється те, що вимагалося – будь-який рядок вказаний в URL після домену]

GET-параметри, за допомогою регулярного виразу, підставляються в рядку замість $1

Ця директива виконається, якщо URL не був вказаний файл index.php, що відбувається в т. ч. при включенні ЧПУ URL. У процесі завантаження програми перевіряється, чи було включено ЧПУ в налаштуваннях. Якщо ні, при отриманні параметра _route_ здійсниться виклик контролера 'common/home', який виведе домашню (головну) сторінку. Якщо ж ЧПУ було включено, виконується контролер ControllerStartupSeoPro з файлу catalog\controller\startup\seo_pro.php або інший вибраний, де параметр _route_ буде розібраний на частини та з таблиці бази даних url_alias за переданими в GET-запиті елементами знайдені аліаси, які вкажуть скрип шлях до контролера/методу, який необхідно викликати для виведення сторінки.

Далі йдуть додаткові параметри, які можуть знадобитися в специфічних ситуаціях.

Налаштування файлу .htaccess для OpenCart 2+ з коментарями:

# 1. Щоб використовувати URL Alias, вам потрібно запустити apache з увімкненим mod_rewrite.

# 2. У вашому каталозі opencart перейменуйте htaccess.txt в .htaccess.

# З будь-яких питань підтримки, будь ласка, відвідайте: https://www.opencart.com/

Options +FollowSymlinks

# Заборона видачі лістингу порожнього каталогу
Options -Indexes

# Заборонити прямий доступ до файлів
<FilesMatch "(?i)((\.tpl|.twig|\.ini|\.log|(?<!robots)\.txt))">
 Require all denied
## Для apache 2.2 and older, replace "Вимагають всі потерпілого" з цими двома ліниями :
# Order deny,allow
# Deny from all
</FilesMatch>

# Налаштування SEO URL
RewriteEngine On

RewriteBase /
# Якщо ваша установка opencart встановлюється над головної директорії, переконайтеся, що у вашій папці вона працює, тобто. / becomes /shop/

# Редирект з www на ssl без www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

# Редирект з ssl без www на ssl
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} ^(.+)/$
RewriteRule ^(.*)/$ /$1/?%1 [R=301,L]

RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=extension/feed/google_base [L]
RewriteRule ^system/storage/(.*) index.php?route=error/not_found [L]
RewriteRule ^system/download/(.*) index.php?route=error/not_found [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

### Додаткові параметри, які можуть знадобитися для деяких серверів
### Розкоментуйте команди, видаливши знак # перед ним.
### Якщо ви отримали «Внутрішню помилку сервера 500» після включення будь-якої з налаштувань, відновіть #, оскільки це означає, що ваш хост не підтримує директиву.

# 1. Якщо ваш кошик дозволяє вам додавати тільки один елемент за раз, можливо register_globals включений. Ця директива допоможе його:
# php_flag register_globals off

# 2. Якщо у вашому кошику включені магічні лапки, це може допомогти вимкнути їх:
# php_flag magic_quotes_gpc Off

# 3. Встановіть максимальний розмір файлу, що завантажується. Більшість хостів обмежують це і не дозволяють перевизначити його, але ви можете спробувати
# php_value upload_max_filesize 999M

# 4. Встановіть максимальний розмір даних, що відправляються. Розкоментуйте цей рядок, якщо ви отримуєте помилки, коли форми не зберігають усі поля
# php_value post_max_size 999M

# 5. Встановіть, який максимальний час може зайняти сценарій. Розкоментуйте цей рядок, якщо у вас багато товарів або ви отримуєте помилки, коли форми не зберігають усі поля
# php_value max_execution_time 200

# 6. Встановіть максимальний час для введення. Розкоментуйте цей рядок, якщо у вас багато товарів або ви отримуєте помилки, коли форми не зберігають усі поля
# php_value max_input_time 200

# 7. Вимкнути обмеження open_basedir
# php_admin_value open_basedir none

Пов'язані товари

Менеджер 301 редиректів
699 грн.399 грн.
Після переходу на нову структуру ЧПУ, видалення розділів чи заміни старих посилань магазин не повинен віддавати покупцеві порожню ..
Автоматична генерація SEO URL (ЧПУ)
699 грн.399 грн.
Після заповнення поля з назвою на сторінці додавання товару, категорії, виробника або статті автоматично генерується трансліт для ..
Редагування robots.txt
Бесплатно
Якщо файлом robots.txt потрібно керувати без FTP-доступу, цей модуль додає зручний редактор безпосередньо в панель керування OpenC..
ChatGPT консультант

Коментарі

Залиште свій коментар або запитання
Здравствуйте, помогите пож-ста правильно настроить мой htaccess, в долгу не останусь)
Відповідь Адміністратора

Напишите в telegram.

Огромное спасибо автору и крепкого здоровья! Мучился 4 дня, пока не нашел эту статью.
Подскажите, а на третьей версии OpenCart будет работать данный .htacces файл?
Відповідь Адміністратора

Должен.

Ошибка Сайт выполнил переадресацию слишком много раз. Удалите файлы cookie. Ничего не помогает
Как сделать редирект на https в opencart 3 в файле htaccess?
Відповідь Адміністратора

Чтобы настроить редирект с HTTP на HTTPS в OpenCart 3 строку

RewriteEngine On

и после нее добавьте строки

# Принудительный редирект на HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Как полностью закрыть доступ к сайту через .htaccess?
Відповідь Адміністратора

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

Простой способ закрыть сайт для всех

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

Require all denied

Этот вариант подходит для Apache 2.4 и выше. Он полностью отключает доступ ко всем страницам сайта. Если вы используете более старую версию Apache, используйте следующий код:

Order deny,allow
Deny from all

Как разрешить доступ только себе

Если вы хотите заблокировать сайт для всех, кроме себя (например, во время разработки), вы можете разрешить доступ только с вашего IP-адреса:

<RequireAll>
 Require ip 123.45.67.89
 Require all denied
</RequireAll>>

Замените 123.45.67.89 на свой текущий IP-адрес.

Благодарю!
Подходит ли описанный в статье .htaccess для OpenCart 4?
Відповідь Адміністратора

Да, базовые директивы продолжают работать так же, потому что OpenCart 4 использует тот же механизм ЧПУ через mod_rewrite.

Основные строки вроде
- RewriteEngine On
- RewriteBase /
- правила для _route_

остались актуальными и в OC4, ведь логика обработки SEO‑URL практически не изменилась.

Написати коментар

Популярні модулі