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