[Bitrix rewrites] Нужна помощь

Anton Koldaev koldaevav на gmail.com
Пт Сен 10 02:28:31 MSD 2010


Приветствую
Нужна помощь с настройкой непростой схемы рерайтов для Bitrix(Битрикс
Управление сайтом).

Cайт mysite.ru пытаюсь перенести с nginx+Apache2 на nginx+php5-fpm(5.3.2).

*Вот реврайты из корневого .htaccess*

  RewriteCond %{REQUEST_FILENAME} !-f
>   RewriteCond %{REQUEST_FILENAME} !-l
>   RewriteCond %{REQUEST_FILENAME} !-d
>   RewriteRule ^(.*)([^/])$ $1$2/ [R,L]
>
>
>   RewriteCond %{ENV:REDIRECT_RDR} ^$
>   RewriteCond %{HTTP_HOST} ^(.+)\.mysite\.ru$
>   RewriteCond %{HTTP_HOST} !^www\.mysite\.ru$
>   RewriteRule ^([a-zA-Z0-9`~!@#$%^&()\-+";=\\/|]*)$ blogs/fake/%2/$1
> [L,E=RDR:1]
>
>
>   RewriteCond %{REQUEST_FILENAME} !-f
>   RewriteCond %{REQUEST_FILENAME} !-l
>   RewriteCond %{REQUEST_FILENAME} !-d
>   RewriteCond %{REQUEST_FILENAME} !/urlrewriteprepend.php$
>   RewriteRule ^(.*)$ /urlrewriteprepend.php [L]
>


*Мой конфиг с комментариями*

> server {
>   listen 1.1.1.1:80;
>
>   # Опечатки в написании сайта
>   server_name mysait.com;
>   server_name *.mysait.com;
>
>   rewrite ^(.*) http://www.mysite.ru$1 permanent;
> }
>
> server {
>   listen 1.1.1.1:80;
>
>   server_name www.mysite.ru;
>   # Исключаем тестовые поддомены, находящиеся на другом сервере.
>   server_name ~(?<!^test1|^test2|^test3)\.mysite\.ru$;
>   set $subserver $1;
>
>   access_log /var/log/nginx/mysite.ru.access.log;
>   error_log /var/log/nginx/mysite.ru.error.log info;
>   rewrite_log on;
>
>   root /var/www/mysite.ru;
>   index index.php index.phtml index.html index.htm;
>   sendfile on;
>
>   # На всех поддоменах кроме www делаем реврайт для обработки блогов.
>   if ($host ~* (?<!^www)\.mysite\.ru) {
>     rewrite ^/([-a-zA-Z0-9`~!@#$%^&()\+"\;=\/|]*)$
> /blogs/fake$subserver/$1;
>   }
>
>     # Файлов по путям /blogs/fake$subserver/$1 нету, несуществующие файлы
> будет обрабатывать скрипт urlrewriteprepend.php
>     # Он в свою очередь обрабатывает полученное значение
> $_SERVER['HTTP_HOST'], для дальнейшего пропихивыния на urlrewrite.php(это
> уже стандартный битриксовский)
>   location / {
>      if (!-e $request_filename) {
>         rewrite ^(.*)$ /urlrewriteprepend.php last;
>      }
>   }
>
>   location ~ \.(php|php4|php5|phtml)$ {
>     try_files $fastcgi_script_name =404;
>
>     fastcgi_pass 127.0.0.1:9000;
>         .......fastcgi_params..........
>     }
> }
>

*Суть проблемы*
На всех страницах висит javascript-авторизация. Когда авторизуюсь с главной
страницы(с домена www.mysite.ru), то авторизация проходит успешно,
появляется панель управления битрикса, logout тоже происходит успешно, всё
ок. Когда же я авторизуюсь с любого из поддоменов вида blog1.mysite.ru, то
авторизация проходит успешно, а вот logout отдает 404, собственно которой
прописан первой строкой в локейшене php-шек.
Вопрос: как наладить Logout с поддоменов?

*Дополнительная информация*

*Как происходит на практике*(взято из rewrite-логов):
1. Заходим на сайт mysite.ru => редирект на www.mysite.ru
2. Идем на поддомен по ссылке http://blog1.mysite.ru/
=> "(?<!^www)\.mysite\.ru" matches "blog1.mysite.ru", server: www.mysite.ru,
request: "GET / HTTP/1.1", host: "blog1.mysite.ru", referrer: "
http://www.mysite.ru/"
=> "^/([-a-zA-Z0-9`~!@#$%^&()\+"\;=\/|]*)$" matches "/", server:
www.mysite.ru, request: "GET / HTTP/1.1", host: "blog1.mysite.ru", referrer:
"http://www.mysite.ru/"
==> rewritten data: "/blogs/fake/", args: "", server: www.mysite.ru,
request: "GET / HTTP/1.1", host: "blog1.mysite.ru", referrer: "
http://www.mysite.ru/"

### Здесь скрипты urlrewriteprepend+urlrewrite обрабатывают линк ###
=> "^(.*)$" matches "/blogs/fake/", server: www.mysite.ru, request: "GET /
HTTP/1.1", host: "blog1.mysite.ru", referrer: "http://www.mysite.ru/"
==> rewritten data: "/urlrewriteprepend.php", args: "", server:
www.mysite.ru, request: "GET / HTTP/1.1", host: "blog1.mysite.ru", referrer:
"http://www.mysite.ru/"

=> "(?<!^www)\.mysite\.ru" matches "blog1.mysite.ru", , server:
www.mysite.ru, request: "GET
/upload/rk/85a/mysite_240x400.swf?flash_link=%2Fbitrix%2Frk.php HTTP/1.1",
host: "blog1.mysite.ru", referrer: "http://blog1.mysite.ru/"

Вуаля, открывается нужный блог, всё ок.

*Лог авторизации с поддомена*(авторизация проходит успешно)

> => "(?<!^www)\.mysite\.ru" matches "blog1.mysite.ru", server:
> www.mysite.ru, request: "POST /auth.php HTTP/1.1", host: "blog1.mysite.ru",
> referrer: "http://blog1.mysite.ru/"
>
> => "(?<!^www)\.mysite\.ru" matches "blog1.mysite.ru", server:
> www.mysite.ru, request: "GET /bitrix/js/main/utils.js?1264068828
> HTTP/1.1", host: "blog1.mysite.ru", referrer: "
> http://blog1.mysite.ru/auth.php"
>
> => "(?<!^www)\.mysite\.ru" matches "blog1.mysite.ru", server:
> www.mysite.ru, request: "GET /bitrix/js/main/admin_tools.js?1264068828
> HTTP/1.1", host: "blog1.mysite.ru", referrer: "
> http://blog1.mysite.ru/auth.php"
>
> => "(?<!^www)\.mysite\.ru" matches "blog1.mysite.ru", server:
> www.mysite.ru, request: "GET /bitrix/js/main/popup_menu.js?1260266311
> HTTP/1.1", host: "blog1.mysite.ru", referrer: "
> http://blog1.mysite.ru/auth.php"
>
> => "(?<!^www)\.mysite\.ru" matches "blog1.mysite.ru", server:
> www.mysite.ru, request: "GET /bitrix/js/main/public_tools.js?1264068828
> HTTP/1.1", host: "blog1.mysite.ru", referrer: "
> http://blog1.mysite.ru/auth.php"
>
> => "(?<!^www)\.mysite\.ru" matches "blog1.mysite.ru", server:
> www.mysite.ru, request: "GET
> /bitrix/themes/.default/pubstyles.css?1260779398 HTTP/1.1", host: "
> blog1.mysite.ru", referrer: "http://blog1.mysite.ru/auth.php"
>
> => "(?<!^www)\.mysite\.ru" matches "blog1.mysite.ru", server:
> www.mysite.ru, request: "GET
> /bitrix/themes/.default/jspopup.css?1260266310 HTTP/1.1", host: "
> blog1.mysite.ru", referrer: "http://blog1.mysite.ru/auth.php"
>
> => "(?<!^www)\.mysite\.ru" matches "blog1.mysite.ru", server:
> www.mysite.ru, request: "GET
> /upload/rk/85a/mysite_240x400.swf?flash_link=%2Fbitrix%2Frk.php HTTP/1.1",
> host: "blog1.mysite.ru", referrer: "http://blog1.mysite.ru/auth.php"
>

*Лог при неудачном Logout-е с поддомена*

> => "(?<!^www)\.mysite\.ru" matches "blog1.mysite.ru", server:
> www.mysite.ru, request: "GET /blogs/blog1/index.php?logout=yes&CODE=blog1
> HTTP/1.1", host: "blog1.mysite.ru", referrer: "http://blog1.mysite.ru/"
>
> => "^/([-a-zA-Z0-9`~!@#$%^&()\+"\;=\/|]*)$" does not match
> "/blogs/blog1/index.php", server: www.mysite.ru, request: "GET
> /blogs/blog1/index.php?logout=yes&CODE=blog1 HTTP/1.1", host: "
> blog1.mysite.ru", referrer: "http://blog1.mysite.ru/"
>
> access.log:
> == "GET /blogs/blog1/index.php?logout=yes&CODE=blog1 HTTP/1.1" 404 143 "
> http://blog1.mysite.ru/"
>


-- 
Best regards,
Koldaev Anton
----------- следущая часть -----------
Вложение в формате HTML было извлечено&hellip;
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20100910/6c65ea7e/attachment-0001.html>


Подробная информация о списке рассылки nginx-ru