Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: mod_rewrite
Форумы портала PHP.SU » Серверное администрирование » Apache и другие веб-серверы » mod_rewrite

Страниц (1): [1]
 

1. IOpeH - 11 Декабря, 2008 - 21:53:58 - перейти к сообщению
бьюсь с mod_rewrite уже целый день, ничего только м не выходит

задача весьма простая:
http://localhost/aaa/
в
http://localhost/?page=aaa
это я сделал без проблем, но надо некоторые строки, например:
http://localhost/bbb/
оставались как есть
2. Champion - 12 Декабря, 2008 - 08:52:22 - перейти к сообщению
"(expr1|expr2|expr3|expr4)" - преобразуем:
можно еще те, которые преобразовывать не надо задать правилом
"(Expr11|Expr12|Expr13)" - преобразуем в как и было
3. IOpeH - 12 Декабря, 2008 - 12:56:29 - перейти к сообщению
Тут самая попа в том, что никак не посмотреть пошагово результаты преобразований. Если кто знает как это сделать, подскажите пожалуйста.

Цитата:
"(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/" кудато пропало.
6. Champion - 12 Декабря, 2008 - 15:23:09 - перейти к сообщению
ну увидеть результат вы можете. Сделайте в скрипте phpinfo() и увидите всё, что хотите (и переданные данные, и путь к скрипту...)
(Добавление)
Стоп, мотрите... ща допишу
(Добавление)
Вы пишете 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...

а куда тогда девается тот кусок строки что не указан в реге? вот в этом неразбериха.
8. Champion - 12 Декабря, 2008 - 19:05:26 - перейти к сообщению
IOpeH пишет:
в phpinfo не будет промежуточных вариантов преобразований
Там будет значение переменной page
IOpeH пишет:
а куда тогда девается тот кусок строки что не указан в реге
Точон не знаю

 

Powered by ExBB FM 1.0 RC1