The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"mod_rewrite: не изменяется переменная окружения REQUEST_URI"
Вариант для распечатки  
Пред. тема | След. тема 
Форум WEB технологии (.htaccess, паролирование)
Изначальное сообщение [ Отслеживать ]

"mod_rewrite: не изменяется переменная окружения REQUEST_URI"  +/
Сообщение от Nas_tradamus email(ok) on 05-Мрт-09, 12:53 
Здравствуйте, коллеги!

Пытаюсь красивые URL'ы в блогах Битрикса через wildcard dns и mod_rewrite. Не получается сделать переопределение переменной окружения сервера после редиректа:

   RewriteEngine On
   RewriteCond %{REQUEST_URI} !^/information/blogs/index.php?(.*)?$
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{HTTP_HOST} ^([^\.]+)\.(mirror1\.mysite\.ru$) [NC]
   RewriteCond %1 !^(www|ftp|mail)$ [NC]
   RewriteRule ^(.*)$ /information/blogs/index.php?page=blog&blog=%1 [E=REQUEST_URI :/information/blogs/index.php,L]

В результате, происходит редирект, но REQUEST_URI не меняется. В результате, скрипты Битрикса выводят биллиберду из главной странички сайта + результат вывода нужного скрипта.

Помогите, пожалуйста, решить проблему. Уже 3 дня парюсь...


Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "mod_rewrite: не изменяется переменная окружения REQUEST_URI"  +/
Сообщение от Pahanivo email(ok) on 05-Мрт-09, 14:26 
как ты видишь что не меняется?


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "mod_rewrite: не изменяется переменная окружения REQUEST_URI"  +/
Сообщение от Nas_tradamus email(ok) on 05-Мрт-09, 14:28 
>как ты видишь что не меняется?

Через phpinfo();

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "mod_rewrite: не изменяется переменная окружения REQUEST_URI"  +/
Сообщение от Pahanivo email(ok) on 05-Мрт-09, 15:33 
>>как ты видишь что не меняется?
>
>Через phpinfo();

если ты смотришь после редиректа в том скрипте куда был редирект там естно будет другой URI

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "mod_rewrite: не изменяется переменная окружения REQUEST_URI"  +/
Сообщение от Nas_tradamus email(ok) on 05-Мрт-09, 16:13 
>>>как ты видишь что не меняется?
>>
>>Через phpinfo();
>
>если ты смотришь после редиректа в том скрипте куда был редирект там
>естно будет другой URI

А как его изменить?
Изложу суть проблемы подробней:

Нужно сделать с помощью mod_rewrite так, чтобы url вида http://user.mirror1.mysite.ru открывал физический скрипт
http://mirror1.mysite.ru/information/blogs/index.php?page=bl... .

Например, когда я открываю в браузере http://test.mirror1.mysite.ru/, в .htaccess у меня происходит внутренний редирект на физический url http://mirror1.mysite.ru/test/test2/index.php.
В скрипте вывожу переменные окружения и наблюдаю картину:

REDIRECT_URL     /
REQUEST_URI     /

Соответственно, запросы QUERY_STRING идут напрямую в корневой /index.php. В результате, вместо блогов у меня выводится главная страничка сайта, а под ней уже блоги.

Если запустить скрипт напрямую: http://mirror1.mysite.ru/test/test2/index.php, то видим:
REQUEST_URI  /test/test2/index.php

Получается, что блоги "глючат" из-за того, что используют переменную окружения REQUEST_URI, передаваемую Апачем. Как переделать этот самый REQUEST_URI - непонятно.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "mod_rewrite: не изменяется переменная окружения REQUEST_URI"  +/
Сообщение от Nas_tradamus email(ok) on 12-Мрт-09, 17:58 
Решил проблему следующим образом, благодаря тех. поддежрке Битрикса:

Содержимое .htaccess:
--------
  RewriteEngine On
  RewriteBase /

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{HTTP_HOST} ^([^\.]+)\.(mirror1\.mysite\.ru$) [NC]
  RewriteCond %1 !^(www|ftp|mail|mirror1)$ [NC]
  RewriteRule ^/?$ /information/blogs/index.php?page=blog&blog=%1 [E=REQUEST_URI:/information/blogs/index.php?page=blog&blog=%1,QSA,L]

# Далее идет правило, нужное только Битриксу.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
  RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]

--------

Все это верно, но не будет работать. Почему?
Дело в том, что Apache 2.x преобразует имена переменных, дописывая: "REDIRECT_"(кто же знал?).

Поэтому, дописал в dbconn.php (скрипт инициализации Битрикса) такую строчку:
----
if ($_SERVER["REDIRECT_REQUEST_URI"])
        $_SERVER["REQUEST_URI"] = $_SERVER["REDIRECT_REQUEST_URI"];

----


Всем спасибо за внимание. Надеюсь, мой опыт кому-нибудь пригодится.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "mod_rewrite: не изменяется переменная окружения REQUEST_URI"  +/
Сообщение от Ян email on 31-Май-11, 01:26 
реально, пригодилось)
весь инет перерыл, пока не нашел здесь решение такой же проблемы для joomla. спасибо!)
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру