X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> ЧПУ или свои URL для каждой страницы
DrDRED
DrDRED
Topic Starter сообщение 28.5.2013, 7:31; Ответить: DrDRED
Сообщение #1


Добрый день!
Делаю небольшой движок для сайта. Столкнулся с такой проблемой. Контент хранится в БД, у каждого текста свой id, при переходе на новую страницу в ссылке указываю, например так index.php?id=$id, т.е. просто гетом передаю id а потом его обрабатываю.
Внимание вопрос. Как сделать чтобы для каждого контента был уникальный адрес в браузерной строке, т.е. URL.
Например:
index.php?id=1==> в браузере отображался как сайт.ru/about
index.php?id=2 ==> в браузере отображался как сайт.ru/contacts

и т.д. В joomla наподобие реализовано. Возможно ли это реализовать? Спасибо.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Alcorn
Alcorn
сообщение 28.5.2013, 9:53; Ответить: Alcorn
Сообщение #2


Сделать соответствие id и url?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
DrDRED
DrDRED
Topic Starter сообщение 28.5.2013, 10:07; Ответить: DrDRED
Сообщение #3


У меня есть такие ссылки
<a href="index.php?id=1">ссылка</a>

мне необходимо чтобы когда мы перейдем по этой ссылке, в браузере, в адресной строке отображалось http://сайт.ru/about
т.е. для каждой сгенерированной ссылки, можно было прописать свой url
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Wins
Wins
сообщение 28.5.2013, 10:15; Ответить: Wins
Сообщение #4


Во втором посте этой темы http://www.html.by/threads/30335-Kak-vydel...nkt-menju/page3

есть преобразование в чпу ссылки,только там еще помимо php используется само собой .htaccess
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
DrDRED
DrDRED
Topic Starter сообщение 28.5.2013, 10:41; Ответить: DrDRED
Сообщение #5


Короче очень много гуглил, нашел вот эту полезную ссылочкуhttp://www.softmaker.kz/articles/php/nastr...chelovekom.html
там описано практически то что мне надо, но все равно вопрос остался.
можно ли для каждой ссылки прописать отдельное правило, чтобы например index.php?id=1 ==> в браузере отображался как сайт.ru/about, а
index.php? id=2 ==> в браузере отображался как сайт.ru/contacts
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Alcorn
Alcorn
сообщение 28.5.2013, 10:47; Ответить: Alcorn
Сообщение #6


Я так делал: в бд таблица карты сайта (страницы есть реально на диске) и каталога - виртуальные страницы - id, pid, url, и т.д. (древовидная структура, {1, 0, about}, {2, 1, contacts} и ещё 13 тысяч категорий различной вложенности). При старте приложения рекурсией строил дерево и сохранял в массив, по типу $sitemap["/about/"] = array("id" => 1, "хлебные крошки" => "<a href='/'>Главная</a> > <a href='/О компании'>", "title" => "Главная / О компании"), $sitemap["/about/contacts/"] = array() и так далее, всё это дело в кэш пока сервер не перезагрузится или вручную категории из админки не поменяются. При клиентском запросе по url (ключу данного массива) вытаскивал id раздела (ваш случай), путь по сайту и всё остальное. Всё это делалось не на php, но подход примерно такой.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
DrDRED
DrDRED
Topic Starter сообщение 31.5.2013, 8:14; Ответить: DrDRED
Сообщение #7


так ладно, опустим предыдущий вопрос. Думаю надо сделать проще:

есть ссылки <a href="index.php?page=$id">ссылка</a>, что надо прописать в .htaccess, чтобы в браузере выводилась такая ссылка ==> сайт.ру/content/page/1, вот как то так
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Wins
Wins
сообщение 31.5.2013, 9:49; Ответить: Wins
Сообщение #8


DrDRED

Ну вот пример:

.htaccess

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^[^/]+\.html$ index.php [L]

[PHP]
$requestUri = $_SERVER['REQUEST_URI'];
$requestUri = preg_replace('/\?.+/', '', $requestUri);
$requestUri = preg_replace('#^/?#', '', $requestUri);

$parts = explode('/', $requestUri);
$categoryPart = $parts[0];
$articlePart = isset($parts[1]) ? $parts[1] : null;

$categoryId = 0;
$articleId = 0;

$categoryPart = mysql_real_escape_string(preg_replace('#\.html$#i', '', $categoryPart) . '.html');
$sql = "SELECT id FROM table_name_категории WHERE url = '{$categoryPart}'";
$categoryIdQuery = mysql_query($sql);
if (mysql_num_rows($categoryIdQuery) > 0) {
$categoryId = (int)mysql_result($categoryIdQuery, 0, 0);
}//Узнаем id категории//

if ($articlePart) {
$articlePart = mysql_real_escape_string(preg_replace('#\.html$#i', '', $articlePart) . '.html');
$sql = "SELECT id FROM table_name_статьи WHERE url = '{$articlePart}'";
$articleIdQuery = mysql_query($sql);
if (mysql_num_rows($articleIdQuery) > 0) {
$articleId = (int)mysql_result($articleIdQuery, 0, 0);
}
}//Узнаем id статьи//

if ($categoryId) {
$cat = $categoryId;
}



[/PHP]

Теперь там где нужно вывести ссылку

[PHP]$result = mysql_query
("SELECT id,url FROM table_name_статьи WHERE id='1' ",$db);

//вообще тут стоят переменны,но для наглядности поставил просто id='1'//

while ( $myrow = mysql_fetch_array( $result ) ){
$articleCategoryId = (int) $myrow['id_cat'];
$sql = "SELECT url,id,id_cat FROM table_name_категории WHERE id = {$articleCategoryId}";
$categoryQuery = mysql_query($sql);
$category = mysql_fetch_assoc($categoryQuery);
$categoryUrl = preg_replace('#\.html$#', '', $category['url']);


echo'<a href="/'.$categoryUrl.'/'.$myrow['url'].'">'[/PHP]

В $categoryUrl ссылка из бд из таблицы где хранятся категории

В $myrow['url'] ссылка из таблицы где хранятся статьи

Все это с учетом того что есть две таблицы,в одной категории,в другой статьи

По переменным сравнивается id_cat из таблицы статьи с id из таблицы категории.Но это не суть важно.

Просто вам осталось подстроить это все под себя.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Создать видеоканал лучше в ютуб или телеграм?
17 uahomka 3226 Вчера, 11:58
автор: Omaxis
Открытая тема (нет новых ответов) ✅ sms.chekons.com - ⭐ Сервис для получения SMS на реальные номера USA "Non-VoIP, безлим SMS, API" ⭐
Сервис для получения SMS на реальные номера USA
13 Chekon 4078 18.4.2024, 11:48
автор: Chekon
Открытая тема (нет новых ответов) Rebex.io – Ваша инновационная платформа для обмена криптовалюты!
1 Rebex 690 17.4.2024, 11:50
автор: Rebex
Открытая тема (нет новых ответов) Какой % отказов нормален для сайта?
11 Aloof 2823 16.4.2024, 12:48
автор: diviner99
Горячая тема (нет новых ответов) Betatransfer.net - прием платежей для HIGH RISK проектов, интернет эквайринг и мерчант онлайн оплат
54 arendator 34838 15.4.2024, 15:16
автор: arendator


 



RSS Текстовая версия Сейчас: 20.4.2024, 11:14
Дизайн