Навигация

Последние статьи

Редактирование главной страницы 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 33614 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
## For apache 2.2 and older, replace "Require all denied" with these two lines :
# 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, модуль дает редактор прямо в админке OpenCart. robots.txt без доступа к серверу Админист..
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 практически не изменилась.

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

Популярные модули