Правило для mod_rewrite

jenia

Новичок
Правило для mod_rewrite

Мне нужно правило составить для mod_rewrite. Вот никак не могу осилить.
Нужно что-то типа такого:
PHP:
RewriteRule ^test/test2/([0-9]*)/?$ /folder/require/e404.php?REQUEST_URI=test3/test4/$1/ [L,QSA]
Это неработающий код, я просто хочу, чтобы, когда пользователь приходил по адресу site.ru/test/test2/12/ обращение на самом деле происходило к site.ru/folder/require/e404.php?REQUEST_URI=/test3/test4/12/ . Вот что-то у меня не получается передать в REQUEST_URI адрес. Подскажите, как подкорректировать этот код.
 

kruglov

Новичок
Просто пишете RewriteRule ^test/test2/([0-9]*)/?$ /folder/require/e404.php [L,QSA]

И смотрите внутри него $_SERVER['REQUEST_URI']
 

jenia

Новичок
Так в том, то и дело, что мне нужно подменить $_SERVER['REQUEST_URI'] . Сделать это желательно именно в .htaccess, чтобы не менять файлы CMS и не получить проблем с обновлением.
Изначально, в .htaccess стояло такое правило:
PHP:
RewriteRule ^(.+)$ /folder/require/e404.php?REQUEST_URI=$1 [L,QSA]
Получается адрес как-то передать можно в REQUEST_URI. Скорее всего в моём правиле мешают какие-то символы. Я пробовал экранировать слэши обратными слэшами, но ничего не получилось.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
jenia
Слушай, ты можешь выражаться более понятно?
если тебе
обращение на самом деле происходило к site.ru/folder/require/e404.php?REQUEST_URI=/test3/test4/12/
то включай логи и разбирайся почему не работает реврайт.
если тебе
ужно подменить $_SERVER['REQUEST_URI']
то что ты понимаешь под REQUEST_URI?
Ибо то правило, что ты написал, не для этих целей.

-~{}~ 11.05.08 19:15:

Я пробовал экранировать слэши обратными слэшами
екранировать слешы в подстановке не нужно

-~{}~ 11.05.08 19:17:

Как проверяешь, что не работает
?
 

jenia

Новичок
Как проверяешь, что не работает?
Виснет апач.
Мне нужно, чтобы при переходу по адресу site.ru/test/test2/12/ на самом деле происходило обращение к адресу site.ru/folder/require/e404.php?REQUEST_URI=/test3/test4/12/ , при этом, чтобы это никак не отображалось в строке браузера (в строке браузера должен оставаться адрес site.ru/test/test2/12).
 

jenia

Новичок
Разобрался. Это моя ошибка. Просто я решил, что, если у меня выводится не та страничка, то это из-за неверно написанного правила. А на самом деле, это из-за ошибки в файле e404.php . Само правило рабочее. Извините, что отнял время.

У меня ещё один вопрос по mod_rewrite. Есть такое правило:
PHP:
RewriteRule ^test/test2/5/?$ /folder/require/e404.php?REQUEST_URI=test3/test4/5/ [E=REQUEST_URI:test3/test4/5/,L]
Проблема в том, что $_SERVER['REQUEST_URI'] в файле e404.php выглядит как "test/test2/5/", а мне нужно, чтобы выглядел как "test3/test4/5/". Значение "test3/test4/5/" заносится в $_SERVER['REDIRECT_REQUEST_URI']. Возможно ли в моём случае занести его именно в $_SERVER['REQUEST_URI'] ?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
и в африке REQUEST_URI
это то, что ты запрашивает твой браузер.

Возможно ли в моём случае занести его именно в $_SERVER['REQUEST_URI'] ?
Что занести? значение переменной?
Внутри скрипта?
Можно.
При помощи оператора =
 

jenia

Новичок
Понял. Значит REQUEST_URI переопределить через mod_rewrite невозможно? В этой переменной всегда будет только то, что стоит в строке браузера?
 
Сверху