Nginx не перенаправляет с перезаписью

У меня nginx + php на Windows Server настроен. Я работаю на основе MVC с переписыванием URL, проблема в том, что мой сервер не разрешает адреса. Проще говоря, это мой код:

server {

    listen 127.0.0.1:80;
    server_name localhost/kuimbi;
    root www/kuimbi;

    index index.php;


    location / {
        if (!-e $request_filename){
            rewrite ^(.+)$ /index.php?url=$1 break;
        }
    }


    location ~* ^.+\.(jpg|jpeg|gif|png|ico|swf|flv|woff)$ {
        access_log off;
        expires 9d;
    }

    location ~* ^.+\.(css|js)$ {
        access_log off;
        expires 1d;
    }

    location ~ \.php$ {
        try_files      $uri =404;
        fastcgi_pass   127.0.0.1:9100;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    error_log  logs/error.log;
    error_log  logs/error.log  notice;
    error_log  logs/error.log  info;
    access_log  logs/access.log  main;
}

И в Apache у меня есть эквивалентный код:

Options -MultiViews

RewriteEngine On

Options -Indexes

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

1 ответ

Предполагая, что ваши запросы выглядят как http://localhost/kuimbi/*Вы неправильно настроили server_name,

Он не должен содержать URI, только доменные имена.

Таким образом, ваша конфигурация должна выглядеть следующим образом:

server {

    listen 127.0.0.1:80;
    server_name localhost;
    root www/kuimbi;

    location ~ ^/kuimbi/(.*)$ {
        try_files /www/kuimbi/$1 /index.php?url=/$1;
    }

    ...

}
Другие вопросы по тегам