Здравствуйте друзья, вопрос такой, при настройке ЧПУ слетело подключение к базе данных, не могу понять причину. ЧПУ настраивала через транслитерацию в файле .htaccess добавила это: RewriteEngine On Options +FollowSymlinks RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^articles/([a-z0-9\-]+)/?$ articles/page.php?id=$1 [L] функция код: function ftranslite($name){ $name=preg_replace("/[\s+\.\,]/","-",$name); $name=preg_replace("/[\"\'\!\?\(\)\:\$\%]/","",$name); static $trans= array( 'а'=>'a', 'б'=>'b', 'в'=>'v', 'г'=>'g', 'д'=>'d', 'е'=>'e', 'ж'=>'zh', 'з'=>'z', 'и'=>'i', 'й'=>'y', 'к'=>'k', 'л'=>'l', 'м'=>'m', 'н'=>'n', 'о'=>'o', 'п'=>'p', 'р'=>'r', 'с'=>'s', 'т'=>'t', 'у'=>'u', 'ф'=>'f', 'ы'=>'i', 'э'=>'e', 'А'=>'A', 'Б'=>'B', 'В'=>'V', 'Г'=>'G', 'Д'=>'D', 'Е'=>'E', 'Ж'=>'ZH', 'З'=>'Z', 'И'=>'I', 'Й'=>'Y', 'К'=>'K', 'Л'=>'L', 'М'=>'M', 'Н'=>'N', 'О'=>'O', 'П'=>'P', 'Р'=>'R', 'С'=>'S', 'Т'=>'T', 'У'=>'U', 'Ф'=>'F', 'Ы'=>'I', 'Э'=>'E', 'ё'=>"yo", 'х'=>"h", 'ц'=>"ts", 'ч'=>"ch", 'ш'=>"sh", 'щ'=>"shch", 'ъ'=>"", 'ь'=>"", 'ю'=>"yu", 'я'=>"ya", 'Ё'=>"YO", 'Х'=>"H", 'Ц'=>"TS", 'Ч'=>"CH", 'Ш'=>"SH", 'Щ'=>"SHCH", 'Ъ'=>"", 'Ь'=>"", 'Ю'=>"YU", 'Я'=>"YA"); $strstring = strtr($name, $trans) ; return strtolower($strstring) ; } ну и ссылки на страницы блога поменяла на: http://gel-travel.ru/articles/<?php echo ftranslite($article["title"]) ?>/ ЧПУ заработали, а вывод из базы данных прекратился, подключалась так: $db = new PDO('mysql:host=localhost;dbname=ХХХ;charset=utf8', 'ХХХ', 'ХХХ'); $currentArticleId = intval($_GET['id']); $sql = "SELECT * FROM articles WHERE id = '$currentArticleId'"; $result = $db->query($sql); $article = $result->fetch(PDO::FETCH_ASSOC); Спасибо заранее.
а с чего вы взяли что у вас слетело подключение к БД? ваши ЧПУ никоим образом не затрагивают БД и подключение к ней другое дело, что вы передаете уже не id статьи а title, а в скрипте ничего для этого не поменяли - вот он и преобразует каждое название через intval() в 0 - ну и думаю у вас такой статьи нет)))) у вас теперь как-то так будет PHP: $currentArticle = $_GET['id']; $sql = "SELECT * FROM articles WHERE title = '$currentArticle'"; ну конечно-же так нельзя делать... SQL инъекции и все такое, но оставляю вам это для самостоятельного разбора
@Lenaole, возьмите этот фронт: https://gency.ru/g-drive-dbe-3 – избавит от замеченных костылей и дыр в безопасности. --- Добавлено --- PHP: <!-- в списке --> <a href="/<?= $r0['id'] или $page['id'] ?>/<?= $article['id'] или любое другое свободное имя массива, например $row['id'] ?>"> <!-- на странице статьи --> <a href="/<?= $r0['id'] ?>/<?= $r1['id'] или $page['id'] ?>"> Но лучше использовать спец. ф-цию. Только без транслита на лету Результат кода для списка: g09.ru/articles