mysite/blablabla/id123

trava

Новичок
Как это реализовать; Что прописать на стороне сервера (и на чем ? ), чтобы при переходе на
http://mysite/id123 появилась тестовая страница ("привет ваш id: 123"), а при
http://mysite/ главная ("Hello World");
ps: Надеюсь теперь вопрос стал понятнее. Куда рыть ?
 

Ragazzo

TDD interested
Breeze
<zanudamode>почему ЧПУ? разве то, что он привел не "path format"?</zanudamode>
 

Breeze

goshogun
Команда форума
Партнер клуба
Ragazzo

потому что принцип построения один и тот же =)
 

Фанат

oncle terrible
Команда форума
статья - ерунда полная.
начало ничего, но дальше, какие-то прегсплиты - чушь.

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

trava

Новичок
да, есть немного, но азы там даны.

вот что получилось:
.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;
 
Сверху