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


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


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

#21 badisoft

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

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

Отправлено 10 February 2012 - 02:10 AM

Вынеси функции и попробуй без require

да можно не выносить, просто функции db_* на mysql_* заменить, не требующие require. Но интересна ж причина :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#22 badisoft

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

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

Отправлено 10 February 2012 - 01:27 PM

Причину я нашел. Их несколько, в корне которых лежит PHP 5.2.17.
У меня везде стоит 5.3.*, поставил модуль на сервер с 5.2.17 - тоже не работает.
Для liteseotools автором заявлено, что необходим PHP 5.2.2 и выше.
Механизм работы одинаков, так что и требование, очевидно, одинаково.
На хостинге, где 5.2.17 мне удалось заставить работать модуль. А у себя - нет :).
Вечером выложу новую версию и, видимо, правильнее будет использовать не инсталлятор, а описание "ручной" установки.
Желающие могут "новую версию" сделать сами:
1. убрать из cpu.php (или index.php, если он уже переименован) строку
require_once "core/includes/database/".DBMS.".php";
и контекстной заменой заменить все db_ на mysql_ ОБЯЗАТЕЛЬНО с соблюдением регистра, т.к. DB_PRFX заменять не надо.
2. в .htaccess добавить строку
php_value error_reporting E_ALL
чтобы не вываливались на экран PHP Notice
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#23 jasiuk

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

  • Download User
  • PipPipPip
  • 47 сообщений
Репутация: 0
Начинающий

Отправлено 10 February 2012 - 05:42 PM

Сделал всё по инструкции, начал заходить на сайт (до этого был белый лист), при переходах на категорию и на товар ссылка отображается как надо, но перестало переходить на нужную страницу, постоянно главная.
  • 0

#24 eugene_wb

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

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 10 February 2012 - 05:46 PM

Сделал всё по инструкции, начал заходить на сайт (до этого был белый лист), при переходах на категорию и на товар ссылка отображается как надо, но перестало переходить на нужную страницу, постоянно главная.


ошибка в .htaccess , смотрите в ту сторону
  • 0
Изображение Изображение Изображение

#25 badisoft

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

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

Отправлено 10 February 2012 - 06:26 PM

Сделал всё по инструкции, начал заходить на сайт (до этого был белый лист), при переходах на категорию и на товар ссылка отображается как надо, но перестало переходить на нужную страницу, постоянно главная.

пропишите .htaccess следующего вида:
Options +FollowSymlinks -Indexes -MultiViews
DirectoryIndex index.php
ErrorDocument 404 /404.html

php_value session.use_trans_sid    0
php_value session.use_cookies      1
php_value session.use_only_cookies 1
php_value session.auto_start       0
php_value magic_quotes_gpc         0 
php_value register_globals         0
php_value display_errors           1
php_value magic_quotes_runtime     0
php_value allow_url_fopen          1
php_value output_buffering         0
php_value error_reporting          E_ALL

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d    
RewriteRule ^news\.html$ index.php?news=yes [L]
RewriteRule ^feedback\.html$ index.php?feedback=yes [L]
RewriteRule ^price\.html$ index.php?show_price=yes [L]
RewriteRule ^cart\.html$ index.php?shopping_cart=yes [L]
RewriteRule ^wide_search\.html$ index.php?search_with_change_category_ability=yes [L]
RewriteRule ^compare\.html$ index.php?comparison_products=yes [L]
RewriteRule ^(.*)$ index.php?cpu=/$1 [L,QSA]


---------- Сообщение объединено ----------

Этот .htaccess для дефолтовой конфигурации. Если добавляемый модуль требует вставки своего RewriteRule (например, модуль "Статьи") - вставляемые RewriteRule должны быть выше, чем строка RewriteRule ^(.*)$ index.php?cpu=/$1 [L,QSA]
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#26 invent

    Пользователь

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

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

установил по инструкции, написал что всё ок, установка завершена успешно.
но в результате вообще на сайт не заходит ошибка 500.
прописал .htaccess как порекомендовали, всё тоже
в чём может быть проблема?
  • 0

#27 badisoft

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

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

Отправлено 10 February 2012 - 08:08 PM

написал что всё ок

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

#28 invent

    Пользователь

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

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

а деинсталировать его можно как-то ? ))
а то у меня заработало но наполовину, слетели стили, картинок не видать, только текст, и в админку не заходит..
  • 0

#29 badisoft

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

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

Отправлено 10 February 2012 - 08:22 PM

а деинсталировать его можно как-то ? ))
а то у меня заработало но наполовину, слетели стили, картинок не видать, только текст, и в админку не заходит..

Можно. И легко. Только я ведь не знаю, какие действия инсталлятора у Вас выполнились, а какие - нет. Если бы выполнились все, то, предположительно, все бы работало.
Если все выполнилось "по полной", но не работает, то надо .htaccess.bak переименовать обратно в .htaccess, а index_old.php обратно в index.php. Все. По хорошему, надо бы еще удалить таблицу ????_cpu_table, но ее наличие ничему не мешает.

PS. Я сталкивался с такой ситуацией (только текст, все картинки с крестиками), когда писал и отлаживал модуль, но сейчас уже не помню, с чем это было связано. С кэшем, чтоли. Надо было его удалить. Но это написано в ридми, т.е. Вы наверняка это делали :).

О! Вот! Пора привыкать задавать вопрос КАКАЯ ВЕРСИЯ PHP?


---------- Сообщение объединено ----------

но перестало переходить на нужную страницу, постоянно главная

Тук-тук! Я очень жду Вашего ответа, помогло ли :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#30 jasiuk

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

  • Download User
  • PipPipPip
  • 47 сообщений
Репутация: 0
Начинающий

Отправлено 10 February 2012 - 08:47 PM

Поменял .htaccess на этот и всё-равно не переходит, остаётся всё время на главной.

#Options +FollowSymlinks -Indexes -MultiViews
Options +FollowSymlinks -Indexes
DirectoryIndex index.php
ErrorDocument 404 /404.html

php_value session.use_trans_sid 0
php_value session.use_cookies 1
php_value session.use_only_cookies 1
php_value session.auto_start 0
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value display_errors 1
php_value magic_quotes_runtime 0
php_value allow_url_fopen 1
php_value output_buffering 0
php_value error_reporting E_ALL

RewriteEngine on
RewriteRule ^stati/([^/]+).html$ index.php?fullarticles=$1 [L]
RewriteRule ^stati/([0-9]+)/$ index.php?articles=yes&offset=$1 [L]
RewriteRule ^stati/$ index.php?articles=yes [L]
RewriteRule ^sitemap\.xml$ /xml_sitemap.php [L]
RewriteRule ^news\.html$ index.php?news=yes [L]
RewriteRule ^feedback\.html$ index.php?feedback=yes [L]
RewriteRule ^price\.html$ index.php?show_price=yes [L]
RewriteRule ^cart\.html$ index.php?shopping_cart=yes [L]
RewriteRule ^wide_search\.html$ index.php?search_with_change_category_ability=yes [L]
RewriteRule ^compare\.html$ index.php?comparison_products=yes [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?cpu=/$1 [L,QSA]


  • 0

#31 badisoft

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

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

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

Поменял .htaccess на этот и всё-равно не переходит, остаётся всё время на главной.

Кеш удаляли? Все файлы, которые есть в каталоге /core/сache?

PS. Собственно, хуле я тут распинаюсь? :)
Дайте доступ к сайту. Опыт вашего коллеги показал, что понадобилось не полчаса, но вполне приемлемое время, меньше суток, чтобы мне понять, в чем проблема, а ему получить работающий модуль.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#32 jasiuk

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

  • Download User
  • PipPipPip
  • 47 сообщений
Репутация: 0
Начинающий

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

да, удалял файлы из кэша. Вот мой index.php, может там что не так исправил.

# ver.1.02
require_once "core/config/connect.inc.php";

define('CATEGORY_PATTERN','/\\/?category_(?[0-9]+)((_offset_(?[0-9]+))|(?_show_all))?\\.html/');
define('PRODUCT_PATTERN' ,'/\\/?product_(?[0-9]+)\\.html/');
define('PAGE_PATTERN' ,'/\\/?page_(?[0-9]+)\\.html/');
define('NEWS_PATTERN' ,'/\\/?show_news_(?[0-9]+)\\.html/');

mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_PASS);
mysql_select_db(MYSQL_NAME);

replace_from_cpu();
ob_start();
require_once 'index_old.php';
while (ob_get_level() > 1)
ob_end_flush();
$content = ob_get_contents();
ob_end_clean();
echo replace_to_cpu($content);

function replace_from_cpu()
{
if($row = mysql_fetch_assoc(mysql_query("SELECT cpu_from from ".DB_PRFX."cpu_table where cpu_to='".$_GET['cpu']."'")))
switch(substr($row['cpu_from'],0,strpos($row['cpu_from'],"_")))
{
case "category":
preg_match(CATEGORY_PATTERN,$row['cpu_from'],$matches);
$_GET['categoryID'] = $matches['category'];
if (intval($matches['offset'])>0)
$_GET['offset'] = $matches['offset'];
elseif ($matches['showall'])
$_GET['show_all']=true;
break;
case "product":
preg_match(PRODUCT_PATTERN,$row['cpu_from'],$matches);
$_GET['productID'] = $matches['product'];
break;
case "page":
preg_match(PAGE_PATTERN,$row['cpu_from'],$matches);
$_GET['show_aux_page'] = $matches['page'];
break;
case "show":
preg_match(NEWS_PATTERN,$row['cpu_from'],$matches);
$_GET['fullnews'] = $matches['news'];
break;
}
}

function replace_to_cpu($content)
{
function category_replacer($matches)
{
if ($row = mysql_fetch_assoc(mysql_query("SELECT name from ".DB_PRFX."categories where categoryID=".$matches['category']."")))
{
$to="/".translit($row['name']);
if (intval($matches['offset'])>0)
$to.="/skip".$matches['offset'];
elseif ($matches['showall'])
$to.="/all";
mysql_query("REPLACE INTO ".DB_PRFX."cpu_table SET cpu_from='$matches[0]', cpu_to='$to'");
return $to;
}
else return $matches[0];
}

function products_replacer($matches)
{
if ($row = mysql_fetch_assoc(mysql_query("SELECT name from ".DB_PRFX."products where productID=".$matches['product']."")))
{
$to="/".translit($row['name']);
mysql_query("REPLACE INTO ".DB_PRFX."cpu_table SET cpu_from='$matches[0]', cpu_to='$to'");
return $to;
}
else return $matches[0];
}

function page_replacer($matches)
{
if ($row = mysql_fetch_assoc(mysql_query("SELECT aux_page_name from ".DB_PRFX."aux_pages where aux_page_ID=".$matches['page']."")))
{
$to="/".translit($row['aux_page_name']);
mysql_query("REPLACE INTO ".DB_PRFX."cpu_table SET cpu_from='$matches[0]', cpu_to='$to'");
return $to;
}
else return $matches[0];
}

function news_replacer($matches)
{
if ($row = mysql_fetch_assoc(mysql_query("SELECT title from ".DB_PRFX."news_table where NID=".$matches['news']."")))
{
$to="/".translit($row['title']);
mysql_query("REPLACE INTO ".DB_PRFX."cpu_table SET cpu_from='$matches[0]', cpu_to='$to'");
return $to;
}
else return $matches[0];
}

$content = preg_replace_callback(CATEGORY_PATTERN,"category_replacer",$content);
$content = preg_replace_callback(PRODUCT_PATTERN,"products_replacer",$content);
$content = preg_replace_callback(PAGE_PATTERN,"page_replacer",$content);
$content = preg_replace_callback(NEWS_PATTERN,"news_replacer",$content);
$replace = array(
"'data/" => "'/data/",
'"data/' => '"/data/',
'href="stati/' => 'href="/stati/',
"='index.php" => "='/index.php",
'="index.php' => '="/index.php',
'="admin.php?' => '="/admin.php?',
'"price.html' => '"/price.html',
'"cart.html' => '"/cart.html',
'"feedback.html' => '"/feedback.html',
'href="stati/' => 'href="/stati/'
);
return strtr($content,$replace);
}

function translit($str)
{
$tr = array(
"А"=>"a","Б"=>"b","В"=>"v","Г"=>"g","Д"=>"d","Е"=>"e","Ж"=>"j","З"=>"z","И"=>"i","Й"=>"y","К"=>"k","Л"=>"l","М"=>"m","Н"=>"n",
"О"=>"o","П"=>"p","Р"=>"r","С"=>"s","Т"=>"t","У"=>"u","Ф"=>"f","Х"=>"h","Ц"=>"ts","Ч"=>"ch","Ш"=>"sh","Щ"=>"sch","Ъ"=>"","Ы"=>"yi","Ь"=>"",
"Э"=>"e","Ю"=>"yu","Я"=>"ya","а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j","з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r","с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h","ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
"ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya"," "=> "_","."=> "",","=> "","/"=> "_","’"=> "","°"=> "","+"=> "_");
return strtr($str,$tr);
}

?>


  • 0

#33 badisoft

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

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

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

Вот мой index.php, может там что не так исправил

даже смотреть не буду. Модуль, уж извините, бесплатный. Давайте доступ к сайту и я вживую посмотрю, в чем проблема. А копаться косвенно по исходникам - правильно или не правильно была заменена тильда в стосороковосьмой строке - ну его нах. У меня таки не 25 часов в сутках :).

PS. Замечу, что Вашему коллеге, предоставившему мне хостинг это помогло. Причина проблемы была найдена очень быстро, вечер-утро. PHP-то какой? А то, может, у Вас там дефолтовый для Centos 5.1.16, т.е. и говорить-то не о чем :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#34 invent

    Пользователь

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

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

разобрался всё работает, и даже при том что у меня на хостинге PHP5 5.2.14
только теперь старые ссылки уже не работают, открывается главная, вообще что угодно можно написать после site.ru открывает главную.
  • 0

#35 jasiuk

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

  • Download User
  • PipPipPip
  • 47 сообщений
Репутация: 0
Начинающий

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

PHP Version 5.2.17, сайт отправил в личку.

---------- Сообщение объединено ----------

разобрался всё работает, и даже при том что у меня на хостинге PHP5 5.2.14
только теперь старые ссылки уже не работают, открывается главная, вообще что угодно можно написать после site.ru открывает главную.

У меня так же, хотя был момент когда можно было перейти по старым ссылкам и они отображались корректно.
  • 0

#36 badisoft

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

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

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

только теперь старые ссылки уже не работают

И что же тогда подразумевается под "все работает"? :)
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#37 invent

    Пользователь

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

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

чпу работает :)
но когда вводишь вручную ссылку типа site.ru/category_1.html выдаёт главную страницу.
так и должно или должен быть редирект на новую ссылку?
  • 0

#38 badisoft

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

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

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

PHP Version 5.2.17, сайт отправил в личку.

Хм... А толку мне от имени Вашего домена? :)
Что есть проблемы я и так верю.
Версия PHP это только подтверждает.
Давайте хотя бы FTP-доступ к сайту и я попробую поиграться. Может, получится. А может и нет.

Подчеркиваю, что автор более сложного прообраза - liteseotools - четко мне написал, что модуль работает начиная с 5.2.2? (не помню уже, писал выше).
Мой модуль построен на той же идее и на тех же функциях, просто упрощен до минимума - ни классов, ни редактора, ничего. Один файлик.
У человека, предоставившего мне хостинг удалось запустить модуль на 5.2.17. Никакого волшебства, рецепты я описал.
Но предполагается (и есть тому причины), что на 5.2.17 в общем случае модуль не работает.
Является ли Ваш случай "общим" я могу узнать только получив возможность самолично поиграться с вашим сайтом.

---------- Сообщение объединено ----------

но когда вводишь вручную ссылку типа site.ru/category_1.html выдаёт главную страницу.
так и должно или должен быть редирект на новую ссылку?

Так и должно быть. Теперь Ваше /category_1.html ничем не отличается от /bla-bla-blа.
Но мысль Вы зародили весьма интересную, хм....

PS. И, главное, весьма ж не сложно реализуемую на первый вгляд....
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#39 invent

    Пользователь

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

Отправлено 10 February 2012 - 10:03 PM

в liteseotools есть редирект со старых ссылок на новые, как по моему и в другом модуле на этом сайте (в котором нужно править кучу файлов),
а то так получается все проиндексированные ссылки сейчас не будут работать, т.е. будут главную выдавать..
  • 0

#40 badisoft

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

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

Отправлено 10 February 2012 - 10:08 PM

в liteseotools есть редирект со старых ссылок на новые

Было бы здорово, если бы Вы подтверждали свои слова исходником. Или хотя бы примером каким. Я не говорю ни да, ни нет, но не помню такого в liteseotools. Хотя восстанавливал его до нормального текста и, естественно, довольно глубоко изучал логику работы. Но не всю, да, только требуемое для получения обычного нешифрованного PHP без ioncube.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)