Почему <head> остаётся тем же??

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

borro

  • Живу я здесь
  • ******
  • 1272
  • 21
  • желаю вам счастья
Добрый день.

Решаю проблему с дублями. Для этого по совету размещаю в 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

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

*

borro

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

*

rudakoff

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

*

borro

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

*

rudakoff

  • Захожу иногда
  • **
  • 20
  • 1
Re: Почему <head> остаётся тем же?
« Ответ #5 : 20.12.2013, 16:08:16 »
Покажите значение $_SERVER['REQUEST_URI'] или адрес ссылки дайте.
Возможно, Вы думаете, что можете написать программу сами. Но это вовсе не означает, что это так и есть на самом деле.

*

borro

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

*

rudakoff

  • Захожу иногда
  • **
  • 20
  • 1
Re: Почему <head> остаётся тем же?
« Ответ #7 : 20.12.2013, 16: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

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

*

borro

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

*

Fedor Vlasenko

  • Профи
  • ********
  • 3800
  • 698
  • Все начинается с Value
Re: Почему <head> остаётся тем же??
« Ответ #10 : 21.12.2013, 06: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
  • Всё о создании сайтов: http://site-on.net
Re: Почему <head> остаётся тем же?
« Ответ #11 : 21.12.2013, 13: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
  • Всё о создании сайтов: http://site-on.net
Re: Почему <head> остаётся тем же?
« Ответ #12 : 21.12.2013, 13: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

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

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

*

borro

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

*

pberit

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

*

Fedor Vlasenko

  • Профи
  • ********
  • 3800
  • 698
  • Все начинается с Value
Re: Почему <head> остаётся тем же??
« Ответ #16 : 27.06.2014, 03: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

  • Живу я здесь
  • ******
  • 1062
  • 17
Re: Почему <head> остаётся тем же?
« Ответ #17 : 24.10.2016, 09: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, 09:58:59 от Stasweb »