Sitealert

Рейтинг
469
Регистрация
30.09.2016

Рабочий вариант:

<?php
$page_href = 'bfilter[brand][0]=28&bfilter[brand][1]=13&bfilter[brand][2]=24&pf[335][0]=17&p=2';
$page_href = preg_replace('/(\[\w+\])\[\d+\]/', '$1[]', $page_href);
echo $page_href;
Ошибки в первичном варианте:

- в $page.href нехорошая точка;

- путаница с простыми и фигурными скобками;

- пропущена точка с запятой;

- лишний вопросительный знак;

- не учтены первые квадратные скобки;

- не учтено, что в первых квадратных скобках могут быть буквы и цифры.

Короче, работает вот это:

RewriteCond %{QUERY_STRING} ^Itemid=0.*$ [NC]
RewriteRule ^(.*)$ /test.html? [R=301,L]
Это примерно то же, что написал [umka], но с учётом разных урлов, вариантов Itemid (возможно продолжение) и регистронезависимости.

А не проще ли сразу прописать в Джумле правильные ссылки, а не грузить апач кучей лишних редиректов? Зачем формировать Itemid=0?

noVe:
редирект 301 через .htaccess для ссылок вида

То есть,что значит "вида"? Если всё, что с Itemid=0, то

RewriteCond %{QUERY_STRING} ^Itemid=0.*$
RewriteRule ^(.*)$ test.html [R=301,L]
totamon:
под ВП есть десятки плагинов грабберов, парсеров, автопостеров и агрегаторов RSS

Вы безусловно правы, но ТС ни слова не написал про RSS. Как бы предполагается парсить сайт "как есть", не выдающий свою новостную ленту.

danforth:
Вы можете сгенерировать представление в файл .html

Лучше массив или объект в JSON. Или сериализовать.

svv:
Но КАК это сделать?

Ручками:). Просто сесть и переписать код заново. На примере не получится, так как логика меняется.

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

svv:
70-90 тысяч запросов к этой базе в разных вариантах.

Это что, количество посетителей сайта за сутки?

Может быть, вместо MD5 - разделить на число пи и взять, например, 20 знаков после запятой?

Всего: 8084