Opencart 2 htaccess: Файл .htaccess для OpenCart 2+

Файл .htaccess для OpenCart 2+

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

1.
Options +FollowSymlinks

Позволяет отдавать файлы, которые физически находятся за пределами root директории, но на которые есть ярлыки (symbolic link). Нужно для работы mod_rewrite

2.
Options –Indexes

Запрет выдачи листинга пустого каталога. То есть в каталоге, где отсутствует файл показываемый по-умолчанию (например index.html) не будет отображаться содержимое со списком файлов. Посетитель получит HTTP ошибку 403 — access forbidden.

3.
<FilesMatch "(?i)((\.tpl|\.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.
4.
RewriteEngine On

Включение модуля mod_rewrite для модификации URL.

5.
RewriteBase / 

Область преобразования. В данном случае весь сайт. Можно ограничить какой-либо директорией, например: RewriteBase /dir

6.

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

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

Если предыдущие регулярные выражения из директив RewriteRule не подошли, выполнение идет дальше.

9.
RewriteCond %{REQUEST_FILENAME} !-f

Если файл, указанный в запросе не существует
А файл обычно index.php. Если в строке он отсутствует, тогда проверка продолжается и может выполниться строка с директивой 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-запросе элементам найдены алиасы, которые укажут скрипту путь к контроллеру/методу, который необходимо вызвать для вывода страницы. ?]*) index.php?_route_=$1 [L,QSA]

##Показываем все ошибки и предупреждения при разработке магазина.
##Потом закомментировать
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag track_errors on
#показывать все ошибки для PHP 5.4.x, 5.6.x
php_value error_reporting 32767

Настройка htaccess

 

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

Давайте разберём 17 основных правил, который должен знать любой веб-мастер, желающий работать с файлом . Zeus [NC]
<limit get=»» post=»» head=»»>
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</limit>

Блокировка IP-адресов

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

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

#Запрещаем доступ для всех, кроме указанных IP-адресов

ErrorDocument 403 https://www.domainname.com
Order deny,allow
Deny from all
Allow from 124.34.48.165
Allow from 102.54.68.123

301 Редирект

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

  • com – это доменное имя.
  • /file.html – это страница (директория).

#Настраиваем SEO-Friendly 301 Redirect

Redirect 301 /1/file.html https://www.site.com/2/file.html

Редактирование страницы ошибки 404

Если появилось желание сделать сайт ещё красочней, то можно отредактировать страницу ошибки 404. В стандартном варианте пользователю просто указывается, что данной страницы не существует. Мы же можем добавить какое-нибудь изображение, изменить текст и т. д.

Для начала нужно создать эту страницу и залить на хостинг. В .htaccess остаётся прописать адрес до файла.

ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php

Чёрный список IP-адресов

Если на сайте появился злостный спамер или агрессивный комментатор, то можно занести его IP в чёрный список. Больше с этого адреса на ресурс он зайти не сможет. Если сайт работает на CMS, то узнать IP можно в админке. Там часто ведутся логи.

#Создаем черный список IP адресов

allow from all
deny from 145.186.14.122
deny from 124.15.

Блокировка доступа к определённому файлу

Если вы не хотите, чтобы кто-то могут увидеть содержание файлов на хостинге, то доступ к ним можно заблокировать. Без блокировки, любой пользователь при желании сможет узнать, что, например, у вас прописано в .htaccess или robots.txt.

#Защищаем .htaccess файл

<files .htaccess="">
order allow,deny
deny from all
</files>

Установка пароля на доступ к файлам

Также файлы можно не блокировать полностью, а создать доступ по паролю. Чтобы установить пароль нужно создать файл .htpasswd. Там в формате user:password он и должен хранится. Но пароль нужно зашифровать, чтобы никто не получил к нему доступ. В интернете есть несколько сервисов для автоматической шифровки.

#защита паролем файла
<files secure.php="">
AuthType Basic
AuthName «Prompt»
AuthUserFile /pub/home/. (.*)$ https://www.new.com/$1 [R=301,L]

Кэширование

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

#Усиливаем кеширование
FileETag MTime Size
<ifmodule mod_expires.c>
<filesmatch ".(jpg|gif|png|css|js)$">
ExpiresActive on
ExpiresDefault «access plus 1 year»
</filesmatch>
</ifmodule>

Включение сжатия

Включённое сжатие также позволит ускорить загрузку. Сначала сервер попытается сжать все данные, и только после этого отправит их пользователю. Для улучшения результата можно включить компрессию (строка addOutputFilterByType), но тогда процессор сервера будет сильно нагружен. (.*)$ index.php [F,L]

Перенаправление пользователя с помощью директивы RedirectMatch

Этот директив позволит сообщать браузеру о том, что появилась необходимость перенаправления на другую страницу.

RedirectMatch [status] regexp URL

Здесь имееются несколько статусов:

  1. 301 – постоянный редирект (permanent).
  2. 302 – временный. (temp).
  3. 303 – на наиболее популярную или полезную страницу (seeother).
  4. 410 – редиректа нет, так как она удалён (gone).

Защита от прямых ссылок

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

# Запретить другим сайтам использовать прямые ссылки на ваши картинки
RewriteCond %{HTTP_REFERER} !^$
# Дальше список разрешенных доменов
RewriteCond %{HTTP_REFERER} !^http(s)?://(www. https://(www\.)?domain\.com» local_ref=1
# File extensions that you want to protect
# Расширения файлов, которые нужно защитить
<FilesMatch "\.(bmp|jpe?g|gif|png)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>

Запрещаем доступ в админ-панель с других ip адресов

Создайте файл .htaccess в папке admin и запишите в него этот код где xxx.xxx.xxx.xxx это ваш ip адрес. Если у вас динамический ip указываем только ххх.ххх.

<Files "index.php">
order deny,allow
   Deny from all
Allow from xxx.xxx.xxx.xxx
</files>

Заключение

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

 

opencart/.htaccess.txt на мастере · opencart/opencart · GitHub

.

##
# ПРОЧИТАЙТЕ ЭТО ПОЛНОСТЬЮ, ЕСЛИ ВЫ РЕШИТЕ ​​ИСПОЛЬЗОВАТЬ ЭТОТ ФАЙЛ!
#
# 1. Чтобы использовать псевдоним URL, вам необходимо запустить apache с включенным mod_rewrite.
# 2. В вашей директории opencart переименуйте .htaccess.txt (этот файл) в .htaccess
#
# По любым вопросам поддержки посетите: https://www.opencart.com
#
# Строка ‘Options +FollowSymLinks’ может вызвать проблемы с некоторыми конфигурациями сервера.
# Требуется для использования Apache mod_rewrite, но, возможно, он уже установлен на
# ваш администратор сервера таким образом, что это не позволяет изменить его в этом файле . htaccess.
# Если у вас возникли проблемы (например, сайт не загружается), закомментируйте эту строку, добавив # перед
# FLOC — это функция, предложенная Google, если этот заголовок не должен быть установлен, отключите строку
# иметь «группу интересов», добавив # перед
##
## Нет списков каталогов
Игнорировать Индекс *
## Заголовок без ссылки
c>
Набор заголовков Referrer-Policy «no-referrer»
## Подавление обнаружения типа mime в браузерах для неизвестных типов и предотвращение FLOC
Заголовок всегда устанавливает X-Content-Type-Options «nosniff»
Заголовок всегда устанавливает политику разрешений «interest-cohort = ()»
## Может быть закомментирован, если вызывает ошибки, см. примечания выше.
Опции +FollowSymlinks
## Запретить список каталогов
Опции — Индексы
## Запретить прямой доступ к файлам
Требовать все запрещено
## Для apache 2.2 и старше замените «Требовать все отказы» этими двумя строками:
# Запретить заказ, разрешить
# Запретить все
## Настройки URL-адреса SEO
Перезаписать двигатель на
## Если ваша установка opencart не запускается в основной веб-папке, убедитесь, что папка, в которой она запускается, т. system/storage/(.*) index.php?route=error/not_found [L] 9?]*) index.php?_route_=$1 [L, QSA]
## Дополнительные документы об ошибках
#ErrorDocument 400 /index.php?route=error/not_found
#ErrorDocument 401 /index.php?route=ошибка/разрешение
#ErrorDocument 403 /index.php?route=error/not_found
#ErrorDocument 404 /index.php?route=error/not_found
#ErrorDocument 500 /index.php?route=error/not_found
#ErrorDocument 503 /index.php?route=error/not_found
## Дополнительные настройки, которые могут потребоваться для некоторых серверов
## Раскомментируйте команды, удалив перед ними знак #.
## Если вы получаете «Внутреннюю ошибку сервера 500» после включения любого из следующих параметров, восстановите #, так как это означает, что ваш хост не разрешает это.
# 1. Если ваша корзина позволяет добавлять только один товар за раз, возможно, включена функция register_globals. Это может помочь отключить его:
# php_flag register_globals выключен
# 2. Если в вашей корзине включены волшебные кавычки, это может сработать, чтобы отключить их:
# php_flag magic_quotes_gpc Выкл.
# 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 нет

apache — OpenCart 3.0.2.0 — включить SSL и исправить «www» .htaccess

Я работаю над новой установкой, которая работает на OpenCart 3.0.2.0.

Я купил SSL-сертификат, и мой хост активировал его. Затем я приступил к активации SSL от администратора OpenCart (Система-> Настройки-> Сервер-> Использовать SSL), и после редактирования файла конфигурации он работает так, как задумано OpenCart (только на страницах с формами).

Однако я хочу, чтобы сертификат был виден на всех страницах.

Кроме того, у OpenCart есть некоторые проблемы при вводе URL-адреса веб-сайта с «www» перед именем домена, что приводит к тому, что значки с прекрасным шрифтом не загружаются. Я мог бы отредактировать файл config.php и добавить туда «www», но это испортило бы URL-адрес без «www». 9(.*)$ https://uneltescu.ro/$1 [R,L]

Просмотрел Интернет и SO и нашел несколько вариантов принудительной работы SSL и версии «www», но ни один из них, похоже, не работал у меня, возможно, я не понял, для чего они были предназначены. правильно.

Вот как выглядит мой файл .htaccess по умолчанию:

 # 1. Чтобы использовать псевдоним URL, вам нужно запустить apache с включенным mod_rewrite.
# 2. В вашем каталоге opencart переименуйте htaccess.txt в .htaccess.
# По любым вопросам поддержки, пожалуйста, посетите: http://www.opencart.com
Опции +FollowSymlinks
# Предотвратить листинг Directoy
Параметры - Индексы
# Запретить прямой доступ к файлам
?]*) index.php?_route_=$1 [L,QSA]
### Дополнительные настройки, которые могут потребоваться для некоторых серверов
### Раскомментируйте команды, удалив перед ними знак #.
### Если вы получаете "Внутреннюю ошибку сервера 500" после включения любого из следующих параметров, восстановите #, так как это означает, что ваш хост не разрешает это.
# 1. Если ваша корзина позволяет добавлять только один товар за раз, возможно, включена функция register_globals. Это может помочь отключить его:
# php_flag register_globals выключен
# 2. Если в вашей корзине включены волшебные кавычки, это может сработать, чтобы отключить их:
# php_flag magic_quotes_gpc Выкл.
# 3. Установите максимальный размер загружаемого файла. Большинство хостов ограничат это и не позволят переопределить, но вы можете попробовать
# php_value upload_max_filesize 999М
# 4. Установите максимальный размер сообщения. раскомментируйте эту строку, если у вас много вариантов продукта или вы получаете ошибки, когда формы не сохраняют все поля
# php_value post_max_size 999M
# 5.