Nginx rewrite for Maxsite CMS

Igor Sysoev igor на sysoev.ru
Ср Сен 1 14:02:54 MSD 2010


On Tue, Aug 31, 2010 at 02:28:33PM -0400, Dmitriy_K wrote:

> Завяз с написанием реврайтов для CMS
> Maxsite. 
> Там даны только примеры реврайтов для
> apache (.htaccess), и то весьма невнятно:
> [quote]
> 
> RewriteEngine on
> RewriteBase /
> RewriteCond $1 !^(index\.php|uploads|robots\.txt|favicon\.ico)
> RewriteCond %{REQUEST_FILENAME} !-f
> RewriteCond %{REQUEST_FILENAME} !-d
> RewriteRule . /index.php [L]
> RewriteRule ^(.*)$ /index.php?/$1 [L,QSA]
> 
> 
> На некотрых серверах вместо строчки:
> 	RewriteRule . /index.php [L]
> можно попробовать указать:
> 	RewriteRule ^(.*)$ /index.php?/$1 [L,QSA]
> 
> Вариант для Nginx с апачем в качестве
> надстройки:
> RewriteRule ^(.*)$ /index.php?$1 [L,QSA][/quote]
> Понимай как хочешь... :-( 
> Через поиск никакого рабочего варианта
> реврайтов найти не удалось.
> 
> Пробовал прописать в конфиге nginx (он у
> меня без бэкенда) вариации типа:
> [code]
>     server {
>         listen 80;
>         server_name net.open.ru net;
> 
>         location / {
>             root /site/maxsite;
>             index index.php;
> 
>             if ($query_string =
> !^(index\.php|uploads|robots\.txt|favicon\.ico)) {
>                 rewrite ^/(.*)$ /index.php?$1 last;
>                 break;
>             }
> 
>             if (!-e $request_filename) {
>                 rewrite ^/(.*)$ /index.php?$1 last;
>                 break;
>             }
> 
> 
> #            if ($request_uri ~* ^.*/.*$) {
> #                rewrite ^/(\w*)/(.*)$ /$1/index.php?q=$2 last;
> #                break;
> #            }
>         }
> 
>         location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico)$ {
>                 root /site/maxsite;
>                 #access_log off;
>                 break;
>         }
> 
>         location ~ \.php$ {
>             fastcgi_pass   127.0.0.1:9000;
>             fastcgi_index  index.php;
>             fastcgi_param  SCRIPT_FILENAME 
> /site/maxsite$fastcgi_script_name;
>             include        fastcgi_params;
>         }
>     }
> [/code]
> При попытке нажать клавишу первой
> страницы CMS "Установить" не происходит
> корректная передача параметров другой
> странице. В результате, выдаётся пустое
> окно, хотя в лог пишется "200". Также
> некорректно обрабатываются
> несуществующие URL. Выдаётся ошибка
> типа:
> [code]Table 'maxsite.mso_page' doesn't exist
> SELECT `page_id` FROM (`mso_page`) WHERE `page_slug` = 'beliberda' OR
> `page_id` = 'beliberda' LIMIT 1
> [/code]
> К сожалению, в логах информации как
> обрабатывались реврайты нет, даже при
> установке уровня подробностей "info".
> 
> Буду очень благодарен за помощь в
> устранении ошибки в правилах
> реврайтов.

Нужно забыть про правила реврайтов как страшный сон:

     server {
         listen 80;
         server_name net.open.ru net;

         root /site/maxsite;
 
         location / {
             index index.php;
             try_files  $uri  $uri/  @maxsite;
         } 

         location ^~ /uploads/ {
         }

         location = /robots.txt {
         }

         location = /favicon.ico {
         }
 
         location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico)$ {
         }
 
         location ~ \.php$ {
             fastcgi_pass   127.0.0.1:9000;
             include        fastcgi_params;
             fastcgi_param  SCRIPT_FILENAME /site/maxsite$fastcgi_script_name;
         }
 
         location @maxsite {
             fastcgi_pass   127.0.0.1:9000;
             include        fastcgi_params;
             fastcgi_param  SCRIPT_FILENAME /site/maxsite/index.php
             fastcgi_param  QUERY_STRING    q=$uri;
         }
     }


-- 
Игорь Сысоев
http://sysoev.ru



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