Отключение ЧПУ или работа из директории на nginx

Доброго времени суток.

Понадобилось установить LiveStreet в директорию, а не в корень (т.е. не на domain.tld, а в domain.tld/livestreet). При этом сервер работает на nginx.

Livestreet установился нормально, однако при попытке перейти по любой ссылке в нем (например, /blogs/) rewrite перехватывает Joomla (она установлена в корень, т.е. domain.tld) и выдает 404. На форуме nginx мне подсказали, как нужно переписать конфиг, однако не помогло.

Сейчас конфиг выглядит так:

location ^~ /livestreet/ {
try_files $uri $uri/ /index.php?$args;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /полный/путь/до/каталога/$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT /полный/путь/до/каталога/;
include fastcgi_params;
}
}


Возникла идея: если отключить ЧПУ, то все должно заработать.

В связи с этим два вопроса:
1. Как отключить rewrite?
2. Или как написать конфиг nginx, что бы rewrite работали?

Заранее огромное спасибо!

7 комментариев

avatar
Посмотрите, тут на сайте есть пример установки на nginx с конфигом. ЧПУ будут работать корректно.

livestreet.ru/blog/dev_documentation/10626.html

Плюс, если установка не в корень, то в конфиге нужно править параметр уровня вложенности.
avatar
В конфиге и так стоит $config['path']['offset_request_url'] = 1;, а nginx пробовал настраивать и как по ссылке указано (там, к сожалению, не для папки, т.е. с location / работать то оно несомненно будет, но не будет работать Joomla). В любом случае, спасибо за ответ.
avatar
Корень сайта в конфиге nginx настраивали?
Строка
root /var/www/website.com;
...
...
fastcgi_param SCRIPT_FILENAME /var/www/website.com$fastcgi_script_name;


в вашем случае будет
root /var/www/some_folder/website.com;
...
...
fastcgi_param SCRIPT_FILENAME /var/www/some_folder/website.com$fastcgi_script_name;
avatar
Да, root настраивал (как у Вас и написано), но Вы мне подкинули идею — сейчас livestreet физически в файловой системе расположен так: /var/www/джумла/livestreet. Попробую ка я сделать так: /var/www/livestreet/, может поможет :)
avatar
Глупая была идея, откатил назад :)
В общем сейчас конфиг выглядит вот так:
server {
        listen 80;
        server_name www.domain.ru domain.ru;
        server_name_in_redirect off;
      
        error_log /var/log/nginx/domain.error_log;

        root /var/www/vhosts/domain/domain.ru/httpdocs;
        index index.php;
        # Support Clean (aka Search Engine Friendly) URLs
        location / {
                try_files $uri $uri/ /index.php?q=$uri&$args;  #rewrite для Joomla
        }

        index index.php index.html index.htm default.html default.htm;
        # deny running scripts inside writable directories
        location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {
                return 403;
                error_page 403 /403_error.html;
        }

        location ~ .*.php$ { #Обработчик для Joomla
root /var/www/vhosts/domain/domain.ru/httpdocs;
            include /etc/nginx/fastcgi.conf;
            fastcgi_pass  127.0.0.1:9000;
#            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }

        # caching of files 
        location ~* \.(ico|pdf|flv)$ {
                expires 1y;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|swf|xml|txt)$ {
                expires 14d;
        }

location ^~/mir/ { #папка с Livestreet
#try_files $uri $uri/ /index.php?q=$uri&$args; #один из вариантов rewrite
if (!-e $request_filename) { #rewrite как в примере
rewrite ^(/.*)$ /index.php?q=$1 last;
break;
}
#root /var/www/vhosts/domain/domain.ru/mir; #если разкомментировать, не попаду даже на главную страницу Livestreet, будет сразу 404 от Joomla
location ~ \.php$ { #Обработчик для Joomla
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/vhosts/domain/domain.ru/httpdocs$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT /var/www/vhosts/domain/domain.ru/httpdocs;
include fastcgi_params;
}
}


}
avatar
может реврайт нужно сделать как то так:
было
rewrite ^(/.*)$ /index.php?q=$1 last;
стало
rewrite ^(/.*)$ /mir/index.php?q=$1 last;
avatar
Спасибо огромное, помогло
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.