Anton Koldaev
September 09, 2010 06:30PM
Приветствую
Нужна помощь с настройкой непростой схемы рерайтов для 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
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

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

Anton Koldaev September 09, 2010 06:30PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 105
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready