0 Пользователей и 1 Гость просматривают эту тему.
  • 17 Ответов
  • 3323 Просмотров
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Добрый день.

Решаю проблему с дублями. Для этого по совету размещаю в index.php шаблона следующий код:
Код
...
<head>
<?php if(preg_match('#\?|^/orders|^/search|/notify$|^/cart|^/manufacturer|^/user|^/2-uncategorised|^/component/|askquestion|vasha-korzina#', $_SERVER['REQUEST_URI'])){ ?>
<meta name="robots" content="noindex, nofollow" />
<?php } ?>
<jdoc:include type="head" />
...
Т.е., например, если текущая ссылка страницы вида сайт/component/..., то в секции head страницы должна появиться строка <meta name="robots" content="noindex, nofollow" />
На практике этого не происходит.

Кто-нибудь знает, почему?

На всякий случай привожу начало index.php
Спойлер
[свернуть]
*

rudakoff

  • Осваиваюсь на форуме
  • 19
  • 1 / 0
Re: Почему <head> остаётся тем же?
« Ответ #1 : 20.12.2013, 13:21:30 »
Поправьте регулярку:
Код
<?php 
if(preg_match('#/(orders|search|notify|cart|manufacturer|user|2\-uncategorised|component|askquestion|vasha-korzina)#', $_SERVER['REQUEST_URI'])){ ?>
На счет notify не совсем понял, Вам нужно, чтобы она строго в конце ссылки шла или просто в ссылке встречалась, начиная с символа "/" ?
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Re: Почему <head> остаётся тем же?
« Ответ #2 : 20.12.2013, 13:30:57 »
Поправьте регулярку:
Код
<?php 
if(preg_match('#/(orders|search|notify|cart|manufacturer|user|2\-uncategorised|component|askquestion|vasha-korzina)#', $_SERVER['REQUEST_URI'])){ ?>
На счет notify не совсем понял, Вам нужно, чтобы она строго в конце ссылки шла или просто в ссылке встречалась, начиная с символа "/" ?
строго в конце. сейчас попробую. благодарю
*

rudakoff

  • Осваиваюсь на форуме
  • 19
  • 1 / 0
Re: Почему <head> остаётся тем же?
« Ответ #3 : 20.12.2013, 13:36:31 »
..тогда в самой регулярке:
Код
.. |notify$| 
а для 2\-uncategorised обратный слеш можно убрать. Это я перестраховался.
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Re: Почему <head> остаётся тем же?
« Ответ #4 : 20.12.2013, 14:06:28 »
..тогда в самой регулярке:
Код
.. |notify$| 
а для 2\-uncategorised обратный слеш можно убрать. Это я перестраховался.
и ваше выражение не сработало. что за напасть?.. :)
*

rudakoff

  • Осваиваюсь на форуме
  • 19
  • 1 / 0
Re: Почему <head> остаётся тем же?
« Ответ #5 : 20.12.2013, 14:08:16 »
Покажите значение $_SERVER['REQUEST_URI'] или адрес ссылки дайте.
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Re: Почему <head> остаётся тем же??
« Ответ #6 : 20.12.2013, 14:27:01 »
Покажите значение $_SERVER['REQUEST_URI'] или адрес ссылки дайте.
вот пример "/component/virtuemart/tekhnika/model-vertolet-mi-38-2-detail?Itemid=0" И вроде согласно проверке выражение работает
« Последнее редактирование: 20.12.2013, 14:32:11 от borro »
*

rudakoff

  • Осваиваюсь на форуме
  • 19
  • 1 / 0
Re: Почему <head> остаётся тем же?
« Ответ #7 : 20.12.2013, 14:33:44 »
Попробуйте выполнить так:
Код
if(preg_match("/\/(orders|search|notify|cart|manufacturer|user|2-uncategorised|component|askquestion|vasha-korzina)/si", $_SERVER['REQUEST_URI']))
Если у Вас на сервере стоит utf-8, то в конце первого стринга указывайте /sui

А что view-source страницы в этом месте содержит?
*

Fedor Vlasenko

  • Живу я здесь
  • 3844
  • 730 / 7
  • Все начинается с Value
Re: Почему <head> остаётся тем же??
« Ответ #8 : 20.12.2013, 14:54:43 »
Какой то не ахти подход. Зачем проверять адресную строку регуляркой да еще все значения.
По ходу лучше проверять в массиве $_REQUEST есть ли нужная строка при совпадении выводить
Код: php-brief
$this->addCustomTag('<meta name="robots" content="noindex, nofollow" />');
break;
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Re: Почему <head> остаётся тем же??
« Ответ #9 : 20.12.2013, 15:02:55 »
вы будете смеяться наверно :) если написать в <meta name="robots" content="noindex, nofollow" /> robots c большой R, то строка появляется с любым регвыражением :) Это такой строгий синтаксис? Или какой нибудь скрипт метрики/аналитики ищет и удаляет если robots с маленькой "r"? :)
« Последнее редактирование: 20.12.2013, 15:06:35 от borro »
*

Fedor Vlasenko

  • Живу я здесь
  • 3844
  • 730 / 7
  • Все начинается с Value
Re: Почему <head> остаётся тем же??
« Ответ #10 : 21.12.2013, 04:13:00 »
Код: php-brief
<?php
$dataArr = array(
                    'orders',
                    'com_search',
                    'notify',
                    'cart',
                    'com_users'
                );
foreach ($dataArr as $value){
    if(in_array($value, $_REQUEST)){
        $this->addCustomTag('<meta name="robots" content="noindex, nofollow" />');
        break;
    }
}
//var_dump($_REQUEST);
?>
код можно вставить в конец шаблона
И переделанный ваш вариант
Код: php-brief
<?php
$dataArr = array(
                    'orders',
                    'search',
                    'notify',
                    'cart',
                    'aa/bb',
                    'Featured'
                );
$url = $_SERVER['REQUEST_URI'];
foreach ($dataArr as $value){
    if(strripos($url, $value)!== false){
        $this->addCustomTag('<meta name="robots" content="noindex, nofollow" />');
        break;
    }
}
?>
*

Arkantos

  • Захожу иногда
  • 216
  • 17 / 0
  • Всё о создании сайтов: http://site-on.net
Re: Почему <head> остаётся тем же?
« Ответ #11 : 21.12.2013, 11:07:45 »
Код: php-brief
<?php
$dataArr = array(
                    'orders',
                    'com_search',
                    'notify',
                    'cart',
                    'com_users'
                );
foreach ($dataArr as $value){
    if(in_array($value, $_REQUEST)){
        $this->addCustomTag('<meta name="robots" content="noindex, nofollow" />');
        break;
    }
}
//var_dump($_REQUEST);
?>
код можно вставить в конец шаблона
И переделанный ваш вариант
Код: php-brief
<?php
$dataArr = array(
                    'orders',
                    'search',
                    'notify',
                    'cart',
                    'aa/bb',
                    'Featured'
                );
$url = $_SERVER['REQUEST_URI'];
foreach ($dataArr as $value){
    if(strripos($url, $value)!== false){
        $this->addCustomTag('<meta name="robots" content="noindex, nofollow" />');
        break;
    }
}
?>

И как здесь обозначено, что notify должно быть строго в конце URL, а cart строго в начале?
*

Arkantos

  • Захожу иногда
  • 216
  • 17 / 0
  • Всё о создании сайтов: http://site-on.net
Re: Почему <head> остаётся тем же?
« Ответ #12 : 21.12.2013, 11:10:28 »
вы будете смеяться наверно :) если написать в <meta name="robots" content="noindex, nofollow" /> robots c большой R, то строка появляется с любым регвыражением :) Это такой строгий синтаксис? Или какой нибудь скрипт метрики/аналитики ищет и удаляет если robots с маленькой "r"? :)

Вообще-то больше похоже, что у вас был, например, серверный кеш :) С моей регуляркой всё ок ;)

P.S. На правах рекламы:
Как создать свой собственный шаблон для Joomla 2.5 и Joomla 3

Автоматический импорт, экспорт и обновление товаров из прайс-листа в VirtueMart 2

Скрипты быстрой покупки для Joomla 2.5 + VirtueMart 2
*

Fedor Vlasenko

  • Живу я здесь
  • 3844
  • 730 / 7
  • Все начинается с Value
Re: Почему <head> остаётся тем же?
« Ответ #13 : 21.12.2013, 14:14:51 »
И как здесь обозначено, что notify должно быть строго в конце URL, а cart строго в начале?

Используйте 1 вариант смотрите, что такое notify или cart
или вставьте регулярку в цикл с проверкой value, где value - регулярное выражение
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Re: Почему <head> остаётся тем же?
« Ответ #14 : 26.12.2013, 12:09:28 »
Опять вернулся к вставке noindex на страницы после его временного удаления. И опять двадцать пять - если пишу Robots с большой буквы R - изменения сразу же отображаются на сайте. Если пишу robots - как будто ничего не писал :) Кибернетика
*

pberit

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Re: Почему <head> остаётся тем же?
« Ответ #15 : 27.06.2014, 01:16:16 »
У меня не работают все варианты... Вернее в cart появляется мета тег, а в ссылках типа /orderDesc/results,1-4?tmpl=component нету...
*

Fedor Vlasenko

  • Живу я здесь
  • 3844
  • 730 / 7
  • Все начинается с Value
Re: Почему <head> остаётся тем же??
« Ответ #16 : 27.06.2014, 01:51:07 »
Почти мини роутер получился  :laugh:
Код: php-brief
$result = false;
$router = array(
    "aaaa",
    "bbbb",
    "cccc",
    "(\/hi\/?)"
);
$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
foreach ($router as $route) {
    if ($uri === $route || preg_match('#^' . $route . '$#', $uri, $params)) {
        $result = true;
        break;
    }
}
if($result): ?>
<meta name="robots" content="noindex, nofollow" />
<?php endif;?>
*

Stasweb

  • Завсегдатай
  • 1452
  • 23 / 0
Re: Почему <head> остаётся тем же?
« Ответ #17 : 24.10.2016, 07:21:04 »
Подскажите почему этот код
Код: php
<?php
$dataArr = array(
'askquestion',
'service',
'results',
'search',
'product_name',
'dirDesc',
'mf_name',
'by,ordering',
'vkhod-na-sajt'
                );
foreach ($dataArr as $value){
    if(in_array($value, $_REQUEST)){
        $this->addCustomTag('<meta name="robots" content="noindex, nofollow" />');
        break;
    }
}

?>
Срабатывает на всех страницах а не на указанных
Тут он должен быть _https://lik-astana.kz/poligrafiya/by,ordering.html и он есть.
Тут его не должно быть https://lik-astana.kz/poligrafiya.html а он есть.
Подскажите в чем проблема. Использую Joomla 3.6.3 и VirtueMart 3.0.18
« Последнее редактирование: 26.01.2017, 07:58:59 от Stasweb »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Где редактировать вывод HEAD

Автор st_jimmy96

Ответов: 0
Просмотров: 2055
Последний ответ 04.11.2016, 09:17:33
от st_jimmy96
Почему выгружается только одна строка из базы данных??

Автор borro

Ответов: 0
Просмотров: 2156
Последний ответ 03.10.2013, 07:10:43
от borro
Удаление скриптов/стилей из <jdoc:include type="head" />

Автор NightGuard

Ответов: 2
Просмотров: 3992
Последний ответ 29.05.2012, 01:59:32
от recomp