Здравствуйте, коллеги!Пытаюсь красивые 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 дня парюсь...
как ты видишь что не меняется?
>как ты видишь что не меняется?Через phpinfo();
>>как ты видишь что не меняется?
>
>Через phpinfo();если ты смотришь после редиректа в том скрипте куда был редирект там естно будет другой URI
>>>как ты видишь что не меняется?
>>
>>Через 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 - непонятно.
Решил проблему следующим образом, благодаря тех. поддежрке Битрикса:Содержимое .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"];----
Всем спасибо за внимание. Надеюсь, мой опыт кому-нибудь пригодится.
реально, пригодилось)
весь инет перерыл, пока не нашел здесь решение такой же проблемы для joomla. спасибо!)