LINUX.ORG.RU
решено ФорумAdmin

Меняется адрес при попытке залогиниться в админке.

 , ,


0

1

Добрый день.

Дано: nginx+php-fpm, CMS написанная на Codeigniter.

Не знаю, на что грешить: то ли сайт написан по идиотски, то ли руки кривые у меня...

В общем, проблема в следующем. Есть сайт с фронтендом и бэкендом. С фронтендом всё нормально - index.php лежит в корне и сайт отлично отдаётся. А вот с бэкендом проблема. index.php лежит в папке /admin и, кажется, ничего сложного, должно всё и так работать... Просто пишем

http://example.com/admin
и попадаем на страницу авторизации по вышеуказанному адресу. Пока всё нормально. Вводим логин-пароль и адрес меняется на
http://example.com/login/send
Поскольку в адресе нет слова admin, срабатывает контроллер из фронтенда и говорит, что такой страницы не существует.

Приведу конфиг виртуалхоста на всякий случай.

server {
    listen 80; 
    server_name example.com;

    root /var/www/example.com/public_html;
    index index.php;

    location / { 
        try_files $uri $uri/ /index.php;
    }   

    location ~ \.php$ {
        root /var/www/example.com/public_html;
        try_files $uri =404;
        fastcgi_pass unix:/var/run/phpfpm-examplecom.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        include fastcgi_params;
    }
}

На апаче всё работает нормально.

Осталось лишь добавить, что я много читал, кучу вариантов перепробовал. Есть ещё вариант, при котором не работает фронтенд, зато работает бэкенд...

Помогите понять, почему идёт перенаправление.

Ответ на: комментарий от aol

Да заходит нормально он на страницу авторизации. А дальше «съедает» слово admin и на этом всё.

tetramin ()

Открой консоль браузера, включи сохранение лога запросов, посмотри что происходит, сделай выводы.

Goury ★★★★★ ()
Ответ на: комментарий от shrub

Почти стандартные .htaccess файлы.

Вот для фронта (в /):

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d·
    RewriteRule ^(.*)$ index.php?$1 [L] 
</IfModule>

Вот для бэкенда (в /admin/):

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /admin
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d·
    RewriteRule ^(.*)$ index.php?$1 [L] 
</IfModule>

tetramin ()
Ответ на: комментарий от tetramin

Ну если ты уже знаешь что происходит на уровне сервера, то и правда нет толку. И на ЛОРе об этом спрашивать тоже толку нет.

Goury ★★★★★ ()
Ответ на: комментарий от deep-purple

Вот же они. А у нжинкса ты один локейшн только указал. Дописывай админский локейшн

Так не срабатывает админский локейшн почему-то...

Лог:

...
2015/05/22 11:57:54 [debug] 18589#0: *7 http request line: "POST /login/send HTTP/1.0" 
2015/05/22 11:57:54 [debug] 18589#0: *7 http uri: "/login/send"
2015/05/22 11:57:54 [debug] 18589#0: *7 using configuration "/"
2015/05/22 11:57:54 [debug] 18589#0: *7 http script var: "/login/send" 
2015/05/22 11:57:54 [debug] 18589#0: *7 trying to use file: "/login/send" "/var/www/example.com/public_html/login/send"
...

tetramin ()
Ответ на: комментарий от tetramin

не срабатывает админский локейшн почему-то

Покажи как ты его написал.

У тебя проблема в том, что относительные пути, которые создаются в админке, апач переписывал от /admin а теперь они идут от корня сайта.

shrub ★★★★★ ()
Ответ на: комментарий от shrub

Покажи как ты его написал

location /admin {
    root /var/www/example.com/public_html/admin;
    index index.php

    location ~ \/admin\/(.+\.php)$ {
        root /var/www/example.com/public_html;
        try_files $uri =404;
        fastcgi_pass unix:/var/run/phpfpm-examplecom.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        include fastcgi_params;
    } 
}
tetramin ()
Ответ на: комментарий от tetramin

Твоюж мать... Там оказывается свой конфиг для бэкенда.

проблема в том, что относительные пути, которые создаются в админке

И правда. В этом проблема. Всем спасибо за отклик!

tetramin ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.