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 шт):
Смотри
Через .htaccess переносишь весь трафик на index.php
Потом внутри index.php ловишь ссылку через переменную $_SERVER['REQUEST_URI']
Чистишь ее от всего что нежелательно .. html теги и т.п.
И в конце делишь ссылку через explode по /
Все.. получаешь массив с данными из УРЛ и все перебираешь как хочешь.