Перейти к содержимому


Простейший модуль ЧПУ


  • Вы не можете ответить в тему
Сообщений в теме: 415

#241 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 16 April 2012 - 03:58 PM

Помнится, я тут многократно задавал вопрос закакимху.. зачем надо делать редирект с версии ссылки "без слэша" на версию ссылки "со слэшом".

В общем, я и раньше подозревал, что Яндекс кладет на завершающий слэш, но четких доказательств не было, т.к. исходно мой ЧПУ был без слэшей в конце и хрен его знает, по каким ссылкам ко мне лезет Яндекс - по старым без слэша или по новым, со слэшом. А тут на днях переделал ссылку модуля "статьи" со stati на articles (естественно, в sitemap.xml она со слэшом, на сайте со слэшом, без слэша ее никогда и нигде не было) и что я вижу в логах? Правильно! Гугль честно запрашивает /articles/, а вот Яндекс почему-то /articles, которые 301-м редиректом благополучно переадресуются на /articles/.

При этом по ссылкам со слэшом он тоже вполне ходит, без всяких редиректов. Например, 9-го апреля был заход на /BookReaders/PocketBook, который отредиректился на /BookReaders/PocketBook/, а 10,11 и 14 заходы были уже прямиком на /BookReaders/PocketBook/. Казалось бы, оно сходило один раз по редиректу, запомнило и дальше ходит уже правильно? Щаз! Это с этой ссылкой так красиво, я специально такую нашел. По остальным ходит то так, то этак, я не смог обнаружить логики. По /articles 7-го и 15-го апреля заходы без слэша, а 11-го - со слэшом :).

Какие есть мысли по этому поводу? Все на ту же тему ЗАЧЕМ?
Т.е. зачем так странно делает Яндекс?
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#242 Dbus

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 1116 сообщений
Репутация: 174
Мастер
  • ГородОдесса

Отправлено 17 April 2012 - 09:27 AM

Т.е. зачем так странно делает Яндекс?

... Потому что может :)
  • 0
502 Bad Gateway

#243 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 19 April 2012 - 01:34 AM

Чуть обновил index.php - убрал создание в SQL-табличке отдельных записей для ссылок, заканчивающихся на /skipNN/ и /all/, теперь для них достаточно наличия в таблице записи для базовой ссылки без skip и all, т.е. на первую страницу категории.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#244 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 14 June 2012 - 11:21 PM

Хех... До чего народ иногда прикольный попадается. Какой-то человек из Новосибирска в 6:45 утра по Москве (соответственно и по Питеру) назадавал вопросов по модулю ЧПУ в Онлайн-консультанте на тестовом сайтике и явно несколько часов ждал от меня ответа :). Емейла, естественно, не оставил, только поток вопросов :).

PS. Толи чел предполагал, что у меня тут круглосуточная контора по поддержке бесплатного ЧПУ-модуля, толи просто не в курсе, что Питер и Новосиб в заметно разных часовых поясах.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#245 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 29 June 2012 - 04:07 PM

update:
Вернулся к Лебедев-стайл ЧПУ-ссылки, т.е. к стилю "хлебных крошек".
Иначе в Вебмастере.Яндекс (http://webmaster.yandex.ru) создается неверная структура сайта.
Теперь все вложения категорий попадают в ссылку - /cat1/cat2/cat3/cat4/product.html, а не две последних, как раньше.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#246 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 29 June 2012 - 09:45 PM

PS.

До чего народ иногда прикольный попадается. Какой-то человек из Новосибирска в 6:45 утра по Москве (соответственно и по Питеру) назадавал вопросов по модулю ЧПУ

Уважаемый Человек-из-Новосибирска! Я не отвечаю в тестовом онлайн-консультанте тестового сайта ни в 6.45 утра, ни в 9.30 утра (по Москве), т.к. просыпаюсь заметно позже. Собственно, я вообще в нем практически не отвечаю, т.к. не сижу неотрывно перед компом. Но практически сразу отвечаю в этом форуме, если не занят. И надо быть идиотом, чтобы ВТОРИЧНО задать мне вопрос в онлайн-консультанте опять не указав никаких координат для связи :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#247 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 29 June 2012 - 09:53 PM

:D :lol:
  • 0

#248 kakos74

    Новичок

  • Пользователи
  • Pip
  • 8 сообщений
Репутация: 0
Начинающий

Отправлено 07 July 2012 - 11:49 AM

а что то cpu.badisoft.ru лежит, дайте кто нить из заначки ЧПУ. А то время потестить появилось, а тест в дауне (
  • 0

#249 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 07 July 2012 - 01:50 PM

а что то cpu.badisoft.ru лежит

И будет лежать, скорее всего, до понедельника.
На работе отрубили электричество, там нет никого кроме охраны, а я далеко от города.

PS. хех... стоило только написать и дали электричество :). Сайт доступен.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#250 kakos74

    Новичок

  • Пользователи
  • Pip
  • 8 сообщений
Репутация: 0
Начинающий

Отправлено 09 July 2012 - 10:46 AM

PS. хех... стоило только написать и дали электричество :). Сайт доступен.


скачал, но сайт снова ушёл в даун в воскресение.

Установил ЧПУ на локальный тест, возникла проблема как у bel1ever. Поправил руками RewriteRule, для статических страниц всё заработало. в .htaccess было закомментировано RewriteRule ^news\.html$ index.php?news=yes [L] и новости тоже не открывались (.htaccess взял из скачанного варианта) ставил по инструкции. PHP 5.2.17, output_buffering = off
  • 0

#251 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 09 July 2012 - 11:50 AM

в .htaccess было закомментировано RewriteRule ^news\.html$ index.php?news=yes [L] и новости тоже не открывались

А они по этому адресу и не должны были открываться, т.к. новый адрес /news/ и видимо не все сделал по инструкции если адрес не изменил в шаблоне.
  • 0

#252 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 09 July 2012 - 01:14 PM

Установил ЧПУ на локальный тест, возникла проблема как у bel1ever.

Я не Яндекс и не помню всех проблем, когда либо имевших место. И мне точно так же лениво искать проблему пользователя bel1ever, как Вам ее описывать.

Поправил руками RewriteRule, для статических страниц всё заработало. в .htaccess было закомментировано RewriteRule ^news\.html$ index.php?news=yes [L] и новости тоже не открывались

Если ЧПУ работает правильно, то совершенно безразлично, раскомментируете Вы закомментированные RewriteRule или нет, т.к. до них просто не дойдет дело.

Рассказываю поэтапно для ссылки /news/, для остальных оно аналогично.

1. если /news/ не удовлетворяет ни одному вышележащему RewiteRule (а оно не удовлетворяет даже если раскомментировать все штатные правила), то дело дойдет до конструкции

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?cpu=/$1 [L,QSA]

т.е. если /news/ это не файл и не директория, то произойдет реврайт /news/ в index.php?cpu=/news/

2. далее в index.php будет произведен поиск /news/ в таблице ЧПУ<->неЧПУ и будет найдено соответствие news_news.html

3. далее в index.php будет произведено присвоение значений $_GET-массиву. В случае news_news.html это будет
$_GET['news'] = "yes"

4. далее будет выполнено require_once 'index_old.php', что при вышеуказанном $_GET соответствует index.php?news=yes

Т.е. в результате получили из ЧПУ-ссылки /news/ то же самое, что делает штатный RewriteRule из неЧПУ ссылки.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#253 kakos74

    Новичок

  • Пользователи
  • Pip
  • 8 сообщений
Репутация: 0
Начинающий

Отправлено 09 July 2012 - 09:55 PM

R.Sergey,badisoft, видимо всё же прочтения один раз install.txt недостаточно ))

перечитал крайний пост badisoft, про /news/ разобрался, RewriteRule закомментировал обратно. Попробую поставить на рабочий сайт ))
  • 0

#254 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 09 July 2012 - 10:31 PM

перечитал крайний пост badisoft

Как прикольна эта мода на демонстративные закосы под летчиков/подводников/кто-там-еще-шизует-от-слова-"последний" :).
Последний это мой пост был. Последний. А не крайний. А теперь этот последний. Напишу следующий - будет он последний.
И что точно последнее-крайнее, так это прикидываться человеком опасной профессии со своими суевериями не будучи им.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#255 kakos74

    Новичок

  • Пользователи
  • Pip
  • 8 сообщений
Репутация: 0
Начинающий

Отправлено 10 July 2012 - 12:07 AM

Как прикольна эта мода на демонстративные закосы под летчиков/подводников/кто-там-еще-шизует-от-слова-"последний" . Последний это мой пост был. Последний. А не крайний. А теперь этот последний. Напишу следующий - будет он последний. И что точно последнее-крайнее, так это прикидываться человеком опасной профессии со своими суевериями не будучи им.

всё намного прозаичнее, лень двигатель прогресса, набирать слово последний 9-кликов, крайний - 7, пользуйтесь, мне не жалко )
  • 0

#256 mvk12

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 47 сообщений
Репутация: 2
Начинающий
  • ГородДонецк, Украина

Отправлено 16 July 2012 - 06:54 PM

Добрый день, возник такой вопросец: в инструкции по установке есть пункт "выполните http://ваш-сайт/sitemap.xml, это создаст и заполнит SQL-табличку с ЧПУ"

после первичной настройки чпу на сайт были добавлены новые товары, и для них чпу уже ТОЖЕ работает. т.е. эта табличка дополняется автоматически при добавлении товара?
  • 0

#257 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 16 July 2012 - 07:27 PM

Н

после первичной настройки чпу на сайт были добавлены новые товары, и для них чпу уже ТОЖЕ работает. т.е. эта табличка дополняется автоматически при добавлении товара?

Не совсем так. Изначально ЧПУ был написан для подмены неЧПУ ссылок на ЧПУ ссылки на лету. Что он и продолжает делать, занося в таблицу соответствий все пары ЧПУ-неЧПУ для товаров-категорий-прочего, если к этим товарам-категории-прочему кто-то обратился (зашел браузером). Но при таком раскладе невозможно получить полный sitemap.xml с ЧПУ-ссылками, т.к. в таблице соответствий будут содержаться только те пары ЧПУ-неЧПУ, на которые "хотя бы раз зашли". Для этого и сделан sitemap.php, который при запуске исполняет сразу несколько функций:
1. создает необходимые таблицы, если их нет (инсталляционная функция).
2. создает пары ЧПУ-неЧПУ для ВСЕХ товаров-категорий-прочего (учитывая rewrite.txt) и, одновременно, sitemap.xml.
3. создает редиректы-301 для категорий без слэша на конце и товаров без html на конце.

А вот когда Вы заходите браузером в новый товар-категорию-прочее, то создается только ЧПУ-неЧПУ соответствие для этого товара-категории-прочего, т.е. браузером Вы сразу видите ЧПУ-ссылку. При этом НЕ СОЗДАЮТСЯ редиректы и НЕ ОБРАБАТЫВАЕТСЯ rewrite.txt. Страшного в этом ничего нет, т.к. при первой же попытке получить с Вашего сайта sitemap.xml эти действия выполнятся, т.к. будет запущен sitemap.php.

Пример: я создал категорию "для HP" и там товар "Картридж 1234", а в rewrite.txt написал строку "для HP","for-HP".
Сразу же этот товар будет видеться в браузере как "mysite.ru/dla-HP/Kartridj-1234" и только после запуска sitemap.php как "mysite.ru/for-HP/Kartridj-1234".
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#258 busmark

    Новичок

  • Пользователи
  • Pip
  • 3 сообщений
Репутация: 0
Начинающий

Отправлено 23 July 2012 - 09:31 PM

Предлагаю внести изменения в sitemap.php

// mysql_connect(DB_HOST,DB_USER,DB_PASS) or die(mysql_error());
db_connect(DB_HOST, DB_USER, DB_PASS) or die(ERROR_DB_INIT);
// mysql_select_db(DB_NAME) or die(mysql_error());
db_select_db(DB_NAME) or die(db_error());

Столкнулся с тем, что при заполнении таблицы xxx_cpu_table неверно распознается кодировка.

В оригинальном файле mysql.php зачем-то закомментированы строки
mysql_query('set names cp1251');
mysql_query('set character set cp1251');
mysql_query('set character_set_client=cp1251');
mysql_query('set character_set_results=cp1251');
mysql_query('set character_set_connection=cp1251');
mysql_query('set character_set_database=cp1251');
mysql_query('set character_set_server=cp1251');
С такими установками таблицы создаются с общесистемной кодировкой (например utf8), а сами данные в cp1251
И начинается бордак с различными неожиданностями. (Хотя на сайте все отображается правильно)

Правда, если системная кодировка cp1251, проблем не возникает.

Короче:
расскоментировал строки с кодировкой в mysql.php
восстановил через админку, заранее созданный дамп базы (в дампе поменял свойства таблиц с utf8 на cp1251)
внес изменения в sitemap.php, описанные выше

и все побежало...

Попробовал портировать cpu на версию 3,0,0.
Почти все заработало
Затык в аякс корзине.
Может кто-то сталкивался...
  • 0

#259 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 24 July 2012 - 08:27 AM

Попробовал портировать cpu на версию 3,0,0. Почти все заработало Затык в аякс корзине. Может кто-то сталкивался...

В теме описано аж два разных способа решения для 3.1.2, когда эта ошибка имела место (не работала аякс-корзина). С большой вероятностью один из этих способов поможет и в 3.0.0.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#260 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 11 August 2012 - 10:07 PM

Добрался (по мере надобности) до Yandex.Market и соответствующего файла в ShopCMS. Чуть переделал его под этот ЧПУ - чтобы в <offers> содержимое <url>...</url> было в виде ЧПУ-url, а не в виде штатного "index.php?productID=123&amp;from=ya".
Кстати, кто бы объяснил, зачем надо вот это "&amp;from=ya"? Я не нашел, где бы оно использовалось. Задел на будущее? :)
Исправления традиционно в стиле "старое закомментировано, а новое ниже", понять не сложно. Два исправления.

Прикрепленные файлы


  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)