PHP Mysql правильно ловим ID + корретно делаем URL адрес + скрываем часть URL адреса

Понимаю что вопроса 3, но чтобы не спамить задаю все в одной ветке.

Есть сервис, на нем 5 динамических страниц index, shell, article, order, buy с одноименным названием таблиц. Соответственно таблиц у нас тоже 5 штук.

Каждая таблица имеет id и другие поля, в нашем случае важно только ID.

Сервис очень загружен посетителями и покупателями и чтобы его разгрузить я сделал отдельные шаблоны открытия подробной информации для каждой страницы.

То есть превью товаров пользователь видит на страницах index.php , shell.php article.php order.php buy.php а при нажатии на превью, переходит на шаблоны подробного описания товара на отдельную страницу, которые указаны внизу

То есть для index - шаблон i.php

Для shell - s.php

Для article - a.php

Для order - o.php

Для buy - b.php

Вопрос первый.

Как правильно конструировать ссылки чтобы потом не было проблем ловить ID через GET запрос?

Есть превью товара, на нем в цикле вставляю ссылки, чтобы по ним пользователь перешел на новую страницу и увидел полную информацию о товаре. При переходе по ссылке пишет ровно тот адрес URL и ID который нужен, то есть браузер показывает верный адрес и совершает переход на нужную страницу.

Ссылку <a href конструирую сейчас так:

<a href="i.php/article/<?=$id;?>">

i.php - шаблон страницы для отображения полной информации article - название таблицы из БД.

Полный адрес получается к примеру таким: https://example.com/i.php/article/1

Пытаюсь на этой странице на которую перешел поймать ID - не получается.

$_GET['id']; и его вариации не работают. При этом при выводе массива print_r($array) ID и все остальные данные конкретно взятого объявления отображаются корректно.

Вопрос второй.

Собственно говоря как правильно ловить ID из созданного нами URL адреса? ID стоит в конце URL ссылки.

Пример: https://example.com/i.php/article/581

Или это делается с помощью сессии???

Вопрос третий.

Как правильно скрывать часть ссылки URL от пользователей?

Сами понимаете ссылка вида example.com/i.php/article/581 - это бред.

Нужно спрятать шаблон страницы, чтобы получилось так:

example.com/article/581

Сделал вот так в конфигах .htaccess, это не сработало.

RewriteCond %{REQUEST_URI} !^example.com/i.php/article [NC]
RewriteRule ^example.com/(.*)$ example.com/article/$1 [L]

Пытался и так, тоже не работает.

RewriteCond %{REQUEST_URI} !^example.com/i.php/article [NC]
RewriteRule ^example.com/(.*)$ example.com/$1/article [L]

Где article - это название таблицы, соответственно за ним идет ID к примеру example.com/article/511

Объясните пожалуйста, не могу догнать, прогуглил кучу статеек по трем вопросам, тестировал все что там было описано, безрезультатно.

Спасибо за помощь.


Ответы (1 шт):

Автор решения: mr entonee

Смотри

Через .htaccess переносишь весь трафик на index.php

Потом внутри index.php ловишь ссылку через переменную $_SERVER['REQUEST_URI']

Чистишь ее от всего что нежелательно .. html теги и т.п.

И в конце делишь ссылку через explode по /

Все.. получаешь массив с данными из УРЛ и все перебираешь как хочешь.

→ Ссылка