Задать вопрос
  • Редирект с GET запроса на ЧПУ?

    JastaFly
    @JastaFly Автор вопроса
    dodo512,
    а вот ещё конфиг с локалки:
    Listen 127.0.0.1:8888
    <VirtualHost 127.0.0.1:8888>
    	ServerAdmin webmaster@localhost
    	DocumentRoot /home/bitrix/www
    
    	<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/www/>
    		Options FollowSymLinks MultiViews
    		AllowOverride All
    		DirectoryIndex index.php index.html index.htm
    		php_admin_value session.save_path /tmp/php_sessions/www
    		php_admin_value upload_tmp_dir /tmp/php_upload/www
            Require all granted
    	</Directory>
    
    	<Directory /home/bitrix/www/bitrix/cache>
    		AllowOverride none
            Require all denied
    	</Directory>
    
    	<Directory /home/bitrix/www/bitrix/managed_cache>
    		AllowOverride none
            Require all denied
    	</Directory>
    
    	<Directory /home/bitrix/www/bitrix/local_cache>
    		AllowOverride none
            Require all denied
    	</Directory>
    
    	<Directory /home/bitrix/www/bitrix/stack_cache>
    		AllowOverride none
            Require all denied
    	</Directory>
    
    	<Directory /home/bitrix/www/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/www/upload/support/not_image>
    		AllowOverride none
            Require all denied
    	</Directory>
    
    	<Directory /home/bitrix/www/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/www/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>
    
    	ErrorLog logs/error_log
    	# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
    	LogLevel warn
    
    	CustomLog logs/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>
    </VirtualHost>
    Написано
  • Редирект с GET запроса на ЧПУ?

    JastaFly
    @JastaFly Автор вопроса
    dodo512,

    Нужно глянуть на тестовом сервере что в

    Вот нашёл на тесте:
    # 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>
    Написано
  • Редирект с GET запроса на ЧПУ?

    JastaFly
    @JastaFly Автор вопроса
    dodo512,

    в заголовках ответов Server: nginx, а не Server: Apache

    Ну да. Просто странно почему на тесте Nginx возвращает редиректнутый URL, а на локалке нет?!
    Тем не менее я нашёл порты на которых весит апач. 8887 на тесте:
    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

    и 8888 на локалке:
    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
    Написано
  • Редирект с GET запроса на ЧПУ?

    JastaFly
    @JastaFly Автор вопроса
    dodo512,

    Посмотреть на каком порту слушает Apache

    По дефолту на 80-ом
    Сделала запрос на тесте:
    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

    выходит какая-то странная фигня, на локалке в отличии от теста локэйшен не поменялся, хотя в заголовке стоит код ответа 301. Хотя при использовании браузера редирект срабатывает и адрес меняется. Что за магия?!
    Написано
  • Редирект с GET запроса на ЧПУ?

    JastaFly
    @JastaFly Автор вопроса
    dodo512,

    Используется один Apache или связка Nginx + Apache

    Связка, Apache для работы с PHP, Nginx для статики

    какой версии

    Версии апача на тесте:
    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 отличается на тесте:
    nginx version: nginx/1.20.2
    на локалке:
    nginx version: nginx/1.24.0
    Написано
  • Редирект с GET запроса на ЧПУ?

    JastaFly
    @JastaFly Автор вопроса
    dodo512,

    .htaccess на тестовом сервере?

    Всё тоже самое что и на локальном

    Может там лишний /

    Нет, правило на тестовом выглядит точно так-же:
    RewriteCond %{QUERY_STRING} ^(brand)=([^&]+)$
    RewriteRule ^(en/)?catalog/(.+/)?$ /$0%1/%2/? [R=301,L]
    Написано
  • Редирект с GET запроса на ЧПУ?

    JastaFly
    @JastaFly Автор вопроса
    dodo512 теперь нарисовалась новая проблема. Залил свои правки на тестовый сервер и редирект там работает, но ведёт на такие адреса:
    https://my-site.ru/en/catalog/bdsm-kostumi/maski-s-klapom/brand/microsoft/?/

    то есть в конце почему-то появляется знак вопрос. При чём на локалке у меня всё работает как надо, никаких тебе знаков вопроса. Пробовал сбрасывать кэш на тестовом сайте, режим инкогнито, всё без полезно на тестовом серсере знак вопроса в конце есть, на локалке нет. Подскажите в чём тут может быть дело?
    Написано
  • Редирект с GET запроса на ЧПУ?

    JastaFly
    @JastaFly Автор вопроса
    dodo512, спасибо сработало)
    Так-же заметил ещё заметил что данный редирект не будет работать для корневых страниц каталога:
    https://my-site.ru/catalog/?brand=microsoft
    Поправил его ещё и под этот кейс:
    RewriteCond %{QUERY_STRING} ^(brand)=([^&]+)$
    RewriteRule ^(en/)?catalog/(.+/)?$ /$0%1/%2/? [R=301,L]
    Написано
  • Редирект с GET запроса на ЧПУ?

    JastaFly
    @JastaFly Автор вопроса
    dodo512, появились новые условия для редиректа. Дело в том что сайт биязычный и русская версия каталога находится по этому адресу:
    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/

    или может быть есть другие варианты как решить эту задачу?
    Написано
  • Битрикс ошибка Mysql connect error [localhost]: (2002) No such file or directory (400)?

    JastaFly
    @JastaFly Автор вопроса
    UNiT LAB,
    Значит конкретно у Вас проблема не в порте или порт другой. Данная ошибка говорит о том что Битрикс никак не может подрубиться к БД и это может случиться по разным причинам: может как у меня порт указан неверно, может имя БД указано неверно, может быть вообще БД не существует, короче причин может быть масса ищите свою. Для начала попробуйте у просто подрубиться к базе через консоль, чтобы убедиться что все данные в конфиге указаны верно. Далее пробуйте узнать адрес и порт по которым до неё можно достучаться
    Написано
  • Редирект с GET запроса на ЧПУ?

    JastaFly
    @JastaFly Автор вопроса
    dodo512,

    нужно ставить правило редиректа в начало файла .htaccess чтобы редирект был выше остальных правил.

    Ну да, переставил правило повыше сразу после RewriteEngine On и оно заработало. Ещё немного модифицировал его чтобы не было привязки к конкретному адресу и оно могло одновременно работать как на тесте, так и в проде:
    RewriteCond %{QUERY_STRING} ^(brand)=([^&]+)$
    RewriteRule ^catalog/.+/$ /$0%1/%2/? [R=301,L]
    Написано
  • Редирект с GET запроса на ЧПУ?

    JastaFly
    @JastaFly Автор вопроса
    dodo512 не срабатывает. Зато работает вот такой вариант:
    RewriteEngine on
    RewriteCond %{QUERY_STRING} (^|&)brand=([-0-9a-z]+)
    RewriteRule (.*[^/])/*$ /$1/brand/%2/? [R=301]

    Правда вместо модифицированного исходного урла он ведёт на файл роутинга Битрикса:
    https://my-site.ru/bitrix/urlrewrite.php/brand/microsoft/
    Написано
  • Функция str_replace() не работает?

    JastaFly
    @JastaFly Автор вопроса
    Виктор,

    видимо некорректно попробовали,

    Всё было корректно, но данная функция не позволила мне избавиться от всех кодов HTML символов, некоторые всё равно проскальзывали
    Написано
  • Функция str_replace() не работает?

    JastaFly
    @JastaFly Автор вопроса
    Сергей delphinpro, не пойдёт, встречаются символьные коды и без амперсанда
    Написано
  • Функция str_replace() не работает?

    JastaFly
    @JastaFly Автор вопроса
    @ipatiev

    Надо взять железную линейку, и надавать по рукам тому, кто писал этот код.

    Прекрасная мысль! Сейчас-же хватайте свою линеечку и направляйтесь в офис к разработчикам Битрикса, чтобы нещадно высечь всех причастных к созданию данной говноCMSки. Тысячи PHPшников будут чтить Вас в веках за сей подвиг!
    Написано
  • Функция str_replace() не работает?

    JastaFly
    @JastaFly Автор вопроса
    Ипатьев,

    Исправлять надо всегда причину, а не следствие.

    Чтобы исправить причину нужно зачистить от этих символов базу с сотнями тысяч товаров и перелопатить часть ядра Битрикса отвечающую за выгрузку товаров. Я понимаю для бешеной собаки 100 вёрст не крюк, но мне есть чем ещё заняться
    Написано
  • Функция str_replace() не работает?

    JastaFly
    @JastaFly Автор вопроса
    Сергей delphinpro, nokimaro,
    Всё так, написал простенький метод, чтобы вычищать всё это из строк:
    public function clearFromHtmlSpecificChars(string $text): string
        {
            $search = ['&lt;', '&gt;', '&quot;', '&apos;', '&amp;', 'quot;', 'amp;'];
            $replace = ['', '', '', '', '', '', ''];
    
            return str_replace($search, $replace, $text);
        }
    Написано
  • Функция str_replace() не работает?

    JastaFly
    @JastaFly Автор вопроса
    Виктор пробовал, не помогло
    Написано
  • Функция str_replace() не работает?

    JastaFly
    @JastaFly Автор вопроса
    Ипатьев,

    Вот поэтому их и не надо добавлять!

    Суть моей проблемы в том что они уже туда добавлены
    Написано
  • Функция str_replace() не работает?

    JastaFly
    @JastaFly Автор вопроса
    Дмитрий, Ипатьев, Vitsliputsli, Сергей delphinpro, Adamos,

    Ну вы меняете одно, а смотрите другое

    Дешифруйте пожалуйста?!

    Сделайте $this->title = $seo['ELEMENT_META_TITLE'];

    Не поверите именно так оно работало до того как пришло и вызывала проблему которую я и пытаюсь сейчас решить

    Вероятно задумывалось сделать так

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

    "Ну или там амперсанд тоже сущность хтмл" - как раз 4 лишних байта.

    В яблочко

    Сначала напихиваем кучу htmlscpacialchars, причем на входе,

    А Вы думаете обработчик входных данные и их вывод всегда пишется одним и тем человеком?

    по уму вообще ничего удалять не надо

    Ды да все эти коды &lt; &gt; &quot; &apos; &amp; на фронте смотрятся не разу не убого, а заботливо оставленные бекендером двойные кавычки в строках, не разу не разматывают вёрстку к хренам. Очень по уму!!!
    Написано