Фильтры перестали автоматически срабатывать

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

По прямой ссылке фильтруется

Скорее всего, проблема в модуле фильтров. Пишите разработчику

Что значит “фильтруется”? Как вы проверили это?
Вот просто по этой ссылке поставьте в первом фильтре “Стандарт” галочку только у “ISO 15552”. И ничего не изменится. А потом обновите страницу и увидите, что некоторые товары отпали.

Какому разработчику писать? Я единственный, кто вносит правки в сайт. Разработчик - это cs-cart?

У меня в посте есть ссылка на страницу с выбранным фильтром.

Показалось, что у вас стоит модуль SEO фильтров от AlexBranding. Похоже, что нет

Если есть модули, как-то влияющие на фильтры, попробуйте их временно отключить

Понять бы ещё, какой модуль может на это влиять. Я никакие модули, кроме тех, что идут в комплекте с AlexBranding Unitheme, не ставил. Только парочку ваших, от ecomlabs.
На всякий случай поотключал все модули и модуль темы Unitheme - эффекта ноль.

Нужно изучать на месте. На поиске, например, фильтруется

https://bb-engineering.ru/index.php?pcode_from_q=Y&pshort=Y&pfull=Y&pname=Y&pkeywords=Y&search_performed=Y&q=&dispatch=products.search&security_hash=75ecb9e7e2409683f279620f2257447a&features_hash=16-310-333

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

Не цените свое время. Заплатили бы за исправление и сэкономили себе время, нервы и еще бы узнали проблему, так чтобы на будущее знать.

У истории продолжение.
Начал я значит заново заливать на откатившийся сайт данные. Дошёл до заливки robots.txt и .htaccess, в которые тоже вносил изменения. И заметил, что после замены исходного htaccess, который шёл изначально из коробки, на модифицированный, появилась опять эта проблема.
Из-за какой конкретно функции это появляется пока не выяснил, может если кому интересно, сможете сразу глянуть опытным глазом, чтобы я полдня на тестирование опять не тратил?
Прикладываю работающий htaccess и неработающий (после заливки которого ломаются фильтры).

Работающий:

DirectoryIndex index.html index.php
<IfModule mod_deflate.c>
# Compress HTML, CSS, JavaScript, Text, XML, fonts
AddOutputFilterByType DEFLATE application/javascript application/x-javascript text/javascript application/json
AddOutputFilterByType DEFLATE application/x-font application/x-font-opentype application/x-font-otf application/x-font-truetype application/x-font-ttf font/opentype font/otf font/ttf application/x-woff application/x-font-woff
AddOutputFilterByType DEFLATE text/css text/html text/plain

<IfModule mod_headers.c>
	# Remove browser bugs (only needed for really old browsers)
	BrowserMatch ^Mozilla/4 gzip-only-text/html
	BrowserMatch ^Mozilla/4\.0[678] no-gzip
	BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
	Header append Vary User-Agent
</IfModule>


</IfModule>
<IfModule mod_headers.c>
<FilesMatch "\.(ttf|ttc|otf|eot|woff|css|png|gif|ico|jpe?g)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
</IfModule>

# Cache all images for 2 weeks
<IfModule mod_expires.c>
<FilesMatch "\.(jpg|jpeg|png|gif|tiff|bmp|js|css)$">
    ExpiresActive on
    ExpiresDefault "access plus 2 weeks"
</FilesMatch>
</IfModule>

<IfModule mod_headers.c>
<filesMatch "\.(gif|png|jpg|jpeg|ico|js|css)$">
	Header set Cache-Control "max-age=1209600"
</filesMatch>
</IfModule>


<IfModule mod_rewrite.c>
RewriteEngine on
# Please note that RewriteBase setting is obsolete use it only in case you experience  some problems with 
SEO addon.
# Some hostings require RewriteBase to be uncommented
# Example:
# Your store url is http://www.yourcompany.com/store/cart
# So "RewriteBase" should be:
# RewriteBase /store/cart
# RewriteBase /

# This setting is commented out because it might cause an error on some servers where MultiViews 
override is forbidden.
# Enabling MultiViews can lead to unexpected results if an URI (for example, an URI of a SEO name)
# matches the structure of folders in the root directory of the store.
# If you have such URIs, please uncomment the following lines
# <IfModule mod_negotiation.c>
#    Options -MultiViews
# </IfModule>

RewriteRule ^init.php$ - [F,L,NC]

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

RewriteCond %{REQUEST_URI} ^api/(.*)$ [or]
RewriteCond %{REQUEST_URI} .*/api/(.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*api/(.*)$ api.php?_d=$1 [L,QSA]

RewriteCond %{REQUEST_URI} \.(png|gif|ico|swf|jpe?g|js|css|ttf|svg|eot|woff|yml|xml)$ [NC,or]
RewriteCond %{REQUEST_URI} store_closed.html$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*?)\/(.*)$ $2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L,QSA]

</IfModule>

    # This prevents possible problems when downloading files
<IfModule mod_php5.c>
php_flag zlib.output_compression Off
</IfModule>

Не работающий:

DirectoryIndex index.html index.php
# Сжатие
 <IfModule mod_deflate.c>
# Compress HTML, CSS, JavaScript, Text, XML, fonts
AddOutputFilterByType DEFLATE application/javascript application/x-javascript text/javascript 
 application/json
AddOutputFilterByType DEFLATE application/x-font application/x-font-opentype application/x-font-otf 
 application/x-font-truetype application/x-font-ttf font/opentype font/otf font/ttf application/x-woff application/x- 
font-woff
AddOutputFilterByType DEFLATE text/css text/html text/plain

<IfModule mod_headers.c>
	# Remove browser bugs (only needed for really old browsers)
	BrowserMatch ^Mozilla/4 gzip-only-text/html
	BrowserMatch ^Mozilla/4\.0[678] no-gzip
	BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
	Header append Vary User-Agent
</IfModule>
</IfModule>
#Кэширование
 <ifModule mod_expires.c>
ExpiresActive On
#по умолчанию кеш в 5 секунд
ExpiresDefault "access plus 5 seconds"
#кэшировать флэш и изображения на месяц
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
#кэшировать css, javascript и текстовые файлы на одну неделю
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType application/x-javascript "access plus 1 week"
#кэшировать html и htm файлы на один день
ExpiresByType text/html "access plus 1 day"
#кэшировать xml файлы на десять минут
ExpiresByType application/xhtml+xml "access plus 10 minutes"
</ifModule>

 # Редиректы
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^init.php$ - [F,L,NC]

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

#редирект с домена с WWW на домен без WWW
RewriteCond %{HTTP_HOST} ^www.bb-engineering.ru$ [NC]
RewriteRule ^(.*)$ https://bb-engineering.ru/$1 [R=301,L]

#редирект со страниц со слешем на без слеша (весь сайт)
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} ![^\/]$
RewriteRule ^(.*)\/$ /$1 [R=301,L]

#Редирект с протокола http на https
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{REQUEST_URI} ^api/(.*)$ [or]
RewriteCond %{REQUEST_URI} .*/api/(.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*api/(.*)$ api.php?_d=$1 [L,QSA]

RewriteCond %{REQUEST_URI} \.(png|gif|ico|swf|jpe?g|js|css|ttf|svg|eot|woff|yml|xml)$ [NC,or]
RewriteCond %{REQUEST_URI} store_closed.html$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*?)\/(.*)$ $2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L,QSA]
</IfModule>

  # This prevents possible problems when downloading files
<IfModule mod_php5.c>
php_flag zlib.output_compression Off
</IfModule>

В общем опытным путём выяснил, что какой-то косяк в редиректах. Буду искать, в каком именно.

Нашёл:
#редирект со страниц со слешем на без слеша (весь сайт)
RewriteCond %{REQUEST_URI} !?
RewriteCond %{REQUEST_URI} !&
RewriteCond %{REQUEST_URI} !=
RewriteCond %{REQUEST_URI} !.
RewriteCond %{REQUEST_URI} ![^/]$
RewriteRule ^(.*)/$ /$1 [R=301,L]

Не скажете, как сделать, чтобы и редирект этот остался, и фильтры не ломались?

Зачем редирект страниц на ссылки без слэша? Если о дублях переживаете, так у всех страниц тег canonical есть, который ведет на страницы со слэшами в конце, поэтому дублей не будет.

Если все же есть какой-то сакральный смысл, то попробуйте так:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule .* http://%{HTTP_HOST}%1 [R=301,L,QSA]

Проверил на тестовом сайте такой подход, фильтры работают и слэш убирается.

1 лайк

Ну вроде как есть такой совет для СЕО, чтобы как можно меньше возможных дублей у страниц было, поэтому делают редиректы http->https, www-> без www, со слешем-> без слеша и т.д. Разве это не правильно?

Насчет http/https и www это да, для поисковика www.site.ru и site.ru – разные сайты. Тут редирект нужен.
Но про слэш на конце – это не обязательно. Тег canonical на всех страницах спасает от дублей.

Ок, спасибо, тогда не буду этот редирект со слешем вообще использовать.

1 лайк

Идеологически верно со слешем. Категория - бренды это папки, в них товары (файлы). Аналогия с файловой системой, так что слеш здесь лишний.

Попробовал этот редирект, то же самое, ломает фильтры.

Тестировал на виртиуальном хостинге Timeweb, поставил этот код в самое начало .htaccess в корне сайта, и никаких проблем не увидел.
Может на вашем хостинге что-то не так с конфигурацией.
Еще провел тест на VDS с Nginx вместо Apache, тоже не увидел проблем.