бьюсь с mod_rewrite уже целый день, ничего только м не выходит
задача весьма простая:
http://localhost/aaa/
в
http://localhost/?page=aaa
это я сделал без проблем, но надо некоторые строки, например:
http://localhost/bbb/
оставались как есть
1. IOpeH - 11 Декабря, 2008 - 21:53:58 - перейти к сообщению
2. Champion - 12 Декабря, 2008 - 08:52:22 - перейти к сообщению
"(expr1|expr2|expr3|expr4)" - преобразуем:
можно еще те, которые преобразовывать не надо задать правилом
"(Expr11|Expr12|Expr13)" - преобразуем в как и было
можно еще те, которые преобразовывать не надо задать правилом
"(Expr11|Expr12|Expr13)" - преобразуем в как и было
3. IOpeH - 12 Декабря, 2008 - 12:56:29 - перейти к сообщению
Тут самая попа в том, что никак не посмотреть пошагово результаты преобразований. Если кто знает как это сделать, подскажите пожалуйста.
первая мысль была именно такой, но ничего не выходит из этогу путного (((
Нормальной объяснялки по этой теме ненайти (((
дальше я попытаюсь изложить эту тему как я ее понимаю, поправте пожалуйста, где неверно
есть такой адрес http://localhost/aaa/bbb/
в корне сайта лежит .htaccess тоесь http://localhost/[dot]htaccess
"RewriteBase /" - означает, что мы будем оперировать с "aaa/bbb/" этой частью урла, как я понял без слеша вначале
дальше
"RewriteRule ([^/]+)/$ ?page=$1" пробовал написать так "([^/]+)/?$", вылезает ошибка 500, так и не понял почему (дальше буду рассматривать вариант без вопросительно знака)
по данному правилу следует что
"aaa/bbb/" будет преобразовано в "aaa/?page=bbb". Или в "?page=bbb", по логике должен быть первый вариант, но по практике получается второй, опять же не понятно почему
... думаю надо покаа с этим разобраться, а потом ехать дальше
Цитата:
"(Expr11|Expr12|Expr13)" - преобразуем в как и было
первая мысль была именно такой, но ничего не выходит из этогу путного (((
Нормальной объяснялки по этой теме ненайти (((
дальше я попытаюсь изложить эту тему как я ее понимаю, поправте пожалуйста, где неверно
есть такой адрес http://localhost/aaa/bbb/
в корне сайта лежит .htaccess тоесь http://localhost/[dot]htaccess
"RewriteBase /" - означает, что мы будем оперировать с "aaa/bbb/" этой частью урла, как я понял без слеша вначале
дальше
"RewriteRule ([^/]+)/$ ?page=$1" пробовал написать так "([^/]+)/?$", вылезает ошибка 500, так и не понял почему (дальше буду рассматривать вариант без вопросительно знака)
по данному правилу следует что
"aaa/bbb/" будет преобразовано в "aaa/?page=bbb". Или в "?page=bbb", по логике должен быть первый вариант, но по практике получается второй, опять же не понятно почему
... думаю надо покаа с этим разобраться, а потом ехать дальше
4. Champion - 12 Декабря, 2008 - 13:03:57 - перейти к сообщению
IOpeH пишет:
А что вам мешает "сэмитировать" такое преобразование URLа? Можно ведь посмотреть корректность наблона просто вот такТут самая попа в том, что никак не посмотреть пошагово результаты преобразований.
$url = 'http://afs/as/ff/';
$rewrote = preg_replace('шаблон, который потом вы напишите в htaccess', $url ) ;
echo $rewrote;
5. IOpeH - 12 Декабря, 2008 - 13:39:13 - перейти к сообщению
в том то и дело что в пхп уже давно бы все траблы решил
В пхп
echo preg_replace('/([^\/]+)\/$/', '?page=\\1', 'aaa/bbb/');
получаю
aaa/?page=bbb
В апаче
RewriteRule ([^/]+)/$ ?page=$1
получаю
?page=bbb
это только предположительно, тк увидеть этот результат я не могу. Заметте "aaa/" кудато пропало.
В пхп
echo preg_replace('/([^\/]+)\/$/', '?page=\\1', 'aaa/bbb/');
получаю
aaa/?page=bbb
В апаче
RewriteRule ([^/]+)/$ ?page=$1
получаю
?page=bbb
это только предположительно, тк увидеть этот результат я не могу. Заметте "aaa/" кудато пропало.
6. Champion - 12 Декабря, 2008 - 15:23:09 - перейти к сообщению
ну увидеть результат вы можете. Сделайте в скрипте phpinfo() и увидите всё, что хотите (и переданные данные, и путь к скрипту...)
(Добавление)
Стоп, мотрите... ща допишу
(Добавление)
Вы пишете RewriteRule ([^/]+)/$ ?page=$1
URL такой aaa/bbb/.
Получается, он правильно преобразуется: $1 имеет значене как раз bbb...
А если RewriteRule ([^/]+/)?([^/]+)/$ $1?page=$2
(Добавление)
Стоп, мотрите... ща допишу
(Добавление)
Вы пишете RewriteRule ([^/]+)/$ ?page=$1
URL такой aaa/bbb/.
Получается, он правильно преобразуется: $1 имеет значене как раз bbb...
А если RewriteRule ([^/]+/)?([^/]+)/$ $1?page=$2
7. IOpeH - 12 Декабря, 2008 - 16:53:02 - перейти к сообщению
в phpinfo не будет промежуточных вариантов преобразований (уже смотрел)
а куда тогда девается тот кусок строки что не указан в реге? вот в этом неразбериха.
Цитата:
Вы пишете RewriteRule ([^/]+)/$ ?page=$1
URL такой aaa/bbb/.
Получается, он правильно преобразуется: $1 имеет значене как раз bbb...
URL такой aaa/bbb/.
Получается, он правильно преобразуется: $1 имеет значене как раз bbb...
а куда тогда девается тот кусок строки что не указан в реге? вот в этом неразбериха.
8. Champion - 12 Декабря, 2008 - 19:05:26 - перейти к сообщению
IOpeH пишет:
Там будет значение переменной pageв phpinfo не будет промежуточных вариантов преобразований
IOpeH пишет:
Точон не знаю
а куда тогда девается тот кусок строки что не указан в реге