Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > sitemap.xml с ошибкой показывается


Автор: keen_ 4.4.2012, 15:49
http://tbplaw.com/sitemap.xml с ошибкой показывается
Не подскажете как исправить это дело?
Видать из-за cимвола & глючит.
Но в добавок все русские URLs показывает в директориях (с приставками /en, /fr, /de, /it) где должны быть странички на других языках. В общем совсем неправильную карту генерит.

Знаю, что можно заново просканировать и сгенерировать сайт и поместить в корень файл sitemap.xml, но в данный момент не в этом вопрос.

Автор: ksnk 4.4.2012, 16:01
вместо & поставить &
Цитата(keen_ @  4.4.2012,  15:49 Найти цитируемый пост)
Но в добавок все русские URLs показывает в директориях (с приставками /en, /fr,


Цитата(keen_ @  4.4.2012,  15:49 Найти цитируемый пост)
заново просканировать и сгенерировать сайт 

Явно - же  ошибка в генерации карты ;)

Автор: keen_ 4.4.2012, 16:08
Цитата(ksnk @ 4.4.2012,  16:01)
вместо & поставить &

Как это поставить & ?
Ведь URL находится по адресу, где есть символ &.
Если поставить символ &, то страницы не будут вообще показываться, будет 404 ошибка.

А если сторонним софтом сканирую сайт, то карта получается корректная, за исключением того, что и там всместо & показываются &.

Автор: ksnk 4.4.2012, 16:15
Цитата(keen_ @  4.4.2012,  16:08 Найти цитируемый пост)
Если поставить символ &, то страницы не будут вообще показываться, будет 404 ошибка.

а если не поставить, будет ошибка xml.

http://forum.vingrad.ru/rss/forums/267.xml
вот ему, например, наличие & ов не мешает, а помогает. К чему бы это?

Автор: keen_ 4.4.2012, 16:25
Цитата(ksnk @ 4.4.2012,  16:15)
Цитата(keen_ @  4.4.2012,  16:08 Найти цитируемый пост)
Если поставить символ &, то страницы не будут вообще показываться, будет 404 ошибка.

а если не поставить, будет ошибка xml.

http://forum.vingrad.ru/rss/forums/267.xml
вот ему, например, наличие & ов не мешает, а помогает. К чему бы это?

Т. е. корректная генерация xml невозможна, если в URL присутствуют единичные символы &?

Я же говорю, что если в урле вместо & будут &, то страницы по этим адресам не будут показываться. Кроме этого в названии компании будет вместо & стоять символ & - TV&P = TV&P.

Автор: ksnk 4.4.2012, 17:19
Кто этот xml читает?  Самодельный парсер?
        
Тот, кто читает этот xml должен быть готов к тому, что он сделан по правилам xml, а не по каким-то собственным правилам.
Вероятно, еще страшнее окажется случай такой записи
Код

<loc><![CDATA[http://tbplaw.com/en/Новости/Комментарий_юристов_TV&P_по_вопросу_покупки_недвижимости_в_Черногории]]></loc>

Хотя с точки зрения xml внутренности тега должны быть одинаковы

Автор: keen_ 4.4.2012, 18:05
Как кто читает?
Это для поисковиков нужно.
Я просто хотел, чтобы карта корректно работала.

Так я и говорю, что он генерит некорректные URLs как этот например, котрого не существует и никогда не существовало в природе.

Автор: MoLeX 4.4.2012, 18:31
Цитата(keen_ @  4.4.2012,  18:05 Найти цитируемый пост)
Как кто читает?
Это для поисковиков нужно.

Цитата(keen_ @  4.4.2012,  16:25 Найти цитируемый пост)
Я же говорю, что если в урле вместо & будут &amp;, то страницы по этим адресам не будут показываться. Кроме этого в названии компании будет вместо & стоять символ &amp; - TV&P = TV&amp;P. 


идем на сайт w3.org и читаем спецификацию.

Автор: keen_ 5.4.2012, 00:47
Цитата(MoLeX @ 4.4.2012,  18:31)

идем на сайт w3.org и читаем спецификацию.

Что именно там читать и для чего?

Мне один человек конкретно по существу сказал, что нужно код str_replace('&','&amp;','text'); вписать в какой-то файл движка.

Не подскажете куда вписывать этот код?
Есть такие фрагменты кода:

Код

<? 
    header('Content-type: application/xml'); 
    $date = date("Y-m-d"); 
    echo '<?xml version="1.0" encoding="UTF-8"?> 
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'; 
    foreach ($langs as $index => $value) { 
        $add_lang = ($value['default'] == 1) ? '' : $value['prefix'].'/'; 
        foreach ($page_rewrite as $index => $value) { 
            echo ' 
    <url> 
        <loc>'.$url_empty.$add_lang.$value.'</loc> 
        <lastmod>'.$date.'</lastmod> 
        <priority>0.9</priority> 
    </url>'; 
        } 

        echo ' 
</urlset>'; 
        die(); 
?>


Код

    $sitemapxml_pos = 0;
    if (!$auto_lang) $sitemapxml_pos = 1;

    if ((isset($uri[$sitemapxml_pos])) and ($uri[$sitemapxml_pos] == 'sitemap.xml')) {
        require "mods/xmlmap.php";
    }
    if ((isset($uri[$sitemapxml_pos]) and ($uri[$sitemapxml_pos] == 'robots.txt'))) {
        echo $current_site['robots'];
        die();
    }

Автор: MoLeX 5.4.2012, 05:32
  • включить логику
  • методом научного тыка
  • разобраться в основах языка, прежде чем в него лезть
  • забить
нужное подчеркнуть

Добавлено через 2 минуты и 13 секунд
Код

echo ' 
    <url> 
        <loc>'.str_replace('&', '&amp;', $url_empty.$add_lang.$value).'</loc> 
        <lastmod>'.$date.'</lastmod> 
        <priority>0.9</priority> 
    </url>'; 

Автор: keen_ 5.4.2012, 17:36
Цитата(MoLeX @ 5.4.2012,  05:32)


  • включить логику

  • методом научного тыка

  • разобраться в основах языка, прежде чем в него лезть

  • забить

нужное подчеркнуть

В этих 4-х пунктах нет нужного.
Нужно добавить 5-ый пункт - упасть ниц и пустить слезу перед MoLeX и тогда он благородно и изящно даст нужное решение по существу  smile 

Спасибо, вставил ваш код в модуль xmlmap.php и теперь http://tbplaw.com/sitemap.xml.
Но! Она почему-то некорректно генерит URLs страничек, делает дубли.
Например:
http://domain.com/О_компании
http://domain.com/en/О_компании
http://domain.com/fr/О_компании
http://domain.com/de/О_компании
http://domain.com/it/О_компании
Должно быть так:
http://domain.com/ru/О_компании
http://domain.com/en/About_Us
http://domain.com/fr/Le_Cabinet
http://domain.com/de/Über_uns
http://domain.com/it/Chi_Siamo

Не подскажете в чём проблема? 

Автор: MoLeX 6.4.2012, 05:39
Цитата(keen_ @  5.4.2012,  17:36 Найти цитируемый пост)
В этих 4-х пунктах нет нужного.

В вашем случае - нанять специалиста.
Если Вы не можете потратить 1-3 вечера и прочитать тонкую книжку "PHP для чайника", то Вам не кто помогать не будет. Смысла нет тратить на Вас время, если Вы нечего сами не хотите делать

Автор: keen_ 6.4.2012, 21:38
Цитата(MoLeX @ 6.4.2012,  05:39)

В вашем случае - нанять специалиста.

Как мы любим решать за других, что им нужно делать, направлять их в какие-то направления! smile

А что ещё мне нужно кроме того, как нанять специалиста?
Вы такой умный и позитивный, решите пожалуйста за меня этот вопрос.

А если по существу сказать вам - не учите людей жить и они не скажут куда вам нужно идти - подойти к подъезду и набрать комбинацию из 3-х символов smile

Если не можете помочь человеку по существу вопроса, то какого хрена вы здесь срываете свою злость и самоутверждаетесь на незнаниях других? Просто можно не читать мою тему или не отвечать вообще smile

P. S.
Злобные и несчастные карлики, вы только минусы можете мне ставить - enjoy baby! 

Автор: MoLeX 7.4.2012, 06:42
keen_
1. Обращение на Вы, я с Вами водку за одним столом не пил
2. По существу вам ответили уже
У вас в профиле есть сайт _http://a21.ru/ посвященный созданию веб сайтов, отсюда логическое предположение что _http://tbplaw.com/ (который тут фигурирует) это сайт заказчика и вам за него заплатили. 
Вопрос: если вы находитесь на данном рынке, то основы Вы обязанны знать.

Добавлено через 2 минуты и 5 секунд
по сабжу: у вас была проблема с заменой &, вам подсказали как её решать.
Модератор: Пожалуйста, один топик - один вопрос.

Автор: Shark 7.2.2016, 11:31
keen_
Цитата

Цитата(ksnk @ 4.4.2012,  16:15)
Цитата(keen_ @  4.4.2012,  16:08 Найти цитируемый пост)
Если поставить символ &amp;, то страницы не будут вообще показываться, будет 404 ошибка.

а если не поставить, будет ошибка xml.

http://forum.vingrad.ru/rss/forums/267.xml
вот ему, например, наличие &amp; ов не мешает, а помогает. К чему бы это?

Т. е. корректная генерация xml невозможна, если в URL присутствуют единичные символы &?

Я же говорю, что если в урле вместо & будут &amp;, то страницы по этим адресам не будут показываться. Кроме этого в названии компании будет вместо & стоять символ &amp; - TV&P = TV&amp;P. 


Вот Вам пример того, что & и &amp; идентичны:
http://premial-nedvizhimost.ru/index.php?route=product/product&amp;manufacturer_id=1&product_id=53 (c &amp;)
http://premial-nedvizhimost.ru/index.php?route=product/product&manufacturer_id=1&product_id=53 (Исмпользуется &, а не &amp;)

Страница одинакого отображается. Т.к. & === &amp; для парса URL'ов страницы
Вот только одна проблема: breadcrumb не корректно показывает путь!. НО это не проблема для bot'ов, им главное правильно просканировать и отобразить страницу

Автор: ksnk 7.2.2016, 11:56
Shark, Некропостинг + проблема у топикстартера была с генерацией невалидного xml. 
Не боты, а поисковики. Генерация невалидного xml - минус в карму или игнор у любого вменяемого поисковика.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)