Сначала создайте файл .htaccess
со следующим:
# Turn on rewrite engine and redirect broken requests to index
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* router.php [L,QSA]
</IfModule>
Затем установите следующий код для router.php
:
<?php
$segments=explode('/',trim($_SERVER['REQUEST_URI'],'/'),3);
switch($segments[0]){
case 'tag': // tag/[id]/[slug]
$_REQUEST['id']=(int)$segments[1];
$_GET['id']=(int)$segments[1];
$slug=$segments[2];
require_once('tag.php');
break;
}
?>
Дальнейшее уточнение
Htaccess
Концепция htaccess очень проста.Вместо того чтобы прислушиваться к шаблонам URL (как это делало старое программное обеспечение htaccess), мы просто перенаправляем весь трафик, который в противном случае привел бы к 404 - router.php
, что, в свою очередь, позаботится о том, чтобы выполнить то, что требуется.Есть 3 записи переписать;для (sym) ссылок, файлов и каталогов (/aaa
рассматривается как файл, а /aaa/bbb
- как папка)
Маршрутизатор
$_SERVER['REQUEST_URI']
выглядит как "/tag/1/slug"
.Сначала мы обрезаем его на избыточные косые черты, а затем разбиваем его на 3 элемента (поэтому мы не влияем на слаг, который может содержать другие косые черты), print_r
при использовании $segments
(для тегов / 45 / Hello / World) будет выглядетьнапример:
Array
(
[0] => tag
[1] => 45
[2] => Hello/World
)
Наконец, поскольку я вижу, что вы хотите перенаправить на tags.php?id=1
, вам нужно вручную установить $_REQUEST['id']
и $_GET['id']
и загрузить tags.php
.