|
|
|
| Вот правило:
AddDefaultCharset utf-8
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php?uri=$1 [L]
|
Когда обращаемся к site.ru/index.htm, то в $_GET лежит array(1) { ["uri"]=> string(9) "index.htm" }. Это хорошо а вот как избавиться от такого к любому скрпиту обращаешься site.ru/index.php/1/2/3 и всё работает, но $_GET пуст, как отключить то(мне такое решительно не нравится)? | |
|
|
|
|
|
|
|
для: Красная_шляпа
(02.11.2011 в 12:20)
| | Уберите вот эту проверку
RewriteCond %{REQUEST_FILENAME} !-f
|
| |
|
|
|
|
|
|
|
для: cheops
(02.11.2011 в 13:24)
| | нет все равно. тем более я так уже пробовал.
т.е. мне нужно чтобы
/index.php/1/2/3 не обрабатывалось как сейчас(апаче показывал ошибку)
а
/1/2/3 перенаправлялось на /index.php?uri=1/2/3
<?php
Router::init();
Router::$action404 = "page404";
Router::set("home", "/"); // главная страница
Router::set("test", "/test.htm");
// ...
Router::set("news", "/news/archive/{year}/{month}/{day}/", array("year" => "\d+", "month" => "\d+", "day" => "\d+"));
Router::run();
?>
|
Зачем это мне просто я написал роутер, а он работает по-этому принципу. Но не о нём просто некрасиво выгдядит
Ещё прикольную фишку придумал с необязательными сегментами пути (т.е. можно получить доступ только по адресам site.ru/news/archive/ || site.ru/news/archive/YYYY/ || site.ru/news/archive/YYYY/MM/ || site.ru/news/archive/YYYY/MM/DD/):
function news_archive($year = null, $month = null, $day = null) {
var_dump($year, $month, $day);
}
// ...
Router::set("news_archive", "/news/archive/^{year}/^{month}/^{day}/", array("year" => "20\d\d", "month" => "\d\d", "day" => "[1-3]?\d"));
|
| |
|
|
|