Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
1 / 1 / 7
Регистрация: 29.10.2012
Сообщений: 247
1

ЧПУ ссылки

15.04.2014, 11:04. Показов 2454. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Хочу реализовать такую ЧПУ, например:
Обычная ссылка: /index.php?page=1
ЧПУ: music.html

Все ссылки хранил бы в БД (чпу и обычную). И вот здесь возникает вопрос, как это все делать... Нагуглил примерно такое:

1. Этап замена существующих ссылок:
SQL
1
2
3
4
INSERT INTO `sef` (`id`, `alias`, `link`) VALUES
(1, 'article', '/?view=article&id=1'),
(2, 'my_article', '/?view=article&id=2'),
(3, 'my', '/?view=section&id=1');
В массиве $matches[2] - такие данные: /?view=article&id=2

PHP
1
2
3
4
5
6
7
8
9
10
11
12
function replaceSEF($content) {
        global $mysqli;
        $regex = "[(<a[^>]*href\s*=\s*[\"'])([^'\"]*)([\"'][^>]*>\s*.*?\s*</a>)]i";
        preg_match_all($regex, $content, $matches);
        for ($i = 0; $i < count($matches[2]); $i++) {
            $temp = str_replace("&amp;", "&", $matches[2][$i]);
            $result_set = $mysqli->query("SELECT `alias` FROM `sef` WHERE `link`='$temp'");
            $row = $result_set->fetch_assoc();
            $content = str_replace($matches[2][$i], $row["alias"], $content);
        }
        return $content;
    }
Но тут сразу вопрос, тут меняется по конкретному массиву - $matches[2][$i], а как мне заменить все ссылки?

2.
.htaccess
HTML5
1
2
3
4
5
RewriteEngine on
Options +FollowSymlinks
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) /?%{QUERY_STRING}
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
function getContent($alias) {
        global $mysqli;
        $content = "Моя страница <a href='/?view=article&amp;id=1'>тут</a> и ещё вот <a href='/?view=section&amp;id=1'>это</a>";
        $result_set = $mysqli->query("SELECT `link` FROM `sef` WHERE `alias`='$alias'");
        $row = $result_set->fetch_assoc();
        if ($result_set) $result_set->close();
        $vars = parse_url($row["link"]);
        parse_str($vars["query"], $vars);
        if ($vars["view"] == "article") $content .= "<br />Статья с ID=".$vars["id"];
        elseif ($vars["view"] == "section") $content .= "<br />Раздел с ID=".$vars["id"];
        else $content = "404 Not Found";
        return $content;
    }
Опять же вопрос, а если я перейду на главную страницу, то выдаст ошибку... как тут быть? Так же не ясно, что делать, если моя ссылка будет выглядеть так: /?page=1, а в примере она такая: /?view=article&amp;id=1

Так же хотелось бы от вас услышать нормальный ли это способ? есть ли какие-то подводные камни? Может есть что изменить?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.04.2014, 11:04
Ответы с готовыми решениями:

ЧПУ Ссылки
Добрый вечер Помогите плиз разобраться в принципе работы ЧПУ Вот к примеру есть такая ссылка ...

ЧПУ ссылки
Есть сайт http://диолстрой.рф/ Ссылки на другие страницы, кроме главной выдаются примерно так...

Настройка ЧПУ ссылки
Я пытаюсь создать ЧПУ ссылку, .htaccess мне удалось сделать, а на php не получается сформировать...

ЧПУ ссылки в PHP
Здравствуй форум! Делаю сайт на котормо есть профили пользователей, ссылки на них выглядят...

11
2 / 2 / 3
Регистрация: 17.02.2014
Сообщений: 65
15.04.2014, 15:45 2
а зачем все так сложно?
Бд сюда приплетать, в htacces так сложно все писать
http://www.generateit.net/mod-rewrite/index.php
Вот онлайн генератор, я через него корректирую ЧПУ, а потом просто копирую код, который он выдает в htacces и готово) занимает пару минут времени
0
1 / 1 / 7
Регистрация: 29.10.2012
Сообщений: 247
15.04.2014, 16:27  [ТС] 3
Просто даже если я прикручу ЧПУ к своей ссылке то вот что получится:
Оригинал: /?page=1
ЧПУ: /1.html

Вот и хотелось бы придумывать свой текст для ссылки
0
31 / 31 / 13
Регистрация: 11.02.2014
Сообщений: 97
15.04.2014, 20:45 4
лучше всего через роутер тоесть ссылку вида сайт.ру/article/1 ты переделываешь на сайт.ру/index.php?route=article/1 c помощью mod_rewrite
потом
PHP
1
explode("/",$_GET[route])
и вуаля у тебя массив с адресом
0
1 / 1 / 7
Регистрация: 29.10.2012
Сообщений: 247
15.04.2014, 21:35  [ТС] 5
А что означает route? и для чего он нужен?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
15.04.2014, 21:41 6
Руководство по настройке ЧПУ (Rewrite)
0
31 / 31 / 13
Регистрация: 11.02.2014
Сообщений: 97
15.04.2014, 21:41 7
SLameN, это всего лишь get параметр вы его можете обозвать как хотите
то есть в моем примере
PHP
1
echo $_GET[route];
выведет article/1
0
KOPOJI
15.04.2014, 21:41
  #8

Не по теме:

а заодно выведет notice..

0
31 / 31 / 13
Регистрация: 11.02.2014
Сообщений: 97
15.04.2014, 21:43 9
KOPOJI,

Не по теме:

изза обращения к глобальной переменной или отсутствия кавычек или ... ??

0
KOPOJI
15.04.2014, 21:50
  #10

Не по теме:

из-за отсутствия кавычек/апострофов. Впрочем, может, и еще где, я код даже не смотрел.. Сами можете посмотреть при желании:

PHP
1
2
error_reporting(-1);
ini_set('display_errors', true);

0
1 / 1 / 7
Регистрация: 29.10.2012
Сообщений: 247
15.04.2014, 21:58  [ТС] 11
Спасибо за посты. Но, как я писал выше (пост 3), такой метод мне не очень подходит, а вот первый замечательный, но сильно замудренный и по нему есть вопросы, можете с ним помочь?
0
11 / 11 / 3
Регистрация: 23.01.2014
Сообщений: 295
15.04.2014, 22:03 12
SLameN,Просто даже если я прикручу ЧПУ к своей ссылке то вот что получится:
Оригинал: /?page=1
ЧПУ: /1.html


А не проще сделать чтобы ваш ?page = 1 ровнялся бы ?page = musik тогда бы и получилось бы musik.html
0
15.04.2014, 22:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.04.2014, 22:03
Помогаю со студенческими работами здесь

Как создавать чпу ссылки
Здравствуйте, меня интересует как создавать чпу ссылки. Теории знаю много да вот никак не могу...

Почему не преобразуются ссылки чпу?
Добавил в htaccess на денвере следующую запись: RewriteEngine On RewriteBase / RewriteRule...

Как делать ссылки чпу на php?
Всем привет! Подскажите пожалуйста как реализовать ссылки чпу для сайта на php?...

Требуется переделать ссылки с параметрами на чпу
Здравствуйте, имеется сайт, где вся структура страниц выглядит след образом: ?view=etiketks&amp;id=185...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru