Категории

[FAQ] Часто задаваемые вопросы и ответы

Проблемы и решения

Ошибки и исправления

Общие вопросы

Расширения

Установка и обновление

Модули

Шаблоны

Локализация интерфейса

Коммерческие предложения

Учимся бизнесу

Бизнес книги

Поисковая оптимизация (SEO)

Магазины на ShopOS

Хостинг для ShopOS

Предложения и пожелания

Курилка

глюк в вопросах и ответах

после добавления 1 вопроса и ответа все нормально, после добавления второго или редактирования первого, при переходе по ссылке на страницу вопроса выводит главную страницу, при этом вопрос и ответ в блоке выводится. ссылка нормальная но страницы нет


да вродибы нормально

http://demo.shopos.ru/faq.php


ЧПУ УРЛ указываете для faq?


да все указываю, если после добавления 1 все работает, после редактирования или добавления второго не переходит ни на одну страницу вопроса. версия 2.5.1


оставил одну запись в блоке, через некоторое время опять перестал переходить на страницу вопроса, при чем не редактировал и не добавлял в этот блок ничего нового


ссылку на магазин можно?


http://net-shkaf.ru/


:-\


и где там вопросы  и ответы

http://net-shkaf.ru/faq.php


удалил, написал 2 вопроса с ответами один открывается второй нет


так ссылки какие там формируются

какого вида?

может там ЧПУ просто глючит.

ссылки кривые формируются ?



удалил, написал 2 вопроса с ответами один открывается второй нет

Оба открываются!


они выводятся везде в блоке на странице faq но если конкретно один вопрос открыть переходит на главную страницу,

с ссылками на товары вроде как все нормально,

ссылки иногда в таком виде  http://net-shkaf.ru/faq_id=11  или то что я  в поле  ЧПУ URL вопроса и ответа  вписываю сейчас    вопрос 1      http://net-shkaf.ru/1          вопрос 2  http://net-shkaf.ru/2,

добавляешь 1 запись все работает, стоит открыт для редактирования её или создать вторую запись, либо только последняя выводится, либо обе не выводятся .


Евгений если вот так http://net-shkaf.ru/faq.php?faq_id=12 открывается нормально, но ссылки формируются не так, вот то что получается http://net-shkaf.ru/1



они выводятся везде в блоке на странице faq но если конкретно один вопрос открыть переходит на главную страницу,

с ссылками на товары вроде как все нормально,

ссылки иногда в таком виде  http://net-shkaf.ru/faq_id=11  или то что я  в поле  ЧПУ URL вопроса и ответа  вписываю сейчас    вопрос 1      http://net-shkaf.ru/1          вопрос 2  http://net-shkaf.ru/2,

добавляешь 1 запись все работает, стоит открыт для редактирования её или создать вторую запись, либо только последняя выводится, либо обе не выводятся .


так может в ЧПУ к faq указано faq_id=11 или просто 2


в том то и дело что просто 2, я разные чпу указывал всегда одно и тоже, а тот по которому выводится я не понимаю откуда берется


я версию обновлял до 2.5.1 могло что нить потеряться может какие файлы перезалить



в том то и дело что просто 2, я разные чпу указывал всегда одно и тоже, а тот по которому выводится я не понимаю откуда берется


там чпу ссылки кэшируются

может кэш заглючил

удалить файлы из папки cache\system\

но я скорее всего это уже говорил


удалил файлы, добавил две записи все было нормально, но после того как изменил одну из них снова  появилась эта же проблема, папка cache\system\ пустая


выключил и включил каждый вопрос обнулил кеш, заработало  ;D но почему это нужно делать все равно какой то непонятный глюк


да все работает до обновления кеша
кеш сразу после обновления  "Использованное место: 500 KB"


У меня если заполнена ЧПУ ссылка vopros-1.html и в боксе ссылка http://www.domain.tld/vopros-1.html то при клике не выводится с 404 ошибкой, если очищаю поле ЧПУ и чищу кэш, то ссылки вида http://www.domain.tld/faq.php/faq_id/5/question/vopros-1 и они выводятся при клике.

Терзают меня смутные подозрения, что в .htaccess должны быть прописаны спецефические правила RewriteRule для faq.php



У меня если заполнена ЧПУ ссылка vopros-1.html и в боксе ссылка http://www.domain.tld/vopros-1.html то при клике не выводится с 404 ошибкой, если очищаю поле ЧПУ и чищу кэш, то ссылки вида http://www.domain.tld/faq.php/faq_id/5/question/vopros-1 и они выводятся при клике.

Терзают меня смутные подозрения, что в .htaccess должны быть прописаны спецефические правила RewriteRule для faq.php


дело в .htaccess

если он есть - тогда любой адрес заканчивающийся на .html ведет на главную или если такой url к чему то привязан - к тому, к чему привязан.


Ну вот часть моего .htaccess с правилами Rewrite
RewriteBase /

RewriteRule ^product_reviews_write\.php\/info\/p(.*)_.*\.html product_reviews_write\.php\?products_id=$1
RewriteRule ^product_reviews_write\.php\/action\/process\/info\/p(*)_.*\.html product_reviews_write\.php\?action=process\&products_id=$1

RewriteRule ^product_info\.php\/info\/p(.*)_.*\/action\/add_product product_info\.php\?products_id=$1\&action=add_product\
RewriteRule ^shopping_cart\.php\/products_id\/(*)\/info\/p(*)_.*\.html shopping_cart\.php\?products_id=$1

RewriteRule ^(product_info|index|shop_content).php(.*)$ redirector.php

RewriteRule ^.*\.gif|\.jpg|\.png|\.css|\.js$ -
RewriteRule ^(.*).html(.*)$ manager.php

RewriteRule ^.*\.gif|\.jpg|\.png|\.css|\.php|\.js$ -


В .htaccess за обработку ссылок вида domain.tld/some-address-string.html отвечает директива
RewriteRule ^(.*).html(.*)$ manager.php
которая попросту отправляет такую ссылку в manager.php, где обрезается адрес сервера и ищется по всей базе строка some-address-string.html, при нахождении таковой отдается id страницы типа news_id.

Проблема в том, что в manager.php отсутствует обработчик для faq_id!

В файле manager.php в корне находим блок

  = $nID;
          mysql_free_result($result);
          mysql_close();
          $PHP_SELF = '/news.php';
          include('news.php');
        } else {

и вставляем после него


        mysql_free_result($result);
        $query = 'select faq_id from ' . TABLE_FAQ . ' where faq_page_url="' . os_db_prepare_input($URI_elements) . '"';
        $result = mysql_query($query);
        if (mysql_num_rows($result) > 0) {
          $row = mysql_fetch_array($result, MYSQL_ASSOC);
          $fID = $row['faq_id'];
          $matched = true;
        } else {
          $matched = false;
        }
        if ($matched) {
          $HTTP_GET_VARS['faq_id']  = $fID;
          $_GET['faq_id']  = $fID;
          mysql_free_result($result);
          mysql_close();
          $PHP_SELF = '/faq.php';
          include('faq.php');
        } else {


сразу после вставленного кода находится блок

          mysql_free_result($result);
          mysql_close();
          header('HTTP/1.1 404 Not Found');
          $PHP_SELF = '/index.php';
          include('index.php');

после него вставляем одну правую фигурную скобку


          }


PS Посмотрев структуру manager.php, я понял, что здесь действительно каждый раз просходит поиск по всей базе строки вида some-address-string.html при использовании ЧПУ. Очень нерационально и неэффективно с точки зрения производительности. Нужен механизм, который по строке адреса сразу же определял к какому роду относится ссылка и отправлял ее прямо в свой обработчик. Значит, нужен маркер типа ссылки в виде префикса news-, item- и т.п., например, category-some-address-string.html  Мне представляется, что сортировку можно делать в .htaccess вроде (не уверен в синтаксисt регекса директивы)


RewriteRule ^(news-)(.*).html(.*)$ fake-manager-news.php
RewriteRule ^(category-)(.*).html(.*)$ fake-manager-category.php

Понятно, что manager.php разбивается на отдельные файлы-обработчики.


Спасибо помогло ! ;)


Источник



Copyright ShopOS