- Файл .htaccess для OpenCart 2+
- Настройка правильного файла htaccess в Opencart
- Блок mod_rewrite
- Опынкорд это просто
- Он что, грёбаный Бугимен? Нет, он тот, кого посылают убить Бугимена. Баба Яга
- © Все права защищены богом!
- Настройка .htaccess для OpenCart
- Настройка .htaccess для OpenCart
- Настройка .htaccess
- Рекомендуемые сообщения
- Join the conversation
- Похожий контент
- Последние посетители 0 пользователей онлайн
Файл .htaccess для OpenCart 2+
Поскольку файл .htaccess имеет важное значение в работе всего интернет-магазина, рассмотрим его подробно, что же он в себя включает по-умолчанию. Тем более, что «с коробки» он содержит в себе много лишнего. Заодно пройдемся по основным директивам данного файла.
Файл имеет много комментариев, я буду расписывать только работающие строки.
Позволяет отдавать файлы, которые физически находятся за пределами root директории, но на которые есть ярлыки (symbolic link). Нужно для работы mod_rewrite
Запрет выдачи листинга пустого каталога. То есть в каталоге, где отсутствует файл показываемый по-умолчанию (например index.html) не будет отображаться содержимое со списком файлов. Посетитель получит HTTP ошибку 403 — access forbidden .
Предотвращение прямого доступа к файлам с указанными расширениями, кроме robots.txt. Тут же закомментировано сообщение:
«Для apache 2.2 и старее замените «Require all denied» этими двумя строками:»
# Order deny,allow
# Deny from all
Если у apache вас 2.4+ — оставляем как есть.
Блок mod_rewrite.
Включение модуля mod_rewrite для модификации URL.
Область преобразования. В данном случае весь сайт. Можно ограничить какой-либо директорией, например: RewriteBase /dir
При вызове карты сайта для поисковиков по ссылке site.com/sitemap.xml переадресовать на site.com/index.php?route=extension/feed/google_sitemap то есть на контроллер из файла catalog\controller\extension\feed\google_sitemap.php который генерирует карту.
Предполагалось, что по ссылке site.com/googlebase.xml будет переадресация на site.com/index.php?route=extension/feed/google_base, то есть вызываться контроллер из файла catalog\controller\extension\feed\google_base.php Данный контроллер должен работать с базой данных Google, которая уже не актуальна.
Данное правило можно удалить.
При попытке получения содержимого папки 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 не подошли, выполнение идет дальше.
Если файл, указанный в запросе не существует
А файл обычно index.php. Если в строке он отсутствует, тогда проверка продолжается и может выполниться строка с директивой RewriteRule.
Если index.php присутствует, то проверка не прошла, директива RewriteRule не выполнится, а файл index.php в итоге и загрузится со всеми get-параметрами (если есть).
Если запрашиваемый каталог (папка) не существует
Если запрашивается не файл с одним из указанных расширений
тогда любой запрос переадресовывается на
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+ без лишних комментариев и с учетом того, о чем я писал выше:
Настройка правильного файла htaccess в Opencart
Файл .htaccess имеет важное значение в работе всего интернет-магазина, рассмотрим его подробно, что же он в себя включает по-умолчанию. Тем более, что «с коробки» он содержит в себе много лишнего. Заодно пройдемся по основным директивам данного файла. Файл имеет много комментариев, я буду расписывать только работающие строки.
Из коробки .htaccess в Opencart имеет в себя большое количество бесполезного кода. В первую очередь пройдемся по главным директивам и настройкам файла. Стандартный .htaccess для opencart содержит большое количество объяснений , я буду расписывать лишь только работающие строчки.
Позволяет отдавать файлы, которые физически находятся за пределами root директории, но на которые есть ярлыки (symbolic link). Нужно для работы mod_rewrite
Запрет выдачи листинга пустого каталога. В каталоге, в котором отсутствует файл показываемый по-умолчанию (например, index.html) не будет отображаться содержимое со списком файлов. Посетитель получит HTTP ошибку 403 — access forbidden .
Запрет прямого доступа к файлам с указанными расширениями, кроме robots.txt. Тут же закомментировано сообщение:
«Для apache 2.2 и старее замените «Require all denied» этими двумя строками:»
# Order deny,allow
# Deny from all
Если у apache вас 2.4+ — оставляем как есть.
Можно заменить на альтернативный тип записи.
Блок mod_rewrite
Включение модуля mod_rewrite для модификации SEO URL.
Область преобразования. В этом случае весь магазин. Можно ограничить директорией, если ваш сайт инсталлирован в директории, например: RewriteBase /shop
Во время обращения к XML карте сайта по URL site.com/sitemap.xml перенаправляет на site.com/index.php?route=extension/feed/google_sitemap
То есть на динамическую карту сайта, которая генерируется стандартным модулем Opencart.
Предполагалось, что по ссылке site.com/googlebase.xml будет переадресация на site.com/index.php?route=extension/feed/google_base, то есть вызываться контроллер из файла catalog\controller\extension\feed\google_base.php
Данный контроллер должен был работать с базой данных Google, которая уже не актуальна. Данное правило можно удалить из .htaccess
При попытке получить содержимого папки system/download по ссылке site.com/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 нет, поэтому данное правило можно удалить из .htaccess. К тому же, в папке system есть свой файл .htaccess ограничивающий доступ к ее содержимому.
Если предыдущие регулярные выражения из директив RewriteRule не подошли, выполнение идет дальше.
Если файл, указанный в запросе не существует, тогда проверка продолжается и может выполниться строка с директивой RewriteRule.
Если index.php присутствует, то проверка не прошла, директива RewriteRule не выполнится, а файл index.php в итоге и загрузится со всеми get-параметрами (если есть).
Если запрашиваемый каталог (папка) не существует
Если запрашивается не файл с одним из указанных расширений
Тогда любой запрос переадресовывается на 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+ с комментариями:
Опынкорд это просто
Он что, грёбаный Бугимен? Нет, он тот, кого посылают убить Бугимена. Баба Яга
© Все права защищены богом!
Настройка .htaccess для OpenCart
Настройка .htaccess для OpenCart
Как я говорил уже в предыдущей статье нам необходимо избавится от оставшихся дублей главной страницы нашего магазина на Opencart.
В этом нам поможет .htaccess надеюсь вы его уже переименовали из .htaccess.txt если нет то самое время это сделать и обратите внимание ТОЧКА в начале стоит не случайно.
Приступим к его редактированию и добавим следующие строки:
Понятное дело site.com необходимо изменить на адрес Вашего сайта.
Итак первые 2 строки отвечают за склейку вашего сайт с www и без www чтобы мы всегда имели только один адрес http://site.com.
3-4 строка убирают index.html в конце (у Вас может не работать так как в настройках хостинга стоит обрабатывать статические файлы .html) но это не беда так как Опенкарт отдаст по этому адресу корректный статус 404.
5-6 делают тоже что и строки 2-3 но убирают index.php.
7-9 убирают /index.php?route=common/home о котором мы с Вами говорили в предыдущей статье.
Теперь у нашего магазина практически нету дублей, почему практически потому что есть еще страницы пагинации сортировки и некорректные статусы 404 в категориях и продуктах о которых мы с Вами поговорим в следующей статье.
Настройка .htaccess
Рекомендуемые сообщения
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Похожий контент
Подскажите файл .htaccess ставит код для блокировки индексации. Яндекс.Вебмастер пишет ошибку 403. Я меняю .htaccess, а через какое то время все возвращается. В чем может быть проблема?
# 1.To use URL Alias you need to be running apache with mod_rewrite enabled.
# 2. In your opencart directory rename htaccess.txt to .htaccess.
# For any support issues please visit: http://www.opencart.com
Options +FollowSymlinks
# Prevent Directory listing
Options -Indexes
# Prevent Direct Access to files
Require all denied
## For apache 2.2 and older, replace «Require all denied» with these two lines :
# Order deny,allow
# Deny from all
# SEO URL Settings
RewriteEngine On
# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/
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]
RewriteCond %
RewriteCond %
RewriteCond %
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
### Additional Settings that may need to be enabled for some servers
### Uncomment the commands by removing the # sign in front of it.
### If you get an «Internal Server Error 500» after enabling any of the following settings, restore the # as this means your host doesn’t allow that.
# 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it:
# php_flag register_globals off
# 2. If your cart has magic quotes enabled, This may work to disable it:
# php_flag magic_quotes_gpc Off
# 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try
# php_value upload_max_filesize 999M
# 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value post_max_size 999M
# 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_execution_time 200
# 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_input_time 200
# 7. disable open_basedir limitations
# php_admin_value open_basedir none
SetEnvIfNoCase User-Agent «^Yandex» search_bot
SetEnvIfNoCase User-Agent «^Yahoo» search_bot
SetEnvIfNoCase User-Agent «^Googlebot» search_bot
SetEnvIfNoCase User-Agent «^Aport» search_bot
SetEnvIfNoCase User-Agent «^msnbot» search_bot
SetEnvIfNoCase User-Agent «^spider» search_bot
SetEnvIfNoCase User-Agent «^Robot» search_bot
SetEnvIfNoCase User-Agent «^php» search_bot
SetEnvIfNoCase User-Agent «^Mail» search_bot
SetEnvIfNoCase User-Agent «^bot» search_bot
SetEnvIfNoCase User-Agent «bot» search_bot
SetEnvIfNoCase User-Agent «^igdeSpyder» search_bot
SetEnvIfNoCase User-Agent «^Snapbot» search_bot
SetEnvIfNoCase User-Agent «^WordPress» search_bot
SetEnvIfNoCase User-Agent «^BlogPulseLive» search_bot
SetEnvIfNoCase User-Agent «^Parser» search_bot
SetEnvIfNoCase User-Agent «^Googlebot-Image» search_bot
SetEnvIfNoCase User-Agent «^StackRambler» search_bot
SetEnvIfNoCase User-Agent «^Adsbot-Google» search_bot
SetEnvIfNoCase User-Agent «^WebAlta» search_bot
SetEnvIfNoCase User-Agent «^Googlebot-Mobile» search_bot
SetEnvIfNoCase User-Agent «^YandexImages» search_bot
SetEnvIfNoCase User-Agent «http://www.google.com/bot.html» search_bot
Order Allow,Deny
Allow from all
Deny from env=search_bot
Всем доброго воскресного дня
Решил прогнать сайт через NetPeak Spider на наличие пробелов в работе сайта, битых ссылок и тд. В ответ он выдает критическую ошибку редиректа с http на https, по https ответ NULL.
Сайт доступен, при прогоне на ответ сервера в вебмастере отвечает что все гут, с Джет Кешем время 260 сек. Не могу понять в чем проблема. Возможно неверно настроен .htaccess? Прошу опытных коллег помочь, ибо в php и настройках серверов не силен.
Ниже привожу текст .htaccess
ServerSignature Off
# 1.To use URL Alias you need to be running apache with mod_rewrite enabled.
# 2. In your opencart directory rename htaccess.txt to .htaccess.
# For any support issues please visit: http://www.opencart.com
Options +FollowSymlinks
# Prevent Directoy listing
Options -Indexes
# Prevent Direct Access to files
Require all denied
## For apache 2.2 and older, replace «Require all denied» with these two lines :
# Order deny,allow
# Deny from all
# SEO URL Settings
RewriteEngine On
# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/
RewriteBase /
RewriteCond %
RewriteRule .* /$0 [R=301,L]
RewriteCond %
RewriteRule .* https://%
RewriteCond %
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=extension/feed/google_base [L]
RewriteRule ^system/download/(.*) index.php?route=error/not_found [L]
RewriteCond %
RewriteCond %
RewriteCond %
#RewriteRule ^page/([^/\.]+)/?$ page=$1 [L]
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
RewriteCond %
RewriteRule . %1 [R=301,L]
### Additional Settings that may need to be enabled for some servers
### Uncomment the commands by removing the # sign in front of it.
### If you get an «Internal Server Error 500» after enabling any of the following settings, restore the # as this means your host doesn’t allow that.
# 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it:
# php_flag register_globals off
# 2. If your cart has magic quotes enabled, This may work to disable it:
# php_flag magic_quotes_gpc Off
# 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try
# php_value upload_max_filesize 999M
# 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value post_max_size 999M
# 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_execution_time 200
# 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_input_time 200
php_value memory_limit 250M
# 7. disable open_basedir limitations
# php_admin_value open_basedir none
### Display PHP errors
### Uncomment the commands by removing the # sign in front of it.
# php_flag display_startup_errors on
# php_flag display_errors on
# php_flag html_errors on
# php_flag track_errors on
# php_value error_reporting «E_ALL»
### Сжать ответ сервера для перечисленных MIME типов
#
#
# AddOutputFilterByType DEFLATE text/plain text/html
# AddOutputFilterByType DEFLATE text/css
# AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript
# AddOutputFilterByType DEFLATE text/xml application/xml application/xhtml+xml application/rss+xml
# AddOutputFilterByType DEFLATE application/json
# AddOutputFilterByType DEFLATE application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon
#
#
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
### Способ #1
### Подсказать браузеру схему кеширования через заголовки в ответе сервера
# 43200 — день, 604800 — неделя, 2592000 — месяц
Header set Cache-Control «max-age=2592000»
#Header unset Last-Modified
Header add Cache-Control «max-age=43200»
Header set Cache-Control «max-age=2592000»
# отключить кэширование
Header unset Cache-Control
### Способ #2
### Подсказать браузеру схему кеширования через заголовки в ответе сервера
# Enable expires
ExpiresActive On
# Default a cache expiration
ExpiresDefault «access plus 10 month»
# Images
ExpiresByType image/gif «access plus 1 month»
ExpiresByType image/png «access plus 1 month»
ExpiresByType image/jpg «access plus 1 month»
ExpiresByType image/jpeg «access plus 1 month»
# CSS, JavaScript
ExpiresByType text/css «access plus 1 year»
ExpiresByType application/javascript «access plus 1 year»
ExpiresByType text/javascript «access plus 1 year»
### Удалить заголовок ETag (иначе есть проблемы с кешированием при включенном сжатии)
Header unset ETag
FileETag None
Последние посетители 0 пользователей онлайн
Ни одного зарегистрированного пользователя не просматривает данную страницу