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;
    }
    ...
}