Как изменить вид url сайта php?

Например, есть сайт "sitename.ru/", отправляется запрос через $_GET, например "sitename.ru/content.php?page=news&id=5", как изменить этот запрос на такой вид, "sitename.ru/page/news/5".
Еще пример "sitename.ru/users.php?user=123" на "site name.ru/user/id123".
Подкиньте пожалуйста информацию об этом, слышал что как то через файл .htaccess можно сделать.
  • Вопрос задан
  • 12222 просмотра
Пригласить эксперта
Ответы на вопрос 5
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
в стародавние времена это делалось целиком и полностью на mod-rewrite.

Сейчас же проще использовать какой-нибудь микро-фреймворк, аля silex/slim и тд.
Ответ написан
Комментировать
@m-haritonov
Вообще, эта задача из двух частей:
1. Получение URL адреса.
2. Вывод HTML страницы с правильными URL адресами.

Пример.

Код для mod-rewrite, перенаправляющий все запросы в файл content.php:
RewriteEngine on
RewriteRule .* content.php


Файл content.php:
<?php
// Эту часть кода можно реализовать и через mod-rewrite
$parts = explode('/', substr($_SERVER['REQUEST_URI'], 0, strpos($_SERVER['REQUEST_URI'], '?')));
$_GET['page'] = $parts[2];
$_GET['id'] = $parts[3];
?>
<html>
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<title></title>
</head>
<body>
	<?php /*
	А код, отвечающий за то, ссылки на какие URL адреса будут в сгенерированной HTML странице, нужно размещать именно в PHP скрипте.

	Либо использовать какой-нибудь модуль apache (например, mod_ext_filter), который будет заменять ссылки в отдаваемой пользователю HTML странице на нужные (а в PHP скрипте выводить ссылки вида "?page=news&id=5").
	*/ ?>
	<ul>
		<li><a href="/page/<?=htmlspecialchars($_GET['page'])?>/<?=htmlspecialchars($_GET['id'])?>">Ссылка на текущую страницу</a></li>
		<li><a href="/page/news/10">Ссылка на новость номер 10</a></li>
	</ul>
</body>
</html>
Ответ написан
Комментировать
@iru
php dev
все зависит от CMS эта вещь называется ЧПУ, вот пример на базе joomla
Ответ написан
1. Используйте какой-либо обработчик url.
2. mod-rewrite. Там все ЧПУ легко прописываются.
Ответ написан
Комментировать
@DDanya
С помощью обработчика.Ты используешь MVC или другой паттерн?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы