Нужно глянуть на тестовом сервере что в
# Ansible managed
# site: my-site
<VirtualHost 127.0.0.1:8887>
ServerName my-site
ServerAlias www.my-site
ServerAdmin webmaster@localhost
DocumentRoot /home/bitrix/ext_www/my-site.ru
ErrorLog logs/my-site_error_log
LogLevel warn
CustomLog logs/my-site_access_log combined
<IfModule mod_rewrite.c>
#Nginx should have "proxy_set_header HTTPS YES;" in location
RewriteEngine On
RewriteCond %{HTTP:HTTPS} =YES
RewriteRule .* - [E=HTTPS:on,L]
</IfModule>
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<DirectoryMatch .*\.svn/.*>
Require all denied
</DirectoryMatch>
<DirectoryMatch .*\.git/.*>
Require all denied
</DirectoryMatch>
<DirectoryMatch .*\.hg/.*>
Require all denied
</DirectoryMatch>
<Directory /home/bitrix/ext_www/my-site.ru>
Options FollowSymLinks MultiViews
AllowOverride All
DirectoryIndex index.php index.html index.htm
Require all granted
#php_admin_value session.save_path /tmp/php_sessions/ext_www/my-site
php_admin_value upload_tmp_dir /tmp/php_upload/ext_www/my-site
</Directory>
<Directory /home/bitrix/ext_www/my-site.ru/bitrix/cache>
AllowOverride none
Require all denied
</Directory>
<Directory /home/bitrix/ext_www/my-site.ru/bitrix/managed_cache>
AllowOverride none
Require all denied
</Directory>
<Directory /home/bitrix/ext_www/my-site.ru/bitrix/local_cache>
AllowOverride none
Require all denied
</Directory>
<Directory /home/bitrix/ext_www/my-site.ru/bitrix/stack_cache>
AllowOverride none
Require all denied
</Directory>
<Directory /home/bitrix/ext_www/my-site.ru/upload>
AllowOverride none
AddType text/plain php,php3,php4,php5,php6,phtml,pl,asp,aspx,cgi,dll,exe,ico,shtm,shtml,fcg,fcgi,fpl,asmx,pht
php_value engine off
</Directory>
<Directory /home/bitrix/ext_www/my-site.ru/upload/support/not_image>
AllowOverride none
Require all denied
</Directory>
<Directory /home/bitrix/ext_www/my-site.ru/bitrix/images>
AllowOverride none
AddType text/plain php,php3,php4,php5,php6,phtml,pl,asp,aspx,cgi,dll,exe,ico,shtm,shtml,fcg,fcgi,fpl,asmx,pht
php_value engine off
</Directory>
<Directory /home/bitrix/ext_www/my-site.ru/bitrix/tmp>
AllowOverride none
AddType text/plain php,php3,php4,php5,php6,phtml,pl,asp,aspx,cgi,dll,exe,ico,shtm,shtml,fcg,fcgi,fpl,asmx,pht
php_value engine off
</Directory>
</VirtualHost>
в заголовках ответов Server: nginx, а не Server: Apache
HTTP/1.1 301 Moved Permanently
Date: Wed, 08 May 2024 12:59:55 GMT
Server: Apache
Location: http://127.0.0.1:8887/catalog/elektroinstrument/brand/bahco/%3f
Connection: close
Content-Type: text/html; charset=iso-8859-1
HTTP/1.1 301 Moved Permanently
Date: Thu, 02 May 2024 11:30:58 GMT
Server: Apache
Location: http://127.0.0.1:8888/catalog/elektroinstrument/brand/bahco/
Connection: close
Content-Type: text/html; charset=iso-8859-1
Посмотреть на каком порту слушает Apache
curl -I 'http://127.0.0.1:80/en/catalog/bdsm-kostumi/maski-s-klapom/?brand=microsoft'
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Wed, 08 May 2024 12:38:28 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: keep-alive
Location: http://127.0.0.1/en/catalog/bdsm-kostumi/maski-s-klapom/brand/microsoft/%3f
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 02 May 2024 11:07:40 GMT
Content-Type: text/html
Content-Length: 162
Connection: keep-alive
Location: https://127.0.0.1/en/catalog/bdsm-kostumi/maski-s-klapom/?brand=microsoft
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Используется один Apache или связка Nginx + Apache
какой версии
Server version: Apache/2.4.6 (CentOS)
Server built: Apr 5 2023 17:18:30
Server version: Apache/2.4.6 (CentOS)
Server built: May 30 2023 14:01:11
nginx version: nginx/1.20.2
nginx version: nginx/1.24.0
https://my-site.ru/en/catalog/bdsm-kostumi/maski-s-klapom/brand/microsoft/?/
https://my-site.ru/catalog/?brand=microsoft
RewriteCond %{QUERY_STRING} ^(brand)=([^&]+)$
RewriteRule ^(en/)?catalog/(.+/)?$ /$0%1/%2/? [R=301,L]
https://my-site.ru/catalog/
https://my-site.ru/en/catalog/
RewriteCond %{QUERY_STRING} ^(brand)=([^&]+)$
RewriteRule ^catalog/.+/$ /$0%1/%2/? [R=301,L]
https://my-site.ru/catalog/bdsm-kostumi/maski-s-klapom/?brand=microsoft
https://my-site.ru/catalog/bdsm-kostumi/maski-s-klapom/brand/microsoft/
https://my-site.ru/en/catalog/bdsm-kostumi/maski-s-klapom/?brand=microsoft
https://my-site.ru/en/catalog/bdsm-kostumi/maski-s-klapom/brand/microsoft/
нужно ставить правило редиректа в начало файла .htaccess чтобы редирект был выше остальных правил.
RewriteCond %{QUERY_STRING} ^(brand)=([^&]+)$
RewriteRule ^catalog/.+/$ /$0%1/%2/? [R=301,L]
RewriteEngine on
RewriteCond %{QUERY_STRING} (^|&)brand=([-0-9a-z]+)
RewriteRule (.*[^/])/*$ /$1/brand/%2/? [R=301]
https://my-site.ru/bitrix/urlrewrite.php/brand/microsoft/
Надо взять железную линейку, и надавать по рукам тому, кто писал этот код.
Исправлять надо всегда причину, а не следствие.
public function clearFromHtmlSpecificChars(string $text): string
{
$search = ['<', '>', '"', ''', '&', 'quot;', 'amp;'];
$replace = ['', '', '', '', '', '', ''];
return str_replace($search, $replace, $text);
}
Ну вы меняете одно, а смотрите другое
Сделайте $this->title = $seo['ELEMENT_META_TITLE'];
Вероятно задумывалось сделать так
"Ну или там амперсанд тоже сущность хтмл" - как раз 4 лишних байта.
Сначала напихиваем кучу htmlscpacialchars, причем на входе,
по уму вообще ничего удалять не надо
< > " ' &
на фронте смотрятся не разу не убого, а заботливо оставленные бекендером двойные кавычки в строках, не разу не разматывают вёрстку к хренам. Очень по уму!!!
а вот ещё конфиг с локалки: