Я не уверен, что это называется, но я отметил его mod-rewrite и.htaccess, поскольку в подобных категориях есть несколько похожих вопросов.
Все страницы, на которых я заканчиваю.php, как я могу изменить его так, чтобы расширение было удалено и общая перерисовка URL была более дружественной/удобочитаемой?
Конкретным примером является страница элемента, где есть ссылки на элементы в форме /dir/page.php?itemno=val
, где val
приходит из базы данных, а текст, который я хотел бы заменить, исходит из таблицы val
в.
$getNames = $db->prepare("
SELECT val, name
FROM items
");
$getNames->execute();
Результат может выглядеть так:
val | name
1 | john
2 | bill
3 | anna
4 | tomm
5 | sara
... | ...
Как я могу переписать URL-адрес таким образом, чтобы это произошло?
/dir/page.php?itemno=1 becomes /dir/page/john/
/dir/page.php?itemno=2 becomes /dir/page/bill/
/dir/page.php?itemno=3 becomes /dir/page/anna/
...
Результирующий набор достаточно мал (20 значений), который я мог бы жестко закодировать, вместо того, чтобы захватывать SQL, но просто, как переписать URL-адреса, ускользает от меня. Я не уверен, как это делается.
Вы можете, конечно, сделать это с помощью mod_rewrite
, единственное предостережение в том, что Apache (или любой другой веб-сервер) не может получить доступ к базе данных, поэтому вам придется искать itemno
в каждом запросе.
RewriteEngine on
RewriteRule /dir/page/(.*) /dir/page.php?itemno=$1 [L]
Теперь переход на /dir/page/john
фактически загрузит /dir/page.php?itemno=john
.
mod_rewrite
выполняются веб-сервером (apache) и не могут получить доступ к значениям в базе данных. Вы можете сделать URL/dir/page/john/
, но тогда вам придется искать идентификатор в базе данных (я предполагаю, что нет повторяющихся имен).