Передача странице PHP GET переменных

У меня есть страница, которая принимает GET переменные

blabla.ru/index?e=123

Но такой вид ссылки выглядит не очень.
Видел, что на многих сайтах, например новости, отображаются по пути типа

blabla.ru/news/123/

Не думаю, что под каждую новость у них создаётся страница. Как можно передавать переменную по ссылке в таком виде?
Я что-то слышал про query field или path field, вроде так называется, но гугля эти названия ничего не нашёл =(
Помогите, пожалуйста, реализовать


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

Автор решения: Владлен Вожжаев

Вам необходимо ознакомиться с понятием роутингов на PHP. В случае когда вы используйте хостинг у вас имеется замечательный файл .htaccess, если его нет, то создайте его в корне сайта.

Этот файл поможет вам направить пользователя на специальный файл который будет отображать содержимое. Вот например такой код, который укажет что если человек обратился не к файлу и не к папке, то открыть запустить файл router.php

Код для .htaccess

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

RewriteRule ^.*$ router.php [QSA,L]

В свою очередь в файле router.php который лежит рядом с .htaccess вы получаете адрес который вбил пользователь и разбираете его по кусочкам

$path = explode('/', filter_var($_SERVER['REQUEST_URI'], FILTER_SANITIZE_URL));

В итоге здесь у меня массив $path в котором есть части пути разделяемые слешем. Далее если примитивно, то пишем

if($path[2]=='superPage'){
  require_once('pages/superpage.php');
}

Если пользователь зашел на страницу mydomen/dir/superPage то вы ему откроете pages/superpage.php хотя url выглядит красивее) Ну а вместо гет запроса тогда можно просто использовать часть пути, хотя идея так себе. В современности, приложения посылают данные с помощью JS.

Как то так)

→ Ссылка