не нужно ничего передавать и запоминать. Код (Text): RewriteRule .* index.php [L,QSA] Более чем достаточно. А внутри пхп распарсить $_SERVER['REQUEST_URI']. Добавлено спустя 43 секунды: и не нужно Добавлено спустя 3 минуты 41 секунду: вот моя поделка. Работает хорошо Код (PHP): $url = parse_url($_SERVER['REQUEST_URI']); self::$document = self::getDocument($url['path']); if (self::$document === false) { //requested url not found http_response_code(404); self::$document = trim(CFG::$pinpie['page not found'], DS); } Код (PHP): private static function getDocument($url) { self::$getDocumentRecur++; if (self::$getDocumentRecur > CFG::$pinpie['route to parent']) { return false; } if (empty($url)) { return false; } $doc = false; ///////////////////////////////////////////////////////// if (is_array($url)) { $surl = implode(DS, $url); } else { $url = trim((string)$url, '/'); $surl = $url; $url = explode('/', $url); } //if $surl is "ololo/ajaja": //First step. Look for "/pages/ololo/ajaja.php". $path = CFG::$pinpie['pages folder'] . DS . $surl . '.php'; if (file_exists($path)) { $doc = $surl . '.php'; } else { //Second step. If it is directory, look for "/pages/ololo/ajaja/index.php". $path = CFG::$pinpie['pages folder'] . DS . $surl; if (is_dir($path) AND file_exists($path . DS . 'index.php')) { $doc = $surl . DS . 'index.php'; } else { //Third step. If CFG::$route_to_parent is set greather than zero, will look for nearest parent. Mean "/pages/ololo/ajaja/index.php" if not exist, goes to"/pages/ololo.php" or "/pages/ololo/index.php". (BUT NOT "/pages/index.php" anyway) if (CFG::$pinpie['route to parent'] > 0) { unset($url[count($url) - 1]); $doc = self::getDocument($url); } } } return $doc; } может поможет в качестве примера
Он только index не игнорит. Получается сейчас, что на всех страницах представление только index. Добавлено спустя 4 минуты 12 секунд: Попробую внедрить в свой=)
не надо внедрять, оно у меня под моё заточено. Ты посмотри код, обрати внимание на функцию parse_url(), рекурсия вся эта тебе не нужна скорее всего. Не забывай отдавать http_response_code(404); если страницы нет, а то есть гадости, связанные с ответом 200 на ссылку, которой нет и так делать нельзя (как минимум говноссылки и до недавнего времени статистика яндекса).
Так сделал, движок стал определять представления=) Код (PHP): $request = parse_url($_SERVER['REQUEST_URI']); $routes = explode('/', array_shift($request)); if ($routes === false) { //requested url not found Route::ErrorPage404(); } А, ну и htaccess также выставил=) Огромное Всем Спасибо!!!=)
$routes = explode('/', array_shift($request)); опиши своими словами максимально подробно, что по-твоему тут происходит.
Разбиваем строку слешем(/) и array_shift($request) - сама строка. index?lang=rus/&id=1 так что ли получается?=))
итак, записываем в переменную $request результат разбора функцией parse_url - $_SERVER['REQUEST_URI'] получаем такой массив array(2) { ["path"]=> string(8) "/index" ["query"]=> string(10) "lang=rus&id=2" } Далее разбиваем строку: Delimiter = слеш(/). String = array_shift($request) - извлекаем 1-ое значение массива, откидываем 1-ый элемент - а это полностью вся строка, что косяк походу=))) и записываем результат работы функции explode в $routes. получаем такой массив array(2) { [0]=> string(0) "" [1]=> string(4) "index" }
ты мне запретил конечно писать в твоих темах но я-то блин нервы тратил на попытки помощи тебе. так что я болт поклал на твою просьбу и продолжу навязывать тебе свою помощь у тебя строка запроса содержит и путь к ресурсу и параметры. чтоб роутер успешно работал - нужно сначала из этого ури вытащить путь и параметры, а потом уже эксплодить и шифтить путь. первое решается через parse_url. но вот только дальше ты вместо того чтоб эксплодить путь - эксплодишь шифт от результата разбора адреса. а там ведь не факт что путь лежит.
Ахахах. Точно вылитый социопат=))) Так ты имеешь ввиду? Код (PHP): $request = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); $routes = explode('/', $request);
нет, не так. смотри код Игоря. он тебе дал готовый кусок кода, а ты вместо того чтоб завардампить этот кусок кода и понять как он работает и как его применять - сломал всё нафиг и как обычно получил никакой результат.
не важно кто вардамп делает. важно что ты его не делаешь. ты не знаешь что у тебя хранится в переменных. поэтому понятия не имеешь во-первых какое там значение (если код твой. а особенное - если не твой) и во-вторых верное ли там значение (ну это если твой код). у тебя какое-то слепое программирование получается.
Посмотри посты выше, я вардампом массив давал в сообщении. Ты видимо не понял тот пост из-за отсутствия запятой после частицы "НЕ"=) Там я имел ввиду, что я вадмап делаю=))
я не про какой-то конкретный пост. я про вообще. ты не отлаживаешь. ну да ладно. сейчас ок наступило или не наступило?