да, есть немного, но азы там даны.
вот что получилось:
.htaccess
## RewriteEngine On — разрешаем серверу преобразовывать URL.
## RewriteBase / — устанавливаем базовый URL.
## RewriteCond %{REQUEST_FILENAME} !-f — проверяем, что запрошенной директории не существует.
## RewriteCond %{REQUEST_FILENAME} !-d — проверяем, что запрошенного файла не существует.
## RewriteRule . /index.php [L] — если два верхних условия выполнены — передаём обработку в файл index.php
#ЧПУ
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
БД
//SEF - Search Engines Friendly url, или ЧПУ таблица
$sql = "CREATE TABLE `sef` (
`id_page` int(16) NOT NULL auto_increment,
`name_page` varchar(256) NOT NULL,
UNIQUE KEY (`name_page`),
PRIMARY KEY (`id_page`)
)";
PHP:
/* Получаем URL в переменную */
$url = $_SERVER['REQUEST_URI'];
/*
проверяем, что бы в URL не было ничего, кроме символов
алфавита (a-zA-Z), цифр (0-9), а также /,_
в противном случае — выдать ошибку 404
*/
if ($url == "" || $url == "/") {
$ID_page = 1;
} else if (preg_match("/([^a-zA-Z0-9\_\/])/", $url)) {
header("HTTP/1.0 404 Not Found");
//echo "Недопустимые символы в URL";
echo "404. страница не найдена";
exit;
} else {
$name_page = substr($url, 1);
// Инициализация.
startup();
//Далее идёт запрос в БД о наличие в столбце SEF строки
$format = "SELECT id_page
FROM sef
WHERE sef.name_page = '$name_page'";
$result = mysql_query($format);
if (!is_array($row = mysql_fetch_assoc($result))){
//если такой строки не найдено — выводим страницу ошибки 404.
header("HTTP/1.0 404 Not Found");
echo "404. страница не найдена";
exit;
}
$ID_page = $row["id_page"];
}
echo "id страницы - " . $ID_page;